PDA

View Full Version : حرفه ای: مسیج باکس با تعیین فونت دلخواه



SayeyeZohor
جمعه 13 اردیبهشت 1392, 13:51 عصر
با سلام خدمت دوستان
من یک فانکشن برای مسیج باکس نوشتم که بتونیم تععین کنیم فونت مسیج باکس چی باشه
اما یک مشکل کوچولو:
این که
1 : wordwrap نداره
2- سایز فرمش کوچکتر از فرم MessageDLG میشه

NewMessageDlg
103630

MessageDlg
103631

اینم کدم:

FUNCTION MessageDlgPosSetFont(const Msg: string; DlgType: TMsgDlgType;
Buttons: TMsgDlgButtons; HelpCtx: Longint;
X, Y: Integer;
sFontName: string; iFontSize: Integer; FsStyle: TFontStyles): Integer;
BEGIN
with CreateMessageDialog(Msg, DlgType, Buttons) do
try
HelpContext := HelpCtx;
if X >= 0 then Left := X;
if Y >= 0 then Top := Y;
if (Y < 0) and (X < 0) then Position := poScreenCenter;
// set the font name, size and style
Font.Name:=sFontName;
Font.Size:=iFontSize;
Font.Style:=fsStyle;
Result := ShowModal;
finally
Free;
end;
END;

FUNCTION NewMessageDlg(const Msg: string; DlgType: TMsgDlgType;
Buttons: TMsgDlgButtons; HelpCtx: Longint): Integer;
BEGIN
MessageDlgPosSetFont(Msg, DlgType, Buttons, HelpCtx, -1, -1, 'Tahoma', 8, []);
END;


با خاصیت width میتونم فرمش رو بزرگتر کنم ولی MessageDlg پیش فرضش این شکلیه

یوسف زالی
جمعه 13 اردیبهشت 1392, 15:36 عصر
سلام.
در تعریف CreateMessageDialog می خونیم:


TMessageForm(Result).Message := TLabel.Create(Result);
with TMessageForm(Result).Message do
begin
Name := 'Message';
Parent := Result;
WordWrap := True;
Caption := Msg;
BoundsRect := TextRect;
BiDiMode := Result.BiDiMode;
ALeft := IconTextWidth - TextRect.Right + HorzMargin;
if UseRightToLeftAlignment then
ALeft := Result.ClientWidth - ALeft - Width;
SetBounds(ALeft, VertMargin,
TextRect.Right, TextRect.Bottom);
end;


خب دیگه حله؟

راستی اون شکلی فرستادن فونت اصلا به صرفه نیست.
یک شی فونت بفرست و تمام.

در مورد HelpContext کمی توضیح می دی واسه چی می خوایش؟

MohsenB
جمعه 13 اردیبهشت 1392, 15:44 عصر
سلام

یه کدی قبلا گذاشته بودم رو سایت (http://barnamenevis.org/showthread.php?374916-MessageBox-%D9%81%D8%A7%D8%B1%D8%B3%DB%8C&p=1656131&viewfull=1#post1656131) ، از اون استفاده کنید و هر طوری که میخواید تغییرش بدید .


موفق باشید