Ver Mensaje Individual
  #5  
Antiguo 08-08-2011
Avatar de cheche358
cheche358 cheche358 is offline
Miembro
 
Registrado: mar 2010
Ubicación: Valencia - Venezuela
Posts: 35
Reputación: 0
cheche358 Va por buen camino
Gracias por responder, tengo codigo un poco mas elaborado...

Código:
procedure TForm3.jvdbgrd1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
  r1, r2: TRect;
  s1, s2: string;
const
  clPaleGreen = TColor($CCFFCC);
  clPaleRed = TColor($CCCCFF);
begin
  if Column.Field.Dataset.FieldbyName('EXISTENCIA').AsInteger = 0 then
  begin
    if (gdFocused in State) then
      jvdbgrd1.canvas.brush.color := clGray
    else
      jvdbgrd1.Canvas.Brush.Color := clSilver;
      jvdbgrd1.Canvas.Font.Color := clBlack;
      jvdbgrd1.DefaultDrawColumnCell(rect, DataCol, Column, State);
  end
  else
    ;
  if Column.Field.Dataset.FieldbyName('EXISTENCIA').AsInteger > 0 then
  begin
    if (edt1.Text = '') or
      (Pos(UpperCase(edt1.Text),
      UpperCase(Column.Field.AsString)) <> 1) then
      exit;
    r1 := Rect;
    r2 := Rect;
    s1 := copy(Column.Field.AsString, 1, length(edt1.Text));
    jvdbgrd1.Canvas.FillRect(Rect);
    jvdbgrd1.Canvas.Font.Color := clRed;
    jvdbgrd1.Canvas.Font.Style := [fsbold];
    DrawText(jvdbgrd1.Canvas.Handle, PChar(s1), Length(s1), r1, DT_CALCRECT);
    jvdbgrd1.Canvas.TextOut(r1.Left, r2.Top, s1);
    jvdbgrd1.Canvas.Font.Assign(jvdbgrd1.Font);
    s2 := StringReplace(Column.Field.AsString, s1, '', []);
    r2.Left := r1.Right;
    DrawText(jvdbgrd1.Canvas.Handle, pchar(s2), length(s2), r2, 0);
  end
  else
    ;
end;
Estoy realmenbte perdido en hacer la conversion...

* La fila se pinta en Gris si la existencia es igual a 0.

* Las filas con existencia mayor a 0 se pinta dinamicamente con lo que se va escribiendo en el Edt1.
Responder Con Cita