PDA

View Full Version : تغيير اندازه برنامه



Mr_Mahmoud
شنبه 07 شهریور 1388, 21:00 عصر
سلام
ميخاستم ببينم برا اينكه برنامه تو مانيتورهاي با اندازه هاي متفاوت يكسان نشون داده بشه بايد چه كنيم؟دوستان گفته بودن از دستورscaleby استفاده كنيم ولي نشد.چون من برنامم به صورت تمام صفحه هست به مشكل ميخوره
ممنون

جواد ملاولی
یک شنبه 08 شهریور 1388, 00:13 صبح
سلام. اگه می خوای از یه رزولوشن ثابت استفاده کنی، یا باید رزولوشن مانیتور رو به مقدار دلخواه خودت تغییر بدی (که البته ممکنه کاربر از این کارت خیلی خوشش نیاد) و یا باید بی خیال تمام صفحه بودن برنامه ات بشی.
ولی راه سوم و بهتر اینه که برنامه ات تمام صفحه باشه و خاصیتهای Align و Anchor رو تنظیم کنی که اشیاء فرمهات بهم نریزن.

K.Mohammadreza
یک شنبه 08 شهریور 1388, 06:52 صبح
به نظر من اول برنامه را روي ريزولوشن پايين طراحي کن و در مانيتورهاي ديگه با تابع زير ميتوني مانيتور را به ريزولوشن مورد نظر سويچ کني و اگر قبل از اجراي برنامه تنظيمات مانيتور را در يک فايل ini ذخيره کني و بعد از خروج از برنامه ميتوني تنظيمات مانيتور را به حالت اوليه برگردوني



procedure TfrmLogin.ChangeDisSetting(ResX, ResY, Frequnce, BitPiexl: DWord);
var
cnt: Integer;
DevMode : TDevMode;
lDeviceMode: TDeviceMode;
FoundRsF85, FoundRsF60: Boolean;
begin
cnt := 0; FoundRsF85 := False; FoundRsF60 := False;
while EnumDisplaySettings(nil, cnt, DevMode) do
begin
with Devmode do
if(Format('%dx%d %d Colors %d', [ResX, ResY, Int64(1) shl BitPiexl, Frequnce])=
(Format('%dx%d %d Colors %d', [dmPelsWidth, dmPelsHeight, Int64(1) shl
dmBitsperPel, dmDisplayFrequency]))) then
begin
FoundRsF85 := True;
Break;
end;
Inc(cnt) ;
end;
if FoundRsF85 then
begin
if EnumDisplaySettings(nil, cnt, lDeviceMode) then
ChangeDisplaySettings(lDeviceMode, CDS_UPDATEREGISTRY) ;
SendMessage(HWND_BROADCAST, WM_DISPLAYCHANGE, SPI_SETNONCLIENTMETRICS,0) ;
end
else
begin
Frequnce := 60; cnt := 0;
while EnumDisplaySettings(nil, cnt, DevMode) do
begin
with Devmode do
if(Format('%dx%d %d Colors %d', [ResX, ResY, Int64(1) shl BitPiexl, Frequnce])=
(Format('%dx%d %d Colors %d', [dmPelsWidth, dmPelsHeight, Int64(1) shl
dmBitsperPel, dmDisplayFrequency]))) then
begin
FoundRsF60 := True;
Break;
end;
Inc(cnt) ;
end;
if FoundRsF60 then
begin
if EnumDisplaySettings(nil, cnt, lDeviceMode) then
ChangeDisplaySettings(lDeviceMode, CDS_UPDATEREGISTRY) ;
SendMessage(HWND_BROADCAST, WM_DISPLAYCHANGE, SPI_SETNONCLIENTMETRICS,0) ;
end
else
begin
MessageDlg('مانيتور يا کارت گرافيک شما براي اجراي برنامه ' +
'مناسب نيست', mtError, [mbOk], 0);
Application.Terminate;
end;
end;
end;

Mr_Mahmoud
یک شنبه 08 شهریور 1388, 12:07 عصر
ولی راه سوم و بهتر اینه که برنامه ات تمام صفحه باشه و خاصیتهای Align و Anchor رو تنظیم کنی که اشیاء فرمهات بهم نریزن.
میشه بیشتر توضیح بدین؟

به نظر من اول برنامه را روي ريزولوشن پايين طراحي کن و در مانيتورهاي ديگه با تابع زير ميتوني مانيتور را به ريزولوشن مورد نظر سويچ کني و اگر قبل از اجراي برنامه تنظيمات مانيتور را در يک فايل ini ذخيره کني و بعد از خروج از برنامه ميتوني تنظيمات مانيتور را به حالت اوليه برگردوني

ممنون ولی من برنامم رو ساختم و الان برای اجراش تو مانیتورهای کوچک مشکل دارم

Mahmood_M
یک شنبه 08 شهریور 1388, 15:06 عصر
معمولا بهتره که برنامه در اندازه ی 800 در 600 طراحی بشه و امکان بزرگ تر شدن وجود داشته باشه ...
یعنی حداقل اندازه ی برنامه 800 در 600 باشه ...

به نظر من اول برنامه را روي ريزولوشن پايين طراحي کن و در مانيتورهاي ديگه با تابع زير ميتوني مانيتور را به ريزولوشن مورد نظر سويچ کني و اگر قبل از اجراي برنامه تنظيمات مانيتور را در يک فايل ini ذخيره کني و بعد از خروج از برنامه ميتوني تنظيمات مانيتور را به حالت اوليه برگردوني
نکته ی مهم اینه که ممکنه ، کاربر بخواد در هنگام استفاده از نرم افزار دوستمون ، از یک نرم افزار دیگه هم استفاده کنه و این برای کاربر مشکل ایجاد می کنه ...

موفق باشید ...

K.Mohammadreza
یک شنبه 08 شهریور 1388, 16:00 عصر
در کل تنظيم تمام اشيا (منظورم تنظيم align, anchor) کار بسيار سختيه و در مواردي ممکنه که بعضي از اشياء فرم ديده نشوند

Mr_Mahmoud
یک شنبه 08 شهریور 1388, 22:19 عصر
در کل تنظيم تمام اشيا (منظورم تنظيم align, anchor) کار بسيار سختيه و در مواردي ممکنه که بعضي از اشياء فرم ديده نشوند

خب پس الان من چه كار كنم؟
من برنامم رو تو 1024*768 ساختم ولي كامپيوتر مقصدم 800*600 بايد چه كنم؟

Mahmood_M
دوشنبه 09 شهریور 1388, 05:22 صبح
باید برنامه رو در اندازه ی 800 در 600 بسازید و یا این که به کاربر بگید که رزولوشن 1024 در 768 تهیه کنه !
درضمن ، تغییر خصویات Align و Anchors از کارهای عادی در ساخت یک نرم افزار هست و کار سخت یا وقت گیری هم نیست ...