PDA

View Full Version : فارسی نوشتن در دلفی



(امید)
دوشنبه 12 اسفند 1381, 07:20 صبح
برداشت شده از barnamenevis.com

__________________________________________________ ___________

چگونه میتوان در پنجره showmessage فارسی نوشت؟

با سلام؛

دوست عزیز در همان کامپوننتهای HRTools یک یونیت بانام Convert وجود دارد که برای همین کار دو تابع دارد:

FConfirmMSG
ShowFMessage



برای نوشتن Message فارسی تو ویندوز انگلیسی چیزی نمی دونم .

ولی MessageDlgدلفی تو ویندوز فارسی هم مشکل داره. مثلا icon سمت راست نیست یا متن دکمه ها فارسی نیست ....

واسه این کار میتونی از FMessageDlg که تو فایل Fdialogs.dcu تعریف شده استفاده کنی. این فایل تو www.delphi7.net/falad هست که میتونی download کنی.

تو این unit تابع های دیگه ای مثل

FInputQuery
FInputBox
FMessageDlg
هم هست.



Nightbat


آقای ربیعی

من از showfmessage استفاده کردم ولی فونتهایش مشکل داشت. با توجه به اینکه در ویندوز XP این مشکل بوجود آمد لطفا در صورت امکان بیشتر توضیح بدهید.

و یک پیشنهاد: چقدر خوب میشد اگه در یک متن Text کوچک در مورد HRtools توضیح میدادید و بهمراه آن درون سایت قرار می دادید. دراین صورت خیلی بهتر و کاملتر میشد از کامپوننتهای شما استفاده کرد.
با آرزوی توفیق روزافزون برای شما.


ebrahim


بیا این هم یک مثال ساده خودت را خسته نکن

{
Var
MsgText, MsgCaption : String;
MsgType, UserResp : integer;
}

MsgCaption := 'اخطار';
MsgText := 'جهت امتحان';
MsgType := MB_YESNO + MB_ICONWARNING + MB_DEFBUTTON1 + MB_APPLMODAL + MB_RIGHT;


UserResp := MessageBox( Handle, PChar(MsgText), PChar(MsgCaption), MsgType);
{ UserResp := MessageBox( Handle, 'جهت امتحان', 'اخطار', $80034); }

Case UserResp of
IDYES :
begin
end;
IDNO :
begin
end;
end;

قسمت کد دلفی را در برنامه ات ک÷ی کن اجرا کن

MVF

__________________________________________________ __________

چگونه می توان یک Edit داشت که به محض ورود به آن بتوان فارسی تایپ کرد.(نیازی به تغییر نوع زبان در روی tray نباشد)

متشکرم.................


عاشقم بر همه عالم که همه عالم از اوست

مخلص شما--سعید--


Application.Bidikeyboard:='00000429';
MahdiSeifJamali


شما میتوانید از این دستور استفاده کنید :
SetKeyboardLayout(LANG_FARSI);
ناصر فدائی


کد آقای فدائی خوبه - به این آدرس هم سر بزن http://www.delphi-unicode.net/



..قانونه جنگلو زیر پا گذاشتی ...



سلام. در onenter از دستور LoadKeyboardLayout(KLF_ACTIVATE ,"00000401") و در onexit ازLoadKeyboardLayout(KLF_ACTIVATE ,"00000409") استفاده کنید.
babayetaparman()

سلام

می بخشی آقا سعید

ولی یادت باشه که 00000401 برای زبان عربیه و 00000429 برای زبان فارسی استاندارد.

البته در ویندوز 98 درسته ولی در ویندوز XP باید 00000429 باشه.


مجید افرا



HKEY_LOCAL_MACHINE/System/CurrentControlSet/Control/keyboard leyouts


..قانونه جنگلو زیر پا گذاشتی ...

__________________________________________________ __________

سلام

از خدمتتان سوالی داشتم:

چگونه میتوان منوی فارسی در برنامه استفاده نمود؟

متشکرم.


ebrahim



سلام

درست گفتی اشتباه از من بود چون mainmenu فونت نداره . اگه ویندوزت فارسی باشه فارسی رو نمایش می ده. اگه فونت های فارسی رو نصب نکردی این کارو بکن.

caption form هم تو properties form هست(اگه منظورت این بود)

امید


دوست عزیز

1-از سایت جناب ربیعی ابزار فارسی را بردار و استفاده کن چیزهای خوبی است.

2-از فونتهای ایران سیستم کن.

دز صورت نصب فونت مذکور در هر ویندوزی مشکلت حل میشود.

در سوالهای اخیر چند مورد در باره یونیکد و امثال آن مطرح شده و اساتید نیز جوابهای خوبی داده اند حتما مراجعه کن


MahdiSeifJamali


اضافه بر مطالب بالا که صحیح بود عرض شود که :

کامپوننت های متفاوتی دیدم که از main menu اصلی دلفی منشق نشده اند و همه ظواهر و شمایل اونها بطور اختصاصی تنظیم میشود . ( مثلا“ از فونت استاندارد ویندوز برای نمایش منو ها تبعیت نمیکند و میتوانید هر فونتی با هر کد پیجی بهش بدید ) . فکر میکنم اگر اصرار به فارسی یا right justified بودن منو داری از اونها استفاده کنی . یکی شون رو من توی یکی از همین سایتهای معروف دلفی که کامپوننت مفتی قربه الی الله ( خدا خیرشون بده ) میدن کش رفتم . سرچ کن پیدا میکنی فکر کنم اسمش big menu یا یه همچین چیزهائی بود .




..قانونه جنگلو زیر پا گذاشتی ...

وحید20
جمعه 16 اسفند 1381, 23:13 عصر
دوست گرامی به جای استفاده از MessageDlg تابع زیر رو یک جاپی بنویس و هر وقت لازم داشتی اجراش کن

Procedure MyMessageDlg(const Msg: string; DlgType: TMsgDlgType;
Buttons: TMsgDlgButtons);
begin
with CreateMessageDialog(Msg, DlgType, Buttons) do
try
.
.
.
font.Name := 'Titr';
ShowModal;
finally
Free;
end;

end;
در ضمن به جای نقطه چین می تونی هر بلاپی سر فرم پیغام بیاری حتی راست چین کردن آیکون

مهدی کرامتی
جمعه 16 اسفند 1381, 23:27 عصر
میتونی یک مثال کامل بزنی؟ مثلا همون راست چین کردن آیکون دیالوگ.

(امید)
شنبه 17 اسفند 1381, 06:33 صبح
سلام

اینم چیزه خوبیه :wink: . عنوان پنجره رو هم می شه فارسی نوشت :

application.MessageBox

امید

وحید20
شنبه 17 اسفند 1381, 21:46 عصر
جناب اسیستان باسلام :
باید عرض کنم که منظور از راست چین کردن آیکون تغییر مکان قرار گیری آیکون بود مثلا می شود بجای نقطه چین در تابع بالا دستور زیر را نوشت

for I := 0 to (ComponentCount - 1) do begin
if Components[I] is Timage then
Timage(Components[I]).Left := ClientWidth - 50;

وحید20
شنبه 17 اسفند 1381, 21:50 عصر
اضافه بر مطالب بالا تابع کاملی که من تو یکی از برنامه هام از آن استفاده کردم و در آن مکان آیکون و لیبل را تغییر دادم در زیر آمده است

Procedure MyMessageDlg(const Msg: string; DlgType: TMsgDlgType;
Buttons: TMsgDlgButtons);
var
I : Integer ;
begin
with CreateMessageDialog(Msg, DlgType, Buttons) do
try
font.Name := 'Titr';
for I := 0 to (ComponentCount - 1) do begin
if Components[I] is Timage then
Timage(Components[I]).Left := ClientWidth - 50;
If Components[I] is TLabel then
TLabel(Components[I]).Left := 10;
end;
ShowModal;
finally
Free;
end;

end;

ارادتمند همه دوستان

Tirdad
چهارشنبه 26 فروردین 1383, 12:51 عصر
من زمانی که اطلاعات فارسی را از بانک اطلاعاتی بیرون می کشم و در listbox قرار میدم , روی سیستم خودم هیچ مشکلی ندارم ولی زمانی که برنامه رو به صورت exe به یک سیستم دیگه میبرم فارسی نشون نمیده
در حالیکه در قسمتهای دیگه هیچ مشکلی ندارم مثلا از بانک وقتی اطلاعات فارسی رو در یک label قرار میدم درست نشون میده.
لطف کنید و به دادم برسید.
دیگه واقعا کلافه شدم
:cry:

Tirdad
جمعه 28 فروردین 1383, 16:00 عصر
از پیشنهادهایی که ندادید ممنونم.

خودم پیدا کردم و درست شد.

:wink:
:P

MToloo
دوشنبه 15 تیر 1383, 05:46 صبح
اگه یه جایی همون اولهای برنامه بنویسید:

Application.BiDiMode:= bdRightToLeft;
بعد Messagedialog ها از راست به چپ میشن. البته MessageDialog های خود دلفی مشکل دارن. ولی MessageBox ویندوز یعنی Application.MessageBox درست کار میکنه.

media
دوشنبه 12 مرداد 1383, 09:10 صبح
salam
mikhastam karborde "help context " ro bedoonam
age kasi midoone lotfan javab bede

mjdeveloper
سه شنبه 17 بهمن 1385, 23:22 عصر
این هم یه messagedlg کاملا فارسی با امکان راست چین و caption های فارسی برای دکمه ها

این تابع را به یک فرم در قسمت public اضافه کنید و هر جا خواستید استفاده کنید

Farsi message Dialog ------------------------------------

function msgdlg(CONST Msg:string; DlgTypt:TmsgDlgType;
button:TMsgDlgButtons; Caption:ARRAY OF string;dlgcaption:string): integer;
var
aMsgdlg:TForm;
i:integer;
Dlgbutton:Tbutton;
Captionindex:integer;
begin
amsgdlg:= createMessageDialog(Msg,DlgTypt,button);
aMsgdlg.Caption:=dlgcaption;
aMsgdlg.BiDiMode:=bdRightToLeft;
Captionindex:=0;
for i:= 0 to amsgDlg.componentcount-1 Do
begin
if(amsgDlg.components[i] is Tbutton) then
Begin
dlgbutton:=Tbutton(amsgdlg.components[i]);
if Captionindex <= High(Caption) then
dlgbutton.caption:=caption[captionindex];
inc(captionindex);
end;
end;
Result:=amsgdlg.Showmodal;
end;---------------------------------------------------

vcldeveloper
چهارشنبه 18 بهمن 1385, 07:56 صبح
لطفا کدهایی رو که می نویسید در تگ CODE قرار بدید تا درست خونده بشند. مرسی