PDA

View Full Version : یه سوال پیش پا افتاده راجع به showmessage



oghab
جمعه 06 آبان 1384, 20:27 عصر
سلام دوستان
من اطلاعاتم از showmessage تو دلفی تقریبا 1 از 100 است
و تنها استفاده ای بلدم ازش بکنم. اینکه بنویسم


showmessage('کد مورد نظر وارد نشده است');


حالا تو همینم اشکال پیدا کردم. وقتی رشته ای میخواهم نمایش بدم از یک خط بیشتره یعنی یک خط و نیم است. چیکار کنم اون قسمتی که خودش به خط دوم منتقل می کنه و پیغام من را در دو خط نمایش میده از راست به چپ باشه؟
bdimode خود فرم را right to left کردم و لی این هنوز مشکل داره.
(اگه یک وقت لینکی در جایی سراغ دارید که در زمینه پیغام ها و دکمه هاشون (تو ویژووال بیسیک دکمه، حتی edit هم داشت دلفی هم حتما داره) آموزشی، توضیحی چیزی بده. لطف کنید و لینک را بنویسید تا برم بخونم. چون تو کتابی که من دارم هیچ اشاره ای به showmessage نکرده. اگر هم لینک سراغ ندارید هیچی. همون جواب سوالمو بدین خیلی ممنون میشم. چطور پیغامم را راست به چپ نشون بدم.)
ممنونم
موفق یاشید
التماس دعا

hr110
شنبه 07 آبان 1384, 09:38 صبح
از این ابزار فارسی شده میتوانید استفاده کنید/قبلاً در سایت وجود داشت ولی به دلیل خانه تکانی از بین رفت/

در صورتی که APPLICATION.BIDIMODE:=BDRIGHTTOLEFT; را در ابتدای پروژه استفاده کرده باشید میتوانید فرمهای نمایش کاملاً فارسی را مشاهده نمایید.

oghab
شنبه 07 آبان 1384, 10:44 صبح
سلام
ممنونم
ولی من نمی خاوهم کل فرمم فارسی بشه. بعضی قسمتهای انگلیسی هم داره. فقط می خواهم showmwssage فارسی نامیش پیدا کنه. و مثلا منواهم همون چپ به راست و file,close,help باشه
به هر حال ممنون. ولی اگه راهی واسه نامیش راست به چپ showmessage پیش پام بذارین ممنونتر می شم
موفق باشید

hr110
شنبه 07 آبان 1384, 11:11 صبح
#
#-----[ OPEN ]------------------------------------------
General.pas
#
#-----[ FIND ]------------------------------------------
#
BiDiMode := Application.BiDiMode;
#
#-----[ Replace with ]------------------------------------------
#
BiDiMode := bdLeftToRight;
#
#-----[ SAVE/CLOSE ALL FILES ]------------------------------------------
#
# EoM

:چشمک:

Naficy
یک شنبه 08 آبان 1384, 05:48 صبح
به جای showmessage از دستورات ویندوز MessageBox و .. استفاده کنید. به این توابع می شود گفت که متن را به صورت RTL نمایش دهند، ویا کل پیغام را RTL کنند.
تازگی هم دیدم یک پست درباره تغییر نام دکمه های پیغام ها داده شده که از آنهم می توانید استفاده کنید. (و انعطاف پذیری فوق العاده ای دارد)
در سایت delphi.About.com هم مقاله ای درباره پیغام ها و اضافه کردن checkbox در آنها دیدم که جالب بود. متاسفانه لینک آنرا ندارم، می توانید جستجو کنید.

oghab
یک شنبه 08 آبان 1384, 10:59 صبح
سلام
RTL یعنی چه؟
ممنونم
حتما به سایتی که معرفی کردید سر میزنم. بازم ممنون

babak869
یک شنبه 08 آبان 1384, 14:06 عصر
با سلام دوست عزیز
اگه شما میخواهید در Showmessage چند خطی بنویسید از این دستور استفاده کنید


Showmessage('Message1'+#13+'Message2'+#13+'Message 3');
or
MessageDialog('Message Comment',mtinformation,[mbOk],0);

موفق باشید

oghab
یک شنبه 08 آبان 1384, 16:37 عصر
سلام
ممنون از راهناییتون
ولی مشکل من حل نشد. چو در همان حالت نوشت showmessage معمولی هم وقتی message من طولانی بود خود دلفی بدون اینکه من بگم به چند خط مجزا تبدیل میکرد و 2 یا 3 خطی نشون میداد.
حالا من هر دو روش پیشنهادی شما را امتحان کزدم. منتها بازم message ها در سمت راست قرار میگیرن. من می خواهم چون message ام فارسی است سمت راست قرار بگیره.
راستش از کدی هم که آقای hr110 هم نوشتن سر دز نیاوردم.
این شکل را ببینید:
من می خواهم در این شکل "نظر کنید" زیر "پس این عنوان " در سمت راست قرار بگیره!
راستی چطور میشه title بالای message را از project2 به یه رشته فارسی تغییر داد؟

mzjahromi
یک شنبه 08 آبان 1384, 17:54 عصر
میتونی خودت یه فرم ShowMessage طراحی کنی اینطوری لااقل مشکلت زود حل میشه

oghab
یک شنبه 08 آبان 1384, 19:06 عصر
آخه من کلی showmessage دارم. اگه بخواهم برا هز کدوم اینکارو بکنم لا اقل بیست سی تا فرم به برنامه ام اضافه میشه!

vcldeveloper
دوشنبه 09 آبان 1384, 05:15 صبح
می تونید از CreateMessageDialog کنید:


uses Dialogs, StdCtrls, ExtCtrls;

function ShowMyMessage(const Msg : string; DlgType : TMsgDlgType; Buttons : TMsgDlgButtons) : integer;
var
MsgForm : TForm;
i : integer;
begin
Result := 0;
MsgForm := CreateMessageDialog(Msg,DlgType,Buttons);
try
with MsgForm do
begin
{Change properties of each control}
for i := 0 to ControlCount-1 do
begin
Form2.Memo1.Lines.Add(Controls[i].ClassName);
if Controls[i] is TLabel then
begin
//Change Text's properties
BiDiMode := bdRightToLeft;
Anchors := Anchors + [akRight] - [akLeft];
Font.Name := 'Arial';
end
else
if Controls[i] is TImage then
begin
//Change Icon's properties
end
else
if Controls[i] is TButton then
begin
//Change propperties of each button
end;
end; //for loop

Result := ShowModal;
end; //with MsgForm
finally
MsgForm.Free;
end; //try..finally
end;

Naficy
دوشنبه 09 آبان 1384, 06:20 صبح
RTL که پرسیده بودید به معنی راست به چپ است (RightToLeft)، و همان کاری را می کند که با تنظیم BidiMode انجام می دهید. نوشته های فارسی (بخصوص هنگامی که حاوی کلمات انگلیسی هستند) باید در وضعیت RTL نوشته شوند.
همان کاری که CTRL+SHIFT سمت راست انجام می دهد.

oghab
دوشنبه 09 آبان 1384, 11:53 صبح
سلام به همه دوستان
فکر می کنم این ساده ترین راه حل باشهو و حالا که پیداش کردم می نویسم
کافیه قبل از دستور showmessage این دستور را بنویسیم.


Application.BiDiMode:=bdRightToLeft ;

:لبخند:

با آرزوی موفقیت
------------------------
التماس دعا

mzjahromi
دوشنبه 09 آبان 1384, 12:43 عصر
نه روی فرمت یه Label بذار اونوقت برای هر Message این Label رو تنظیم کن تو فرمت هم یه تابع بنویس که این کار رو برات بکنه. Email تا یه نمونه برات بفرستم MZolghadr@faragostarIT.Com

oghab
دوشنبه 09 آبان 1384, 14:26 عصر
سلام
ممنون جناب ذوالقدر
فکر می کنم فهمیدم چی گفتی!
ولی مشکلم کاملا حل شد بهمون روشی که گفتم! و ترجیح میدم از showmessage استفاده کنم.
ممنونم
موفق باشید
-----------------
التماس دعا

babak869
دوشنبه 09 آبان 1384, 17:18 عصر
با سلام
اینو ببین شاید به کارتون بیاد.
موفق باشید