DbGrid com hint

Delphi

14/04/2004

Pessoal alguém saberia discorrer sobre este tópico.
Atenção não vale StringGrid.

DbGrid, com dados maiores que o displaywidth estabelecido quero mostrar num hint .
obrigado
drozinski :( :roll:


Paulo Drozinski

Paulo Drozinski

Curtidas 0

Respostas

Fer_nanda

Fer_nanda

14/04/2004

é uma alternativa...vamos ver se lhe serve
coloca um panel abaixo do seu dbgrid, nele vc pode colocar um dblabel ligado ao mesmo datasource (aí vc liga esse campo q passa o tamanho). qdo o cara for navegando no dbgrid vai aparecendo abaixo.


GOSTEI 0
Fer_nanda

Fer_nanda

14/04/2004

ops...dbtext
foi mal


GOSTEI 0
[spyk3r]

[spyk3r]

14/04/2004

aew

olha, eu fiz uma ´engenharia alternativa´ aki em casa pra simular um hint num dbgrid, a formula foi:

1.declare uma variavel tipo TLabel global para o form onde esta o grid;

var
Form1 : TForm1;
vLabel : TLabel;

2.no onCreate do form onde esta o grid, inicialize a variavel

// Inicia vLabel
vLabel := TLabel.Create(Nil);
vLabel.Color := clBlack; // defina a cor do fundo do hint
vLabel.Font.Color := clYellow; // defina a cor da fonte do hint
vLabel.Font.Size := 12; // defina o tamanho da fonte do hint
vLabel.Font.Name := ´Arial´; // defina o nome da fonte do hint
vLabel.Parent := dbgResultado; // parent será o dbgrid desejado
vLabel.Visible := False; // por enquanto não será mostrado na tela

3.pra não esquecer, no onClose do form, finalize a variavel

FreeAndNil(vLabel);

4.se quiser exibir o hint somente se o foco estiver no dbgrid, adicione esta linha ao onExit do dbgrid

vLabel.Visible := False;

5.aki você vai comecar a definir a posição correta do label na tela, para que ela fique logo abaixo da linha selecionada no grid, simulando um hint, no evento onDrawColumnCell, coloque

// pega a altura do registro selecionado
if (gdSelected in State) and (dbgResultado.Focused) then
begin

// isso é para exibir acima ou abaixo da linha, dependendo da posição
// do registro atualmente selecionado
if Rect.Top+17 < dbgResultado.Height-25 then
vLabel.Top := Rect.Top+17
else
vLabel.Top := Rect.Top-17;

// Como a posição vertical nao muda, o left fica sempre o mesmo
vLabel.Left := 10;

end;

6.agora, vamos definir o que será mostrado no hint, no evento onDataChange do datasource que está ligado ao seu grid

vLabel.Caption := ´Texto que será exibido no hint, pode ser um campo da consulta, ou seja, defina o texto que será exibido no hint´;

// Só mostra o label se tiver algum texto para mostrar, e no meu caso,
// se o usuário deseja que o hint seja exibido, ele tem um checkbox
// para acionar esta opção
vLabel.Visible := (vLabel.Caption <> ´´) and (chkbxAjuda.Checked);

// se o usuário se movimentar rapidamente pelo grid, as vezes ele se
// perde e fica todo ´sujo´ com os labels mostrados, isso resolve
dbgResultado.Repaint;


Bom, é isso, espero ter ajudado

[]´s
Fábio Nascimento - spyk3r


GOSTEI 0
POSTAR