 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
num11 Cdt

Registrado: 27 Feb 2009Mensajes: 2
|
Publicado: Vie 27 Feb, 2009 6:59 am Asunto: Pintar X fila en un TStringGrid (Delphi) |
|
|
Saludos a todos, creo este tema ya estaba en el foro pero no he podido dar solución a mi problema, lo que pasa es que quiero en un StringGrid pintar toda la fila de la celda q esté seleccionada, se que esto es en el método OnDrawCell del método, pero no he podido pintar la "fila seleccionada" en el momento q la selecciono, sino hasta despues de que la "desselecciono". Por si sirve, este es mi código:
procedure TForm1.StringGridDrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
var
sTexto: String; // Texto que va a imprimir en la celda
iAnchoTexto: Integer; //Ancho del texto
begin
with StringGrid.Canvas do begin
if gdFixed in State then begin
Brush.Color := clNavy; // le ponemos azul de fondo
Font.Color := clWhite; // fuente blanca
Font.Style := [fsBold]; // y negrita
end
else begin
//if gdFocused in State then begin <--Con esto pinta solo la celda
if ARow= fila then begin <--Con esto "pinta" toda la fila
Brush.Color := clRed; // fondo rojo
Font.Color := clWhite; // fuente blanca
Font.Style := [fsBold]; // y negrita
end
else begin
Brush.Color := clWindow;
Font.Color := clBlack;
Font.Style := [];
end;
end;
//Pintamos las celdas
sTexto := StringGrid.Cells[ACol,ARow];
FillRect(Rect);
iAnchoTexto := TextWidth( sTexto );
//Texto centrado
TextOut( Rect.Left + ( ( Rect.Right - Rect.Left ) -
iAnchoTexto ) div 2, Rect.Top + 2, sTexto );
end;
end;
en la linea "if ARow = fila ...." la variable fila es (valga la redundancia) la fila q obtnego desde el método onClick del StringGrid.
Otro problema es de que la fila se queda pintada, y llega el momento en que todas las filas están pintadas, lo cual es incorrecto.
Gracias de antemano. _________________ Q PESADEZ!! |
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Vie 27 Feb, 2009 8:04 am Asunto: |
|
|
Hola num11:
Fíjate en la propiedad "Options" del TStringGrid, y pon a "True" el elemento "goRowSelect". Esto hará que siempre se seleccione la fila completa.
Y una vez hecho esto, si además necesitas cambiar el color de selección podrías usar algo así en el evento "OnDrawCell":
| Código: | with StringGrid.Canvas do begin
if gdSelected in State then begin
Brush.Color := clRed;
Font.Color := clWhite;
Font.Style := [fsBold];
TextRect(Rect, Rect.Left+2, Rect.Top+2, StringGrid.Cells[ACol,ARow]);
end;
end;
|
(También podría serte útil: https://cppbuilder.es/viewtopic.php?t=10451)
PD: Este foro es sobre C++Builder, si necesitas uno sobre Delphi te será mas útil el siguiente: http://www.clubdelphi.com/foros
|
|
| Volver arriba |
|
 |
num11 Cdt

Registrado: 27 Feb 2009Mensajes: 2
|
Publicado: Sab 28 Feb, 2009 5:36 am Asunto: |
|
|
Hola!! Muchas gracias por contestar, en efecto,esa propiedad ya la tenia habilitada pero no se porque no me pintaba la fila en el evento onDrawCell, pero ya hice todo de nuevo y ahora si la pinta XD, no se que tenía mal.
Por cierto, igual resolvi esto de otra manera: en el evento "onclic" del StringGrid obtengo en una variable global la fila que seleccione (esto igual para unos cálculos posteriores, asi que si ya la obtengo, pues la utilizo XD) y en el evento "OnDrawCell" del grid si el ARow (fila de la celda que está pintando) es igual a la "fila" que obtengo en el evento del clic, pues que pinte la celda de otro color.
No pongo el código porque deseguro se eliminará este tema, lo siento, no me di cuenta de que era de C++, pero muchisimas gracias por el enlace para el foro de Delphi. Hasta luego . _________________ Q PESADEZ!! |
|
| Volver arriba |
|
 |
|
|
No puedes publicar temas nuevos en este foro No puedes responder a temas en este foro No puedes editar tus mensajes en este foro No puedes borrar tus mensajes en este foro No puedes votar en las encuestas de este foro
|
© 2002–2026 Club Builder · Funciona con phpBB.
|