Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-06-2003
andre andre is offline
Miembro
 
Registrado: may 2003
Ubicación: Entre Rios, Argentina
Posts: 80
Poder: 22
andre Va por buen camino
Alineamiento y Estilo en celda de StringGrid

Hola amigos,

Como puedo establecer el alineamiento y el estilo de fuente y color de fondo de una celda especifica o un grupo de celdas en un StringGrid, por ejemplo que la primera columna este alineada a la derecha o que una fila tenga un color de fondo distinto y la letra en negrita.

Muchas gracias.
__________________
Andre R. Coelho
Universidad Adventista del Plata
Responder Con Cita
  #2  
Antiguo 23-06-2003
elpinjum elpinjum is offline
No confirmado
 
Registrado: jun 2003
Ubicación: Alicante
Posts: 23
Poder: 0
elpinjum Va por buen camino
Puedes usar el evnto de StringGrid DrawCell, el cual se ejecuta antes de que se dibuje cada celda, y en el cual puedes establecer las propiedades del canvas como quieras para que se el texto salga como quieras y el fondo del canvas igual.

El siguiente codigo si lo asocias a un StringGrid en el evento DrawCell, te escribra el texto Hola, en negrita en las columnas impares y normal en las pares.

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
If (ACol div 2)=(ACol / 2) then
TStringGrid(Sender).Canvas.Font.Style:=[]
else
TStringGrid(Sender).Canvas.Font.Style:=[fsBold];
TStringGrid(Sender).Canvas.TextOut(Rect.Left,Rect.Top,'Hola');
end;
Responder Con Cita
  #3  
Antiguo 23-06-2003
elpinjum elpinjum is offline
No confirmado
 
Registrado: jun 2003
Ubicación: Alicante
Posts: 23
Poder: 0
elpinjum Va por buen camino
He olividado decir que si lo que estas es creando un componente, puedes sobreescribir el procedimiento DrawCell, lo cual tendría el mismo efecto.
Responder Con Cita
  #4  
Antiguo 23-06-2003
andre andre is offline
Miembro
 
Registrado: may 2003
Ubicación: Entre Rios, Argentina
Posts: 80
Poder: 22
andre Va por buen camino
Muchas gracias por la solucion amigo aunque hay un problemita, cuando cambio el texto de la celda con la sentencia:
Código:
StringGrid1.Cells[0, 0] := 'Hola otra vez';
la palabra se escribe junto con la que se definio en el evento ondrawcell como me dijiste, se sobreescriben las dos.

Cuando intento recuperar el texto en la celda con la sentencia:
Código:
ShowMessage(StringGrid1.Cells[0, 0]);
me devuelve una cadena vacia.

Hay alguna solucion para que se cambie solamente los valores de alineamiento y estilo pero que el texto se ingrese en otro lado que no sea en el evento ondrawcell?

De nuevo muchas gracias.
__________________
Andre R. Coelho
Universidad Adventista del Plata
Responder Con Cita
  #5  
Antiguo 24-06-2003
elpinjum elpinjum is offline
No confirmado
 
Registrado: jun 2003
Ubicación: Alicante
Posts: 23
Poder: 0
elpinjum Va por buen camino
No se si te servirá pero lo que puedes hacer es en el el evento onDrawCell, borrar todo el contenido de la celda con un rectangulo blanco, y despues pintar tu mismo el texto de la celda como te muestro en el siguiente codigo.

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
StringGrid1.Canvas.Rectangle(Rect);
If (ACol div 2)=(ACol / 2) then
TStringGrid(Sender).Canvas.Font.Style:=[]
else
TStringGrid(Sender).Canvas.Font.Style:=[fsBold];
TStringGrid(Sender).Canvas.TextOut(Rect.Left,Rect.Top, StringGrid1.Cells[ACol,ARow]);
end;
Responder Con Cita
  #6  
Antiguo 25-06-2003
andre andre is offline
Miembro
 
Registrado: may 2003
Ubicación: Entre Rios, Argentina
Posts: 80
Poder: 22
andre Va por buen camino
OK, muchas gracias.

Perdon que sea reiterativo pero realmente necesito recuperar el texto tambien, sabes de que manera puedo hacerlo?.

Saludos.
__________________
Andre R. Coelho
Universidad Adventista del Plata
Responder Con Cita
  #7  
Antiguo 25-06-2003
elpinjum elpinjum is offline
No confirmado
 
Registrado: jun 2003
Ubicación: Alicante
Posts: 23
Poder: 0
elpinjum Va por buen camino
Con el último codigo que te he pasado tendrías que poder recuperarlo haciendo uso de la propiedad Cells, ya que lo que hace el procedimiento es primero borrar cada celda, y luego poner el texto de la propiedad Cells de la celda.

Es decir los valores que introduzca en la propiedad Cells[x,y] son los que se te van a pinter en la celda.

Prueba a recuperar el texto con la propiedad cells de cada columna, deberia funcionarte.

ShowMessage(StringGrid1.Cells[0, 0]);
Responder Con Cita
  #8  
Antiguo 25-06-2003
andre andre is offline
Miembro
 
Registrado: may 2003
Ubicación: Entre Rios, Argentina
Posts: 80
Poder: 22
andre Va por buen camino
Muchisimas gracias Elpinjum,

Anda muy bien el codigo, es exactamente lo que necesito.

Saludos.
__________________
Andre R. Coelho
Universidad Adventista del Plata
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


La franja horaria es GMT +2. Ahora son las 17:31:20.


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