Ver Mensaje Individual
  #4  
Antiguo 04-07-2003
Avatar de madman
madman madman is offline
Miembro
 
Registrado: may 2003
Ubicación: Nayarit, México
Posts: 242
Reputación: 22
madman Va por buen camino
Hola...
Yo de nuevo!

Este metodo que proporcionaste delphi.com.ar, parece tener un pequeño detallito, tras usarlo un poco me di cuenta que el Title de

Código:
procedure AddToolTip(hwnd: dword; lpti: PToolInfo; IconType: Integer; Text, Title: PChar);
Aparece en todos los demas AddToolTip's que hagas.

ejemplo:
Código:
 AddToolTip(Memo1.Handle, @ti, 1, 'Escribe aki tu texto', 'Tipo1:');
 AddToolTip(Memo2.Handle, @ti2, 2, '+ Texto', 'Tipo2:');
 AddToolTip(Edit1.Handle, @ti3, 3, 'Estas en el Edit1', 'Tipo3:');
El titulo que pones en el ultimo AddToolTip, aparece en los demas.

Por lo que hice:

Código:
procedure CreateToolTips(hWnd: Cardinal; var hToolTip:Cardinal; var lpti: TToolInfo);
begin
 hToolTip := CreateWindowEx(0, 'Tooltips_Class32', nil, TTS_ALWAYSTIP or TTS_BALLOON,
   Integer(CW_USEDEFAULT), Integer(CW_USEDEFAULT),Integer(CW_USEDEFAULT),
   Integer(CW_USEDEFAULT), hWnd, 0, hInstance, nil);
 if hToolTip <> 0 then
 begin
   SetWindowPos(hToolTip, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE or
     SWP_NOSIZE or SWP_NOACTIVATE);
   lpti.cbSize := SizeOf(TToolInfo);
   lpti.uFlags := TTF_SUBCLASS;
   lpti.hInst := hInstance;
 end;
end;

procedure AddToolTip(hToolTip: Cardinal; hwnd: dword; lpti: PToolInfo; IconType: Integer; Text, Title: PChar);
var
 Item: THandle;
 Rect: TRect;
begin
 Item := hWnd;
 if (Item <> 0) AND (GetClientRect(Item, Rect)) then
 begin
   lpti.hwnd := Item;
   lpti.Rect := Rect;
   lpti.lpszText := Text;
   SendMessage(hToolTip, TTM_ADDTOOL, 0, Integer(lpti));
   FillChar(buffer, sizeof(buffer), #0);
   lstrcpy(buffer, Title);
   if (IconType > 3) or (IconType < 0) then IconType := 0;
      SendMessage(hToolTip, TTM_SETTITLE, IconType, Integer(@buffer));
 end;
end;
Ejemplo:
Código:
unit unit1;

uses
..., CommCtrl, ...;

const
 TTS_BALLOON    = $40;
 TTM_SETTITLE = (WM_USER + 32);
...
...
...
var
  Form1: TForm1;
  hTooltip1, hToolTip2, hToolTip3: Cardinal;
  tip1, tip2,tip3: TToolInfo;
  buffer: array[0..255] of char;
...
...
...

procedure TForm1.FormCreate(Sender: TObject);
begin
 CreateToolTips(Form1.Handle, hToolTip1, tip1);
 CreateToolTips(Form1.Handle, hToolTip2, tip2);
 CreateToolTips(Form1.Handle, hToolTip3, tip3);
 AddToolTip(hToolTip1,Memo1.Handle, @tip1, 1, 'Escribe aki tu texto', 'Tipo1:');
 AddToolTip(hToolTip2,Memo2.Handle, @tip1, 2, '+ Texto', 'Tipo2:');
 AddToolTip(hToolTip3,Edit1.Handle, @tip1, 3, 'Estas en el Edit1', 'Tipo3:');
end;
Se tiene que usar un hToolTip diferente para cada Componente al que le queremos colocar un "Balloon" , aunke el lpti puede ser el mismo. Solo falta darle un retoke a los procedimientos para que queden perfectos.
__________________
Guía de Estilo.
Responder Con Cita