Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo Hace 4 Semanas
pruz pruz is offline
Miembro
 
Registrado: sep 2003
Posts: 201
Poder: 22
pruz Va por buen camino
Talking Celda a la Derecha

Buenas tardes:

Estoy usando StringGrid, pero necesito mostrar los datos numerico a la DERECHA, y entre esta rutina

Código Delphi [-]
Procedure TFGrillaComprobante.GrillaComprobanteDrawCell(Sender: TObject; ACol,
  ARow: Integer; Rect: TRect; State: TGridDrawState);

 procedure WriteText(StringGrid: TStringGrid; ACanvas: TCanvas; const ARect: TRect;
    const Text: string; Format: Word);
  const
    DX = 2;
    DY = 2;
  var
    S: array[0..255] of Char;
    B, R: TRect;
  begin
    with Stringgrid, ACanvas, ARect do
    begin
      case Format of
        DT_LEFT: ExtTextOut(Handle, Left + DX, Top + DY,
            ETO_OPAQUE or ETO_CLIPPED, @ARect, StrPCopy(S, Text), Length(Text), nil);

        DT_RIGHT: ExtTextOut(Handle, Right - TextWidth(Text) - 3, Top + DY,
            ETO_OPAQUE or ETO_CLIPPED, @ARect, StrPCopy(S, Text),
            Length(Text), nil);

        DT_CENTER: ExtTextOut(Handle, Left + (Right - Left - TextWidth(Text)) div 2,
            Top + DY, ETO_OPAQUE or ETO_CLIPPED, @ARect,
            StrPCopy(S, Text), Length(Text), nil);
      end;
    end;

  end;

  procedure Display(StringGrid: TStringGrid; const S: string; Alignment: TAlignment);
  const
    Formats: array[TAlignment] of Word = (DT_LEFT, DT_RIGHT, DT_CENTER);
  begin
    WriteText(StringGrid, StringGrid.Canvas, Rect, S, Formats[Alignment]);
  end;

begin

  if (Arow > 0) and (ACol in [1,2,3,4,6,7,8,9,10]) then
     Display(GrillaComprobante, GrillaComprobante.Cells[ACol, ARow], taRightJustify) ;

  if (Arow mod 2) = 0 then begin
     GrillaComprobante.Canvas.Brush.Color := clBlue
  end else begin
     GrillaComprobante.Canvas.Brush.Color := clred

  end;

end;


La cual funciona perfectamente.
Pero con el GoRowSelect=True, cuando selecciono la fila, esta queda completamente en negro, no deja ver la informacion
(imagen comprobante.png)


Pero si dejo GoRowSelect=False, ahi me deja ver toda la informacion de la Fila


Pregunta, hay solucion o no, porque quiero dejar la GoRowSelect=True.

Gracias
Imágenes Adjuntas
Tipo de Archivo: png Comprobante.png (6,9 KB, 1 visitas)
Responder Con Cita
  #2  
Antiguo Hace 4 Semanas
navbuoy navbuoy is offline
Miembro
 
Registrado: mar 2024
Posts: 235
Poder: 1
navbuoy Va por buen camino
Para cambiar el color de las filas o celdas en un StringGrid en Delphi, puedes utilizar el evento OnDrawCell. Aquí tienes un ejemplo básico de cómo hacerlo:

Configura el evento OnDrawCell:
Selecciona tu StringGrid en el formulario.
Ve a la pestaña de eventos en el Inspector de Objetos.
Haz doble clic en el evento OnDrawCell para generar el manejador del evento.

Implementa el código en el manejador del evento:

Código:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
begin
  if ARow = 1 then // Cambia el color de la fila 1
  begin
    StringGrid1.Canvas.Brush.Color := clYellow; // Color de fondo
    StringGrid1.Canvas.FillRect(Rect);
    StringGrid1.Canvas.TextRect(Rect, Rect.Left + 2, Rect.Top + 2, StringGrid1.Cells[ACol, ARow]);
  end;
end;
para alinear los datos a la derecha tambien en ese evento DrawCell seria asi:

Código:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
var
  CellText: string;
  TextWidth: Integer;
begin
  CellText := StringGrid1.Cells[ACol, ARow];
  TextWidth := StringGrid1.Canvas.TextWidth(CellText);
  StringGrid1.Canvas.TextRect(Rect, Rect.Right - TextWidth - 2, Rect.Top + 2, CellText);
end;

Última edición por navbuoy fecha: Hace 4 Semanas a las 23:37:53.
Responder Con Cita
  #3  
Antiguo Hace 4 Semanas
pruz pruz is offline
Miembro
 
Registrado: sep 2003
Posts: 201
Poder: 22
pruz Va por buen camino
Gracias, lo probare y les cuento

Saludos
Responder Con Cita
  #4  
Antiguo Hace 4 Semanas
pruz pruz is offline
Miembro
 
Registrado: sep 2003
Posts: 201
Poder: 22
pruz Va por buen camino
Hola, ya probe y funcion perfecto.

solo le hice una mejora, para las cabeceras de columna, ponerlas de otro color.


Código Delphi [-]
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
begin
  if ARow = 0 then   StringGrid1.Canvas.Brush.Color := clSilver // Color de fondo cabezera de columna
  else   StringGrid1.Canvas.Brush.Color := clYellow; // Color de fondo todas las demas columnas

    StringGrid1.Canvas.FillRect(Rect);
    StringGrid1.Canvas.TextRect(Rect, Rect.Left + 2, Rect.Top + 2, StringGrid1.Cells[ACol, ARow]);

end;

Gracias
Responder Con Cita
  #5  
Antiguo Hace 3 Semanas
navbuoy navbuoy is offline
Miembro
 
Registrado: mar 2024
Posts: 235
Poder: 1
navbuoy Va por buen camino
fenomenal entonces
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Actualizar celda de un grid desde otra celda ilda2004 Conexión con bases de datos 2 12-07-2017 15:11:56
mover imagen de celda a celda en un stringgrid P-programador OOP 1 31-07-2015 06:39:12
el texto a la derecha cmgenny Varios 6 29-05-2006 17:58:32
Espacios a la derecha Johnny Q SQL 3 11-10-2005 21:04:58
Como Pintar Solo la Celda y No Toda la Columna de la Celda de un dbGrid?? AGAG4 Varios 11 15-11-2004 21:53:28


La franja horaria es GMT +2. Ahora son las 01:45:11.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi