PDA

View Full Version : inputbox با فونت دلخواه



fahimi
یک شنبه 07 تیر 1383, 05:24 صبح
با سلام
چگونه میشود فونت inputbox را تغییر داد

hr110
یک شنبه 07 تیر 1383, 08:35 صبح
با سلام
دوست عزیز نوشتن یک InputBox فارسی به مراتب زمان کمتری از تایپ و انتظار جواب از شما خواهد گرفت، بنابراین بهتر است که خود اقدام به نوشتن ان کنید

Mohammad S
یک شنبه 07 تیر 1383, 11:31 صبح
شما در مسیر نصب دلفی به دنبال فایل Dialogs.pas بگردید و یک نسخه از آن را در مسیر یک پروژه جدید کپی کنید. البته می توانید نام آن را هم عوض کنید. در پروژه جدید خود، نام فایل فوق را Use کنید. سپس در فایل مورد نظر تابع InputQuery را یافته و تغییرات لازم را در آن اعمال کنید. من خودم قبلا این کار را کرده ام. اگر در این سایت یک سرچ کوچولو می زدید حتما با سوال من روبرو می شدید و البته جواب هم می گرفتید.
موفق باشید 8)

JavanSoft
یک شنبه 07 تیر 1383, 13:32 عصر
/ ------------------------------------------------------------------------------
// --------------------- Simulate The Inputquery In Farsi ----------------------
// ------------------------------------------------------------------------------

function TTools.InQuery(APrompt: string; Var Value: String): Boolean;
Label
AskAgain;
var
Form: TForm;
Prompt: TLabel;
WEdit: TEdit;
DialogUnits: TPoint;
ButtonTop, ButtonWidth, ButtonHeight: Integer;
function GetAveCharSize(Canvas: TCanvas): TPoint;
var
I: Integer;
Buffer: array[0..51] of Char;
begin
for I := 0 to 25 do Buffer[I] := Chr(I + Ord('A'));
for I := 0 to 25 do Buffer[I + 26] := Chr(I + Ord('a'));
GetTextExtentPoint(Canvas.Handle, Buffer, 52, TSize(Result));
Result.X := Result.X div 52;
end;
begin
Result := False;
Form := TForm.Create(Application);
with Form do
try
Font.Name:='Tahoma';
Font.Size:=9;
Font.Charset:=ARABIC_CHARSET;
Canvas.Font := Font;
DialogUnits := GetAveCharSize(Canvas);
BorderStyle := bsDialog;
Caption := 'سوال';
ClientWidth := MulDiv(180, DialogUnits.X, 4);
Position := poScreenCenter;
BiDiMode:=bdRightToLeft;

Prompt := TLabel.Create(Form);
with Prompt do
begin
Parent := Form;
ParentBiDiMode:=True;
ParentFont:=True;
Caption := APrompt;
Left := MulDiv(8, DialogUnits.X, 4);
Top := MulDiv(8, DialogUnits.Y, 8);
Constraints.MaxWidth := MulDiv(164, DialogUnits.X, 4);
WordWrap := True;
BiDiMode:=bdRightToLeft;
end;
WEdit := TEdit.Create(Form);
with WEdit do
begin
Parent := Form;
ParentBiDiMode:=True;
ParentFont:=True;
Left := Prompt.Left;
Top := Prompt.Top + Prompt.Height + 5;
Width := MulDiv(164, DialogUnits.X, 4);
MaxLength := 255;
Text := Copy(Value,1,255);
SelectAll;
end;
ButtonTop := WEdit.Top + WEdit.Height + 15;
ButtonWidth := MulDiv(50, DialogUnits.X, 4);
ButtonHeight := MulDiv(14, DialogUnits.Y, 8);
with TButton.Create(Form) do
begin
Parent := Form;
ParentBiDiMode:=True;
ParentFont:=True;
Caption := 'قبول';
ModalResult := mrOk;
Default := True;
SetBounds(MulDiv(38, DialogUnits.X, 4), ButtonTop, ButtonWidth,
ButtonHeight);
end;
with TButton.Create(Form) do
begin
Parent := Form;
ParentBiDiMode:=True;
ParentFont:=True;
Caption := 'انصراف';
ModalResult := mrCancel;
Cancel := True;
SetBounds(MulDiv(92, DialogUnits.X, 4), WEdit.Top + WEdit.Height + 15,
ButtonWidth, ButtonHeight);
Form.ClientHeight := Top + Height + 13;
end;
LoadKeyboardLayout('00000429', 1) ;
AskAgain :
if ShowModal = mrOk then
begin
If WEdit.Text='' Then
Goto AskAgain;
Value := WEdit.Text;
Result := True;
end;
finally
Form.Free;
end;
end;