Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Ayuda con codigo ondraw (https://www.clubdelphi.com/foros/showthread.php?t=67394)

serebi 14-04-2010 23:46:55

Ayuda con codigo ondraw
 
muy buenas tardes querido club fueron muchas las veces que me colaboraron pero ahora vengo con una pregunta un poco mas especifica veran tengo un codigo funciona bien es el siguiente:
Código:

procedure TFInventario.ProductosDrawCell(Sender: TObject; ACol,
  ARow: Integer; Rect: TRect; State: TGridDrawState);
var
  Grid    : TStringGrid;
  Texto  : String;
  ColorCelda : TColor ;
begin
  Grid := TStringGrid(Sender);
  if (Arow = Fila) and ( Fila > 0 ) then
    ColorCelda := $00C4EFFF
  else
    if (ARow < Grid.FixedRows) or (ACol < Grid.FixedCols) then
      ColorCelda :=  $002D96FF
    else
      ColorCelda :=  clWhite ;
  if (ARow < Grid.FixedRows) or (ACol < Grid.FixedCols)  then
    begin
      Grid.Canvas.Brush.Color := ColorCelda ;
      Grid.Canvas.Font.Style := [fsBold] ;
      Grid.Canvas.FillRect(Rect);
      Texto := Grid.Cells[ACol,ARow];
      DrawText( Grid.Canvas.Handle, PChar(Texto), StrLen(PChar(Texto)), Rect, DT_CENTER ) ;
    end
  else
    begin
      Grid.Canvas.Brush.Color := ColorCelda;
      Grid.Canvas.Font.Style := [] ;
      Grid.Canvas.FillRect(Rect);
      Texto := Grid.Cells[ACol,ARow];
      DrawText( Grid.Canvas.Handle, PChar(Texto), StrLen(PChar(Texto)), Rect, DT_LEFT ) ;
    end ;
end;

en verdad les ruego que lo lean para que funcione basta la variable global FILA y agregado a esto en el on select de un grid logro que la fila seleccionada se resalte funciona bien pero hay un pequeño detalle una ves que selecciono una fila del grid y le doy foco a otro objeto como ser un edit el texto de la primera celda del grid que seleccione se borra y no logro corregir ese error no se si alguien con un poco de tiempo pueda darme un concejo o una forma de hacerlo mejor por favor en verdad se los agradecere

droguerman 15-04-2010 00:12:06

hmm a primera vista parece un problema con la variable global por que no intentas simplemente usar Grid.Row y verificar si el grid está seleccionado con Focused?

serebi 15-04-2010 00:18:33

hay que verguenza ya solucione el problema en verdad me da mucha pena haberlos molestado en vano, pero para aclarar lo que realizaba el codigo es :
en un grid en el evento OnSelectCell tomaba el valor Fila := ARow ese es el valor de la fila que seleccione al hacer click en el despues llamaba al repaint del grid con Grid.Repaint ; al hacer esto se ejecutaba el codigo que puse antes y lo que hace es primero le da color a las fixed cells del grid pone estilos al font del grid y por ultimo la fila enla que hice click antes la pinta de otro color y todo se soluciono al aumentar

Grid.Canvas.Font.Color := clMaroon ;

en el ultimo else

muchas gracias por su ayuda y lamento las molestias


La franja horaria es GMT +2. Ahora son las 03:14:55.

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