Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   API de Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=7)
-   -   Cuadro de mensaje... (https://www.clubdelphi.com/foros/showthread.php?t=1929)

madman 03-07-2003 07:51:16

Cuadro de mensaje...
 
Hola...!

Alguien conoce como se puede mandar llamar el cuadro de mensaje que aparece desde Win2000 Professional, parece como un "globo" de historietas.

O basta con hacer un form transparente y usar un BMP como si fuera el cuadro. :D

delphi.com.ar 03-07-2003 15:52:57

Si hablas de los Hints, lo puedes hacer en Win9x con
Código:

CreateWindowEx(0, TOOLTIPS_CLASS, nil, TTS_ALWAYSTIP or TTS_BALLOON....
Aquí tienes un ejemplo http://www.delphipages.com/news/detaildocs.cfm?ID=90

Saludos!

madman 03-07-2003 20:36:17

Funciona de maravilla...

Gracias!

madman 04-07-2003 19:15:32

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" :D, aunke el lpti puede ser el mismo. Solo falta darle un retoke a los procedimientos para que queden perfectos. :D


La franja horaria es GMT +2. Ahora son las 18:15:17.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi