PDA

View Full Version : نمایش بالون روی EDIT



Saeid59_m
دوشنبه 07 مرداد 1387, 07:34 صبح
سلام
می خواهم روی EDITBOX ها پیغامهای خطا به صورت بالون نشان داده شوند .
مثل شکل زیر

shervin farzin
دوشنبه 07 مرداد 1387, 09:55 صبح
سلام
اين كدي كه برات مينويسم رو از سايت Torry.Net گرفتم . يه Tooltip رو روي OnClick Event هر شي از صفحه نمايش ميده ، البته گرافيكش خيلي توپ نيست ولي خوب " بي از هيچي "

uses
Commctrl;

procedure ShowBalloonTip(Control: TWinControl; Icon: integer; Title: pchar; Text: PWideChar;
BackCL, TextCL: TColor);
const
TOOLTIPS_CLASS = 'tooltips_class32';
TTS_ALWAYSTIP = $01;
TTS_NOPREFIX = $02;
TTS_BALLOON = $40;
TTF_SUBCLASS = $0010;
TTF_TRANSPARENT = $0100;
TTF_CENTERTIP = $0002;
TTM_ADDTOOL = $0400 + 50;
TTM_SETTITLE = (WM_USER + 32);
ICC_WIN95_CLASSES = $000000FF;
type
TOOLINFO = packed record
cbSize: Integer;
uFlags: Integer;
hwnd: THandle;
uId: Integer;
rect: TRect;
hinst: THandle;
lpszText: PWideChar;
lParam: Integer;
end;
var
hWndTip: THandle;
ti: TOOLINFO;
hWnd: THandle;
begin
hWnd := Control.Handle;
hWndTip := CreateWindow(TOOLTIPS_CLASS, nil,
WS_POPUP or TTS_NOPREFIX or TTS_BALLOON or TTS_ALWAYSTIP,
0, 0, 0, 0, hWnd, 0, HInstance, nil);
if hWndTip <> 0 then
begin
SetWindowPos(hWndTip, HWND_TOPMOST, 0, 0, 0, 0,
SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
ti.cbSize := SizeOf(ti);
ti.uFlags := TTF_CENTERTIP or TTF_TRANSPARENT or TTF_SUBCLASS;
ti.hwnd := hWnd;
ti.lpszText := Text;
Windows.GetClientRect(hWnd, ti.rect);
SendMessage(hWndTip, TTM_SETTIPBKCOLOR, BackCL, 0);
SendMessage(hWndTip, TTM_SETTIPTEXTCOLOR, TextCL, 0);
SendMessage(hWndTip, TTM_ADDTOOL, 1, Integer(@ti));
SendMessage(hWndTip, TTM_SETTITLE, Icon mod 4, Integer(Title));
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
ShowBalloonTip(Button1, 1, 'Title',
'Balloon tooltip,http://kingron.myetang.com; updated by Calin', clBlue, clNavy);
end;

موفق باشي .

Saeid59_m
دوشنبه 07 مرداد 1387, 11:18 صبح
دست شما درد نکنه
اما این کد باعث می شه hint شی تغییر کنه . یعنی یک بار که روی شی کلیک می کنیم نمایش داده می شود و از آن پس با بردن ماوس روی شی باز نمایش داده می شود .
مقصود من این بود که زمانی که بخواهیم این بالون بصورت دستی نمایش داده شود نه اینکه به جای hint قرار گیرد .
اگر کسی از دوستان کد بهتری سراغ دارد لطفاً راهنمائی کند .
فکر می کنم با استفاده از توابع API کار زیاد مشکلی نباشه .

Hsimple11
دوشنبه 07 مرداد 1387, 12:29 عصر
کامپوننت LMDMessageHint از سری LMD اینکار را به زیبایی انجام می دهد.

Saeid59_m
دوشنبه 07 مرداد 1387, 13:00 عصر
این کامپوننت رو دارم ولی می خواهم کنار این پیغام یک عکس علامت خطر (مانند شکل) هم بیاد ولی اگه از این تاپیک جوابی نگیرم مجبورم راهی را که شما گفتید استفاده کنم .

اصغر (پآچ)
دوشنبه 07 مرداد 1387, 20:41 عصر
سلام دوست من

یه کامپوننت برات میزارم اما بازم جایگزین Hint میشه شاید بدردت بخوره میتونی براش عکس یا آیکون هم تعریف کنی من سازنده این کامپوننت رو نمی شناسم اما همین جا ازش تشکر می کنم

موفق و موید باشی