![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Смена разрешения Экрана! [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]> какое свойство надо изменять у формы при смене разрешения?
А что тебе надобно, старче?