Delphi - ayuda con un grid

 
Vista:

ayuda con un grid

Publicado por joaquin (2 intervenciones) el 27/04/2006 21:03:07
como puedo hacer que las filas de un grid sean de diferentes colores , y como puedo hacer k una variable booleana tome la apariencia del chek box dentro de grit para no tener que digitar true o false en caso de querer cambiar su estado seria de mucha ayuda quien pudiera ayudarte en mis inicios en este lenguaje.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:ayuda con un grid

Publicado por jose julian (46 intervenciones) el 28/04/2006 03:04:50
bajate la Cara Oculta de Delphi, ahi viene como
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ayuda con un grid

Publicado por Delfino (1216 intervenciones) el 28/04/2006 08:24:00
Si utilizas el JvDBGrid de la JVCL podras hacerlo sin escribir codigo..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ayuda con un grid

Publicado por carlos (10 intervenciones) el 29/04/2006 01:51:56
Esto debería ayudarte. No lo revise mucho asi que puede ser que tengas que hacerle unos retoquesitos. Espero te sirva
Para los checkbox necesitas dos bmp con los dos cheqbox

//-----------------Para pintar filas
procedure TFClienteCuenta.GrillaDrawColumnCell(Sender: TObject;const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin //Cambia el color de los campos negativos
with sender as tdbgrid do
begin
if Column.Field.DataSet.FieldByName('Estado').AsString = 'P' then
if (gdSelected in State) then
Grilla.DefaultDrawColumnCell(Rect, DataCol, Column, State)
else
begin
Grilla.Canvas.FillRect(Rect);
Grilla.Canvas.Brush.Color := $00F4F4F4;
end;
defaultdrawcolumncell(rect,datacol,column,state);
end;
end;

//------------------------------------Para el chekbox

procedure ChkDBGridDrawColumnCell(DBGrid: TDBGrid;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
var
X, Y, Index: integer;
Field: TField;
begin
Field := Column.Field;
if (Field <> nil) and (Field.FieldName = 'A') then
begin
DBGrid.Canvas.FillRect(Rect); // Llena celda con color de fondo
case Column.Alignment of //Determina posición del gráfico dentro de la celda
taRightJustify:
X := Rect.Right - 2 - 16;
taCenter:
X := (Rect.Right - Rect.Left - 16) div 2 + Rect.Left;
else // taLeftJustify:
X := Rect.Left + 2;
end;
Y := (Rect.Bottom - Rect.Top - 16) div 2 + Rect.Top;
if Field.AsInteger = 1 then Index := 1 else Index := 0; // Determina gráfico a dibujar
// Lo dibuja
FCargaAgrupar.ImageList2.Draw(DBGrid.Canvas, X, Y, Index);
end else // Dibujo predeterminado
DBGrid.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;

procedure TFCargaAgrupar.GrillaDrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
ChkDBGridDrawColumnCell(Sender as TDBGrid, Rect,DataCol, Column, State);
end;

procedure ChkDBGridColEnter(DBGrid: TDBGrid);
var
Field: TField;
begin
Field := DBGrid.SelectedField;
if (Field <> nil) and (Field.FieldName = 'A') then //Nombre de la columna
DBGrid.Options := DBGrid.Options - [dgEditing];
end;

procedure ChkDBGridColExit(DBGrid: TDBGrid);
var
Field: TField;
begin
Field := DBGrid.SelectedField;
if (Field <> nil) and (Field.FieldName = 'A') then
DBGrid.Options := DBGrid.Options + [dgEditing];
end;

procedure TFCargaAgrupar.GrillaColEnter(Sender: TObject);
begin
ChkDBGridColEnter(Sender as TDBGrid);
end;

procedure TFCargaAgrupar.GrillaColExit(Sender: TObject);
begin
ChkDBGridColExit(Sender as TDBGrid);
end;

procedure ChkDBGridCellClick(Column: TColumn);
var
Field: TField;
begin
Field := Column.Field;
if (Field <> nil) and (Field.FieldName = 'A')//ftInteger)
and Field.CanModify and not Column.ReadOnly then
with Field.Dataset do begin
if State = dsBrowse then
Edit;
if Field.AsBoolean = true then
Field.AsBoolean := false
else
Field.AsBoolean := true;
end;
end;

procedure ChkDBGridKeyPress(DBGrid: TDBGrid; var Key: Char);
var
Field: TField;
begin
Field := DBGrid.SelectedField;
if (Field <> nil) and (Field.FieldName = 'A') then
if (Key = ' ') and Field.CanModify and
not DBGrid.Columns[DBGrid.SelectedIndex].ReadOnly then
with Field.Dataset do begin
if State = dsBrowse then
Edit;
if Field.AsBoolean = true then
Field.AsInteger:= false
else
Field.AsInteger:= true;
end;
end;

procedure TFCargaAgrupar.GrillaCellClick(Column: TColumn);
begin
ChkDBGridCellClick(Column);
end;

procedure TFCargaAgrupar.GrillaKeyPress(Sender: TObject; var Key: Char);
begin
ChkDBGridKeyPress(Sender as TDBGrid, Key);
end;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar