Текущий архив: 2004.11.28;
Скачать: CL | DM;
ВнизКак узнать количество 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;
Скачать: CL | DM;
Память: 0.48 MB
Время: 0.04 c