Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.09.2007, 14:52   #1
Борис2
Пользователь
 
Регистрация: 08.09.2007
Сообщений: 21
По умолчанию Подстроить размер формы под экран монитора

Как сделать так, чтобы развёрнутая на весь экран форма, и всё что находится на ней, автоматически подстраивалось (без ScrollBars) к различным размерам экранов мониторов?
Борис2 вне форума Ответить с цитированием
Старый 16.09.2007, 20:14   #2
Tayfun
Форумчанин
 
Аватар для Tayfun
 
Регистрация: 24.06.2007
Сообщений: 351
По умолчанию

Возможно взять типичные размеры мониторов типа 640*480 и т.д. Под них примерно попробовать подогнать размеры компонентов. При запуске программы узнавать разрешение монитора и присваивать компонентам ссответствующие значения.
Узнать разрешение можно так:
Эта программа отслеживает изменение характеристик экрана.
Код:
 
...
private
  procedure WMDISPLAYCHANGE(var Msg: TWMDISPLAYCHANGE);
    message WM_DISPLAYCHANGE;
...
procedure TForm1.FormCreate(Sender: TObject);
var
  bp: integer;
begin
  bp := GetDeviceCaps(GetDC(0), BITSPIXEL);
  Form1.Caption := 'Бит на точку - ' + IntToStr(bp) +
    ' (' + FloatToStr(IntPower(2, bp)) +
    ' цветов). Разрешение ';
  Form1.Caption := Form1.Caption + 
    IntToStr(GetDeviceCaps(GetDC(0), HORZRES)) + 'X';
  Form1.Caption := Form1.Caption + 
    IntToStr(GetDeviceCaps(GetDC(0), VERTRES)) + ' ';
end;
procedure TForm1.WMDISPLAYCHANGE(var Msg: TWMDISPLAYCHANGE);
var
  bp: integer;
begin
  bp := Msg.BitsPerPixel;
  Form1.Caption := 'Бит на точку - ' + IntToStr(bp) + 
    ' (' + FloatToStr(IntPower(2, bp)) + 
    ' цветов). Разрешение ';
  Form1.Caption := Form1.Caption + IntToStr(Msg.Width) + 'X';
  Form1.Caption := Form1.Caption + IntToStr(Msg.Height) + ' ';
end;
Я не маюсь бездельем, я от него тащусь!
Tayfun вне форума Ответить с цитированием
Старый 16.09.2007, 20:25   #3
OrdJONY
.NET-чик
Форумчанин
 
Аватар для OrdJONY
 
Регистрация: 24.03.2007
Сообщений: 569
По умолчанию

Есть такой модуль Forms в нем есть тип TMonitor
Код:
 Height:= Monitor.Height
 Width:= Monitor.Width
Такими простыми манипуляциями мы узнаем разрешение монитора
"Разработка под веб - как работа с пылесосом: нихрена не прикольно, но засасывает"
Мо маленький городок
OrdJONY вне форума Ответить с цитированием
Старый 17.09.2007, 11:58   #4
Борис2
Пользователь
 
Регистрация: 08.09.2007
Сообщений: 21
По умолчанию

Я понял так:
1.Нужно сделать программу под конкретный монитор (с конкретными Height1 и Width1);
2.Предусмотреть в программе определение параметров того монитора, с которым работает (на котором установлена) программа (т.е. Height2 и Width2);
3.Вычислять коэффициенты пропорциональности:
kH:=Height2/Height1; kW:=Width2/Width1;
4.Пересчитывать, используя коэффициенты kH и kW, размеры всех компонентов (HeightK и WidthK), размещённых на форме, и их положение (LeftK и TopK) на форме.
Неужели всё так сложно и громоздко?
Борис2 вне форума Ответить с цитированием
Старый 17.09.2007, 12:17   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну можно еще попробовать воспользоваться свойствами anchors у компонентов, но шрифты придется самому менять при изменении размера
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.09.2007, 13:18   #6
Andrei
Форумчанин
 
Регистрация: 20.06.2007
Сообщений: 270
По умолчанию

Можно поэксперементировать с методом формы ScaleBy. Он позволяет пропорционально менять размер формы и всех элементов, расположенных на ней. Одновременно он пытается подстроить и размеры шрифтов. В принципе, он работает, но при больших изменениях пропорций могут быть накладки по шрифту.
-Кукушка, кукушка! Накукуй мне сто лет!
-А накукуй тебе столько?

(с) Библия. Вольный перевод с древнееврейского.
Andrei вне форума Ответить с цитированием
Старый 18.09.2007, 18:48   #7
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

...или использовать свойства
screen.Width
screen.Height
_SERGEYX_ вне форума Ответить с цитированием
Старый 23.04.2010, 13:34   #8
elda
 
Регистрация: 20.12.2009
Сообщений: 7
По умолчанию

как подгонять форму к любому разрешению монитора?
elda вне форума Ответить с цитированием
Старый 23.04.2010, 13:37   #9
elda
 
Регистрация: 20.12.2009
Сообщений: 7
По умолчанию

чтобы в зависимости от разрешения экрана пользователя форма и все расположенные на ней элементы изменяли свой размер, как это сделать подскажите пожалуйста!!! Заранее спасибо!!!
elda вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
фиксированный размер формы photozaz Общие вопросы Delphi 2 02.09.2008 23:26
Подстройка формы под разрешение монитора Assassin Общие вопросы C/C++ 5 08.04.2008 18:16
Расположение и размер формы Marsik Помощь студентам 6 25.03.2008 15:14
данные о видеосистеме: тип видеоадаптера, тип монитора, режим монитора: разрешение, частота обновления WaxeP Win Api 9 15.04.2007 18:12
размер формы ar4i Общие вопросы Delphi 3 21.11.2006 15:02