DbGrid com hint
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:
Atenção não vale StringGrid.
DbGrid, com dados maiores que o displaywidth estabelecido quero mostrar num hint .
obrigado
drozinski :( :roll:
Paulo Drozinski
Curtidas 0
Respostas
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.
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
14/04/2004
ops...dbtext
foi mal
foi mal
GOSTEI 0
[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
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