terça-feira, 6 de novembro de 2007

Controlar a exibição do ScrollBar do DBGrid

Muitas vezes ficamos incomodados com aquele ScrollBar que teima em aparecer mesmo que o DBGrid tenha apenas 1 ou 2 linhas.

Por causa desse incômodo que resolvi pesquisar até chegar a seguinte solução.

Coloque no evento onDrawColumnCell do seu DBGrid

procedure TForm2.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if (TStringGrid(DBGrid1).RowCount-1) then
//Se tiver menos de 10 linha
ShowScrollBar(DBGrid1.Handle,SB_VERT,False);
//Remove barra Vertical
end;

É claro que você deve melhorar a lógica, como por exemplo achar o número de linhas (exibidos sem ScrollBar) dependo da altura do DBGrid.

Fonte: ActiveDelphi

2 comentários:

Anônimo disse...

Blz, era exatamente o que eu precisava!
Só uma observação.
Na primeira linha do if tá faltando o operador de comparação:
if (TStringGrid(DBGrid1).RowCount-1) <= 10 then

Muito obrigado,

Francisco

Anônimo disse...

Muito legal essa dica. Sou iniciante em programação e estou com uma dúvida. Ando encontrando outros problemas com relação ao dbgrid. Por exemplo, quando tenho vários registros, e clico no barra de rolagem para visualizá-los um a um , automaticamente pula do primeiro para o último registro, e esse efeito acaba se tornando indesejável.
Se tiver uma solução para este problema , ficarei muito grato.
Desde já agradeço.
Marques.