Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Dbgrid Column.Index colorear (https://www.clubdelphi.com/foros/showthread.php?t=91814)

shoulder 05-05-2017 03:36:12

Dbgrid Column.Index colorear
 
Hola en el dbgrid pinto una columna de negro para que no se vean los datos si entra un usuario con un rol especial,funciona bien, pero si el usuario hace un click sobre la celda el valor se hace visible y el fondo de la celda vuelve a blanco no entiendo porque. Probe y veo que al hacer click en la celda de la columna se pierde en el ondrawcolumn el numero de columna lo trae en blanco. Gracias

ejemplo en el ondrawcolumn
Código Delphi [-]

if a = '1' then
 begin
   if (Column.Index = 3) then
      begin
        DbGrid1.Canvas.Brush.Color := clBlack;
        DbGrid1.Canvas.Font.Color := clBlack;
        DbGrid1.DefaultDrawColumnCell(rect,DataCol,Column,State);
      end;
end;

es decir al clikear la columna entra por a= 1 pero al posicionarme en column.index veo blanco y no el numero 3 de la columna.

ecfisa 05-05-2017 05:53:30

Hola shoulder.

Intentalo de este modo:
Código Delphi [-]
const
  LOCKED_COLUMN = 3;

procedure TtuForm.DBGrid1DrawColumnCell( Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState );
begin
  if ( a = '1' ) and ( Column.Index = LOCKED_COLUMN )   then
  begin
    DbGrid1.Canvas.Brush.Color := clBlack;
    DbGrid1.Canvas.Font.Color  := clBlack;
    DbGrid1.DefaultDrawColumnCell( Rect, DataCol, Column, State );
  end;
end;

procedure TtuForm.DBGrid1ColEnter( Sender: TObject );
var
  gr: TDBGrid;
begin
  gr := TDBGrid( Sender );
  if ( a = '1' ) and ( gr.SelectedIndex = LOCKED_COLUMN ) then
    gr.SelectedIndex := 0;
end;

Saludos :)

roman 05-05-2017 19:04:10

¡Caramba! ¿Y no sería mejor ocultar esa columna dependiendo del usuario?

LineComment Saludos

shoulder 08-05-2017 21:33:34

dbgrid index
 
Gracias funciona perfecto.


La franja horaria es GMT +2. Ahora son las 02:46:53.

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