Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Опять масштабирование формы, Помогите подправить код если возможно 
V
    Опции темы
RN3QGA
Дата 26.2.2006, 20:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 28.11.2005
Где: Воронежская обл.

Репутация: нет
Всего: нет



Здравствуйте.
Попался мне код для масштабирования при различном разрешении экрана.

Код

unit Main;
interface
uses
 Windows, Messages, SysUtils, Classes, Graphics,
 Controls, Forms, Dialogs, StdCtrls;
type
 TForm1 = class(TForm)
   Button1: TButton;
   Edit1: TEdit;
   procedure Button1Click(Sender: TObject);
   procedure FormCreate(Sender: TObject);
 private
   { Private declarations }
     procedure WMDisplayChange(var message: TMessage); message WM_DISPLAYCHANGE;
 public
   { Public declarations }
   W, H: integer;
 end;
var
 Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
begin
 Width := Round(Width * 1.5);
 Height := Round(Height* 1.5);
 ScaleBy(150, 100)
end;
procedure TForm1.WMDisplayChange(var message: TMessage);
begin
 inherited;
 Width := Round(Width * LOWORD(message.LParam) / W);
 Height := Round(Height * HIWORD(message.LParam) / H);
 ScaleBy(LOWORD(message.LParam), W);
 W := Screen.Width;
 H := Screen.Height;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
 W := Screen.Width;
 H := Screen.Height;
end;
end.


По нажатии на Buuton1 происходит увеличение размера формы и элементов на ней.
Но я не могу до конца разобраться (ну не хватает тямушки пока) как тут что работает.
Не моглибы мне пояснить ну хоть комментариями.
Я хочу использовать этот код и для увеличения размера и для уменьшения. Как это сделать ???
Спасибо большое за помощь буду безмерно благодарен.
PM MAIL   Вверх
Guedda
Дата 26.2.2006, 21:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

Репутация: 14
Всего: 78



Вот те комменты к строкам:
Код

unit Main;
interface
uses
 Windows, Messages, SysUtils, Classes, Graphics,
 Controls, Forms, Dialogs, StdCtrls;
type
 TForm1 = class(TForm)
   Button1: TButton;
   Edit1: TEdit;
   procedure Button1Click(Sender: TObject);
   procedure FormCreate(Sender: TObject);
 private
   { Private declarations }
     procedure WMDisplayChange(var message: TMessage); message WM_DISPLAYCHANGE;
 public
   { Public declarations }
   W, H: integer;
 end;
var
 Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
begin
 Width := Round(Width * 1.5);  //Увеличивает размер практически в 1,5 раза
 Height := Round(Height* 1.5); //Тоже самое
 ScaleBy(150, 100)
end;
procedure TForm1.WMDisplayChange(var message: TMessage);
//процедура отлавливает сообщения об изменении разрешения
begin
 inherited;
 Width := Round(Width * LOWORD(message.LParam) / W); //здесь меняется ширина формы
 Height := Round(Height * HIWORD(message.LParam) / H); //здесь высота
 ScaleBy(LOWORD(message.LParam), W);
 W := Screen.Width;
 H := Screen.Height;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
 W := Screen.Width;
 H := Screen.Height;
end;
end.




--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
RN3QGA
Дата 27.2.2006, 18:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 28.11.2005
Где: Воронежская обл.

Репутация: нет
Всего: нет



Доброго времени суток.
Так чегото я этот код мучал, мучал и знаки мменял и множители и делил.
Так и не добился нормального измененияв сторону уменьшения и увеличения формы и компонентомв на ней. Может кто подскажет как сделать такое.
Заранее благодарен. smile

PM MAIL   Вверх
Guedda
Дата 27.2.2006, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

Репутация: 14
Всего: 78



Что именно ты хочешь?


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
RN3QGA
Дата 28.2.2006, 12:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 28.11.2005
Где: Воронежская обл.

Репутация: нет
Всего: нет



Добрый день.
Да собственно хочу чтобы при нажатии на кнопочку происходило масштабирование формы.
Для каждого элемента на форме прописывать изменение размеров довольно трудоемко, вот думал может с помощью этого кода можно.
Получаетчся, что при нажатии вродебы размер меняется но вот пропорциональности не получается все время либо вылетает за область, либо наооборот уменьшается до микроскопического.
Я пробывал менять знак умножения на деление и множитель с делителем, но чтото не получается.
Может есть более грамотное решение этого вопроса.
Спасибо.

PM MAIL   Вверх
RN3QGA
Дата 1.3.2006, 15:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 28.11.2005
Где: Воронежская обл.

Репутация: нет
Всего: нет



Все, вопрос решен.
Спасибо всем. smile
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0650 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.