Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.11.28;
Скачать: [xml.tar.bz2];

Вниз

Как узнать количество PixelsPerInch?   Найти похожие ветки 

 
46_55_41_44 ©   (2004-11-12 13:34) [0]

Как узнать это программно? У меня например разрешение экрана 1280х1024. (В ручную можно узнать нажав на кнопке Advanced - Font size: Small fonts, Large fonts, Other...  В моем случае Small fonts - Normal size 96 dpi)...
Как можно узнать это программно?

Заранее спасибо за любую помощь!!!


 
Юрий Зотов ©   (2004-11-12 13:43) [1]

Screen.PixelsPerInch
GetDeviceCaps


 
46_55_41_44 ©   (2004-11-12 14:04) [2]

Спасибо...
Можно ли сделать, чтобы при изменении разрешения экрана размер форм масштабировался автоматически?


 
46_55_41_44 ©   (2004-11-12 14:09) [3]

То есть, чтобы скажем если поменять разрешение с 1280х1024 на 1024х768, чтобы размеры формы поменялись автоматически?


 
uny ©   (2004-11-12 14:13) [4]

if screen.width=1024 then form1.width:=сколько надо


 
Юрий Зотов ©   (2004-11-12 14:18) [5]

Вообще-то, если Вы ничего не трогали, то форма и так должна масштабироваться сама. Но можно и обрабатывать WM_SETTINGCHANGE.


 
46_55_41_44 ©   (2004-11-12 14:43) [6]

>Юрий Зотов ©   (12.11.04 14:18) [5]

Проблема вообще-то в том, если например перенести программку на комп с меньшим dpi формы занимающие не очень много места - занимают половину экрана - можно-ли этого как-то избежать?


 
Юрий Зотов ©   (2004-11-12 14:52) [7]

> 46_55_41_44 © (12.11.04 14:43) [6]

Есть событие OnCreate. Что мешает задавать в нем размеры формы, ориентируясь на установки экрана?


 
46_55_41_44 ©   (2004-11-12 15:06) [8]

MyForm.PixelsPerInch := Screen.PixelsPerInch;

вот это я прописал... Хотя не знаю на сколько правильно и будет ли работать..

Да кстати...
> Юрий Зотов ©   (12.11.04 14:18) [5]
Я ничего не трогал, но все же -
Если поменять разрешение ничего автоматически не меняется... и не должно помоему... А указывать всем компонентам формы width и height волокита, что если этих компенент сотни. Можно-ли автоматизировать этот процесс...
Я щас посмотрю, что можно сделать с помощью
WM_SETTINGCHANGE. А вы советуйте пожалуйста... что можно сделать...
Еще раз спасибо за сотрудничество! :)


 
Юрий Зотов ©   (2004-11-12 15:14) [9]

> 46_55_41_44 ©   (12.11.04 15:06) [8]

> MyForm.PixelsPerInch := Screen.PixelsPerInch;
Не нужно этого. Тем самым Вы как раз мешаете формы автомасштабироваться.

> А указывать всем компонентам формы width и height волокита,
> что если этих компенент сотни.

Существуют Align, Anchors, Constraints и TPanel. Нужно добиться того, чтобы при ручном ресайзе формы в design-time она всегда имела нормальный вид. После этого останется только привязать ее размеры к размеру экрана (в OnCreate), а отслеживать динамику можно в обработчике WM_SETTINGCHANGE.


 
46_55_41_44 ©   (2004-11-12 15:18) [10]

а отслеживать динамику можно в обработчике WM_SETTINGCHANGE
До этой части все так как вы написали...
Можно пример WM_SETTINGCHANGE... честно говоря у меня проблемы с Message... не пользовался... небольшой примерчик... дальше сам сделаю!


 
46_55_41_44 ©   (2004-11-12 15:21) [11]

И еще...
насколько я понял WM_WININICHANGE = WM_SETTINGCHANGE...
Я нашел такую функцию Application.UpdateFormatSettings...
Но она не делает того, что надо...


 
Юрий Зотов ©   (2004-11-12 15:49) [12]

> 46_55_41_44 ©   (12.11.04 15:18) [10]

type
 TForm1 = class(TForm)
   ...
 private
   procedure WMSettingChange(var Message: TMessage); message WM_SETTINGCHANGE;
   ...
 end;

procedure TForm1.WMSettingChange(var Message: TMessage);
begin
 inherited;
 ... // Делаем, что нужно.
end;


 
46_55_41_44 ©   (2004-11-12 16:10) [13]

>Юрий Зотов ©   (12.11.04 15:49)
Сделал что было написано в [12]
Вставил туда всего-лишь ShowMessage("OK") чтобы удостовериться, что компилятор срабатывает и прыгает :) в эту процедурку... Но сколько я не меняю параметры экрана ничего не происходит...


 
46_55_41_44 ©   (2004-11-12 16:13) [14]

Почему???


 
Amoeba ©   (2004-11-12 16:13) [15]


> 46_55_41_44 ©   (12.11.04 16:10) [13]

В таком случае "код в студию!"


 
46_55_41_44 ©   (2004-11-12 16:37) [16]

private
   { Private declarations }
   procedure WMSettingChange(var Message: TMessage); message WM_SETTINGCHANGE;
.....

procedure TMainForm.WMSettingChange(var Message: TMessage);
begin
 inherited;
 showmessage("ok");
end;

.........


 
grom   (2004-11-12 19:55) [17]

private{Private declarations}
 procedure WMDISPLAYCHANGE(var Msg: TWMDISPLAYCHANGE);message WM_DISPLAYCHANGE;

procedure TForm1.WMDISPLAYCHANGE(var Msg: TWMDISPLAYCHANGE);//*
begin
Caption :=IntToStr(Msg.Height);
end;
попробуй так



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.11.28;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.039 c
4-1097749426
Jetus
2004-10-14 14:23
2004.11.28
Послать сообщение другой программе


6-1095849884
Cherepovets
2004-09-22 14:44
2004.11.28
Организация копирование по сети


14-1100094473
}|{yk
2004-11-10 16:47
2004.11.28
Ааааааааааааааааа! Наконец-то стали известны результаты выборов!


1-1099953946
xmrz
2004-11-09 01:45
2004.11.28
Delphi и Corel Draw


3-1099032577
Miss
2004-10-29 10:49
2004.11.28
TUpdateSQL





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский