Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Смена разрешения Экрана! [D7]


Golikov ©   (2007-02-10 17:32:00) 

Здрасте! подскажите кто знает!
если я запускаю свою програму при разрешении экрана 1280*1024(при котором програма создавалась) усе нармуль,а если меняю например на 1024*768 то формочки то остаются такими как при разрешении 1280*1024 (т.е. большие получаются на весь экран).
какое свойство надо изменять у формы при смене разрешения?
а если на форме 10,20,..........N- объектов ? неужели надо будет менять каждый объект ?
ткните Носом!


Alexdeil   (2007-02-11 16:35:00) [1]

Посмотрите этот модуль (Автор: Andrey Kozlov )

unit scale;
{Дополнение

Модуль, масштабирующий компоненты вне зависимости от разрешения экрана и ширины границ окон. Включите нижеследующий модуль в секцию uses каждого модуля и вызывайте ScaleForm в обработчике формы OnCreate, передавая в качестве параметра имя формы. Я надеюсь что помог тем, кто столкнулся с данной проблемой.
}

interface

uses
 Forms, WinTypes, WinProcs, SysUtils;

procedure ScaleForm(Sender: TObject);

implementation

procedure ScaleForm(Sender: TObject);

const

 {измените это так, чтобы это соответствовало
 режиму разрешения во время разработки - я разрабатывал мою форму в режиме 800x600.}

 DesignScrY: LongInt = 600;//480;
 DesignScrX: LongInt = 800;//640;
 DesignBorder: LongInt = 4; {значение в Панели Управления + 1}

var

 SystemScrY: LongInt;
 SystemScrX: LongInt;
 SystemBorder: LongInt;
 OldHeight: LongInt;
 OldWidth: LongInt;

begin

 SystemScrY := GetSystemMetrics(SM_CYSCREEN);
 SystemScrX := GetSystemMetrics(SM_CXSCREEN);
 SystemBorder := GetSystemMetrics(SM_CYFRAME);
 with Sender as TForm do
 begin
   Scaled := True;
   AutoScroll := False;
   Top := Top * SystemScrX div DesignScrX;
   Left := Left * SystemScrX div DesignScrX;
   OldHeight := Height + (DesignBorder - SystemBorder) * 2;
   OldWidth := Width + (DesignBorder - SystemBorder) * 2;
   ScaleBy((OldWidth * SystemScrX div DesignScrX - SystemBorder * 2),
     (OldWidth - DesignBorder * 2));
   {
   Для форм не имеющих границ измените предшествующие
   три строки следующим способом:

   OldHeight := Height;
   OldWidth  := Width;
   ScaleBy(SystemScrX, DesignScrX);
   }

   Height := OldHeight * SystemScrY div DesignScrY;
   Width := OldWidth * SystemScrX div DesignScrX;
 end;
end;

begin
end.


iXT   (2007-02-11 11:50:00) [2]


> Смена разрешения Экрана!

ИМХО
Это пользовательское право. Его трогать низя. А таких кто трогает, надо расстреливать.


> golikov ©   (10.02.07 18:35) [11]
> Kolan
> ну приведи пример!.

Ну какой пример? Возьми, набросай на форму всякой всячины, и поиграйся с вышеупомянутыми свойствами.


Kolan   (2007-02-10 18:51:00) [3]

Лично я при разработке обычно делаю доваольно маленькую форму, тк её удобно редактировать(Все видно). А так как она «резиновая» то какой разрешение у пользователя ессно все равно.


Kolan   (2007-02-10 18:49:00) [4]

«ну приведи пример!.»

Пример:
Допустим у тебя есть форма а на ней РичЭдит.
Ты хочешь чтобы он был в верхней части формы и при растягивании растягивался по ширине вместе с формой. А по высоте остался такимже.

Значит выставляешь у рич Эдита св-ва Anchors: Left, Top, Right — True, Bottom — False;
Запускаешь — растягиваешь форму радуешься…


vasIZmax   (2007-02-10 18:39:00) [5]


> Kolan ©   (10.02.07 18:32) [9]

согласен. точнее не исключено.
но для этого надо ж знать

> Kolan ©   (10.02.07 18:31) [8]
> Align, Anchors, TSeparator…


ЗЫ. :)


golikov   (2007-02-10 18:35:00) [6]

Kolan
ну приведи пример!.


vasIZmax   (2007-02-10 18:34:00) [7]

по 1.
разрабатывай форму при разрешении 800*600. а потом бордерстайл=нон.
или как вариант с самого начала зафиксируй форму, и работай.
по 2. много писанины.
> надо будет менять каждый объект
. и записывай их в какой-нить файл. а потом в зависимости от определенного разрешения применяешь необходимые параметры для каждого объекта.
ЗЫ. но это чисто предположения начинающего. по поводу 2-го - я проект себе так делал. Заморочно, но выход.:)


Kolan   (2007-02-10 18:32:00) [8]

Делается за 10 минут.


Kolan   (2007-02-10 18:31:00) [9]

«[7] golikov ©   (10.02.07 18:21)

> 1. сделай форму 800*600 и фиксани размеры.2. определяешь

> разрешение экрана. потом для каждой кнопки пусть читаются

> из файла ее параметры(положение, шрифт…).

а подробней плиз…»


Успокойтесь, надо сделать «резиновый» интерфейс. Для этого нужно: Align, Anchors, TSeparator…


golikov   (2007-02-10 18:21:00) [10]


> 1. сделай форму 800*600 и фиксани размеры.2. определяешь
> разрешение экрана. потом для каждой кнопки пусть читаются
> из файла ее параметры(положение, шрифт...).

а подробней плиз..............


vasIZmax   (2007-02-10 18:14:00) [11]


> golikov ©   (10.02.07 18:04) [5]

1. сделай форму 800*600 и фиксани размеры.
2. определяешь разрешение экрана. потом для каждой кнопки пусть читаются из файла ее параметры(положение, шрифт...).


golikov   (2007-02-10 18:04:00) [12]

и какой тогда выход ?


Desdechado   (2007-02-10 18:01:00) [13]

Т.е. кнопки увеличивались в размерах сами?
А если контрол неможет быть отмасштабирован?
А шрифтам куда деваться?


golikov   (2007-02-10 18:00:00) [14]

????????????????


golikov   (2007-02-10 17:38:00) [15]

чтоб форма и все компоненты на форме подстраивались по текущее разрешение!
как это реализовывается ?


Desdechado   (2007-02-10 17:35:00) [16]

> какое свойство надо изменять у формы при смене разрешения?
А что тебе надобно, старче?


Наверх

Титульная страница Поиск, карта сайта Написать письмо