PDA

View Full Version : فارسی کردن کنترلهای ویندوز



lord_viper
شنبه 29 دی 1386, 15:35 عصر
با سلام
بعضی چیزها که مخصوص ویندوزه مثل انداختن ایکون برنامه کنار ساعت یا بالون تیپهای ویندوز یه متن میشه بهشون داد که نمایش بدن و بطور معمول فارسی نمیشه قرار داد.برای فارسی کردنشون چکار باید بکنم؟
باتشکر

Answer
شنبه 29 دی 1386, 17:31 عصر
دوست عزیز سوالتون یه کمی که نه خیلی واسم گنگه

dkhatibi
شنبه 29 دی 1386, 18:00 عصر
ایکون برنامه کنار ساعت یا بالون تیپهای ویندوز یه متن میش
سلام
هردوی این توسط برنامه ی خودکون که امکان پذیره.
مگر ابنکه منظور شما چیز دیگه ایه

lord_viper
شنبه 29 دی 1386, 18:36 عصر
ببینین وقتی میخواهیت از یکی از اینها استفاده کنین یهStructures دارن که باید مقدار دهی بشن و این Structures یه مقدار بنام szTip دارن که متنی هست که توی بالون یا هینتشون نشون میدن که متن فارسی اگه بهش بدی با وجود تنظیمات فارسی ویندوز یاز اجق وجق نشون داده میشه واسه اینکه بتونم متن فارسیشو خواتا کنم چه باید بکنم

lord_viper
یک شنبه 30 دی 1386, 21:06 عصر
کسی چیزی به ذهنش نمیرسه؟

afshinaghasi
یک شنبه 30 دی 1386, 22:56 عصر
من یه کامپوننت دارم که همین الانم تستش کردم فارسی نوشت . یعنی توی tooltipesh فارسی نوشتم اونم دقیقا فارسی نشونش داد اگه خواستی برات میزارمش. کار باهاشم خیلی راحته آب خوردنه اینم یه تصویر ازش http://www.2shared.com/img/2743937/fcdfea77
منظورت اینه که با بردن ماوس روی آیکون کنار ساعت یه چیز فارسی رو نشون بده دیگه ؟

dkhatibi
دوشنبه 01 بهمن 1386, 20:13 عصر
اگر با سورسه که چه خوب بگذارید

afshinaghasi
دوشنبه 01 بهمن 1386, 23:22 عصر
بله با سورسه اینم لینکش :

http://rapidshare.com/files/85511161/SysIcon.rar.html

lord_viper
سه شنبه 02 بهمن 1386, 13:22 عصر
خودم پیدا کردم به این دو کد توجه کنین
const
TTS_BALLOON = $40;
TTM_SETTITLE = (WM_USER + 32);
procedure docreatetooltip(a:hwnd;title:pwidechar);
var
hwndTT:HWND;
ti:TOOLINFO;
id:integer;
s:string;
rect:trect;
begin
id:=0;
InitCommonControls;
hwndTT := CreateWindow(TOOLTIPS_CLASS,nil, WS_POPUP or TTS_BALLOON or TTS_ALWAYSTIP,
integer(CW_USEDEFAULT), integer(CW_USEDEFAULT),integer(CW_USEDEFAULT), integer(CW_USEDEFAULT),
a,0,hinstance,nil);
if hwndTT<>0 then
begin
s:='this is test';
ti.cbSize:=sizeof(ti);
ti.uFlags:=TTF_CENTERTIP + TTF_TRANSPARENT + TTF_SUBCLASS;
ti.hwnd:=a;
ti.hInst:=hinstance;
ti.uId:=id;
getclientrect(a,rect);
ti.Rect:=rect;
ti.lpszText:=pchar(s);
SendMessage(hwndTT, TTM_ADDTOOL, 0,integer(@ti));
SendMessage(hwndTT, TTM_SETTITLE,1, Integer(title));

end;
end;
اینو از جایی پیدا کردم
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;
تو اولی که خودم نوشتم نمیشه فارسی نوشت ولی تو دومی میشه چون توش داخل type مقدار lpszText: PWideChar قرار داده

dkhatibi
سه شنبه 02 بهمن 1386, 19:06 عصر
بببین اگه تو تگ کد بگذاری چقدر قشنگتر می شه!


const
TTS_BALLOON = $40;
TTM_SETTITLE = (WM_USER + 32);
procedure docreatetooltip(a:hwnd;title:pwidechar);
var
hwndTT:HWND;
ti:TOOLINFO;
id:integer;
s:string;
rect:trect;
begin
id:=0;
InitCommonControls;
hwndTT := CreateWindow(TOOLTIPS_CLASS,nil, WS_POPUP or TTS_BALLOON or TTS_ALWAYSTIP,
integer(CW_USEDEFAULT), integer(CW_USEDEFAULT),integer(CW_USEDEFAULT), integer(CW_USEDEFAULT),
a,0,hinstance,nil);
if hwndTT<>0 then
begin
s:='this is test';
ti.cbSize:=sizeof(ti);
ti.uFlags:=TTF_CENTERTIP + TTF_TRANSPARENT + TTF_SUBCLASS;
ti.hwnd:=a;
ti.hInst:=hinstance;
ti.uId:=id;
getclientrect(a,rect);
ti.Rect:=rect;
ti.lpszText:=pchar(s);
SendMessage(hwndTT, TTM_ADDTOOL, 0,integer(@ti));
SendMessage(hwndTT, TTM_SETTITLE,1, Integer(title));

end;
end;

و



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;