Mostrando Imagens no DBGrid


Vamos fazer dois exemplos simples primeiro zebrar as linhas do DBGrid, e segundo colocaremos uma bolinha verde nos alunos que terão notas acima e igual a 7, e aos outros colocaremos uma bolinha vermelha.
procedure TForm1.dbGridRegistrosDrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
  lBitmap: TBitmap;
  lFixRect: TRect;
  lBmpWidth: Integer;
  lImgIndex: Integer;
begin
  if not Odd(cdsRegistros.RecNo) then begin
    if not(gdSelected in State) then begin
      dbGridRegistros.Canvas.Brush.Color := clSilver;
      dbGridRegistros.Canvas.FillRect(Rect);
      dbGridRegistros.DefaultDrawDataCell(Rect, Column.Field, State);
    end;
  end;
  lFixRect := Rect;
  if Column.Field = cdsRegistrosNOTA then begin
    if cdsRegistrosNOTA.Value >= 7 then
      lImgIndex := 0
    else
      lImgIndex := 1;
    lBitmap := TBitmap.Create;
    try
      ImageList.GetBitmap(lImgIndex, lBitmap);
      lBmpWidth := (Rect.Bottom - Rect.Top);
      lFixRect.Right := Rect.Left + lBmpWidth;
      dbGridRegistros.Canvas.StretchDraw(lFixRect, lBitmap);
    finally
      lBitmap.Free;
    end;
    lFixRect := Rect;
    lFixRect.Left := lFixRect.Left + lBmpWidth;
  end;
  dbGridRegistros.DefaultDrawColumnCell(lFixRect, DataCol, Column, State);
end;

Vamos para as propriedade chamada Options do TDBGrid

dgEditing: Quando False não é mais permitido a edição no DBGrid
dbTitles: Quando True exibe a linha de apresentação dos títulos do DBGrid.
dgColLines: Quando False e removido as linhas verticais do DBGrid.
dgRowLines: Quando False e removido as linhas horizontal do DBGrid.
dgRowSelect: Quando True ao clicar em uma célula, toda a linha fica selecionada
dgMultiSelect: Quando True permite que o usuário selecione mais de uma linha por vez no DBGrid.

Vamos observar que o Grid, agora conseguimos deixar organizado, agora podemos visualizar os alunos com notas abaixo de 7 com um bolinha vermelha ao lado, e os que ficam acima com uma bolinha verde.

Este componente contem um grande número de situações e customizações possíveis, fica um desafio de você descobrir novos recursos

0 comentários:

Postar um comentário