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:
excelente dica testei funcionou OK... Valeu
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