Sábado, Janeiro 15, 2005

Mostrando dicas balão para caixas de edição em Windows XP

Para mostrar uma dica balão para uma caixa de edição, devemos mandar uma mensagem EM_SHOWBALLOONTIP para ela. O texto, título e ícone da dica são mandados prenchendo um record do tipo TEditBalloonTip, definida como



TEditBalloonTip = packed record
cbStruct: DWORD ;
pszTitle: LPCWSTR ;
pszText: LPCWSTR;
ttiIcon: Integer;
end;

Uma vez preenchido record, passamos como o terceiro parâmetro para a função SendMessageW:


procedure ShowBalloonTip(Window : HWnd;
Texto, Titulo : PWideChar;Tipo : Integer);
var
EditBalloonTip : TEditBalloonTip;
begin
EditBalloonTip.cbStruct := SizeOf(TEditBalloonTip);
EditBalloonTip.pszText := Texto;
EditBalloonTip.pszTitle := Titulo;
EditBalloonTip.ttiIcon := Tipo;
SendMessageW(Window, EM_SHOWBALLOONTIP, 0,
Integer(@EditBalloonTip));
end;

O código completo das funções que mostram e escondem a dica é o seguinte:


TEditBalloonTip = packed record
cbStruct: DWORD ;
pszTitle: LPCWSTR ;
pszText: LPCWSTR;
ttiIcon: Integer;
end;

const
ECM_FIRST = $1500;
EM_SHOWBALLOONTIP = (ECM_FIRST + 3);
EM_HIDEBALLOONTIP = (ECM_FIRST + 4);
TTI_NONE = 0;
TTI_INFO = 1;
TTI_WARNING = 2;
TTI_ERROR = 3;

var
Form1: TForm1;

implementation

{$R *.dfm}


procedure ShowBalloonTip(Window : HWnd;
Texto, Titulo : PWideChar;Tipo : Integer);
var
EditBalloonTip : TEditBalloonTip;
begin
EditBalloonTip.cbStruct := SizeOf(TEditBalloonTip);
EditBalloonTip.pszText := Texto;
EditBalloonTip.pszTitle := Titulo;
EditBalloonTip.ttiIcon := Tipo;
SendMessageW(Window, EM_SHOWBALLOONTIP, 0,
Integer(@EditBalloonTip));
end;

procedure HideBalloonTip(Window : HWnd);
begin
SendMessageW(Window, EM_HIDEBALLOONTIP, 0, 0)
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
ShowBalloonTip(Edit1.Handle,'Texto a ser mostrado',
'Título da janela',TTI_INFO);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
HideBalloonTip(Edit1.Handle);
end;

Nota: Esta dica só funciona com os estilos do XP ativados. Assim, você precisa colocar um componente TXpManifest na sua Form.


2 Comentários:

At 5:40 PM, Anônimo disse...

excelente dica testei funcionou OK... Valeu

 
At 9:38 PM, João Batista disse...

Olá, mandem um e-mail para jb.73@hotmail.com, e eu lhes direi como faser para aparecer balão de mensagem até com o windows 98, não perca tempo escrevendo códigos complexos, pois com apenas este componente que eu fiz vc pode faser surgir balão de quelquer componente inclusive de labels que não possuem a propriedade Handle. Caso vocês queirão pode me adicionar. Grato João Batista.

 

Postar um comentário

<< Home