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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Привязка компонентов к форме, увеличение(уменьшение) пропорц. форме 
:(
    Опции темы
Aaabb
Дата 18.11.2009, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 7.11.2009

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



Как привязать компоненты, находящиеся на форме, к форме, то есть если приложение будет запущено на компьютере с разрешением монитора отличным от того на котором оно разрабатывалось, чтобы компоненты увеличились или уменьшились пропорционально формы ?
PM MAIL   Вверх
Keeper89
Дата 18.11.2009, 22:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Aaabb, если у вас новые версии Delphi (2006 и выше), там есть TFlowPanel и TGridPanel. иначе - вручную.

Добавлено через 1 минуту и 44 секунды
А вообще, гляньте св-во Align - может и оно сгодится.


--------------------
PM MAIL WWW   Вверх
Aaabb
Дата 18.11.2009, 22:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 7.11.2009

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



А если вручную, то как?
PM MAIL   Вверх
Frees
Дата 18.11.2009, 22:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

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



свойство Anchor посмотри


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
Aaabb
Дата 18.11.2009, 23:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 7.11.2009

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



Установила свойства компонентов Button и Memo Align=AlNone, Anchor=[akLeft,akTop].  В Events ИО и активизировала событие OnResize.  
Что дальше? В задании написано: Используя свойства формы ClientWidth , ClientHeight , а также свойства компонентов Button и Memo – Left , Top , Width, Height добейтесь, чтобы обработчик обеспечивал пропорциональное воспроизведение и привязку компонентов формы в нормальном и максимизированном состояниях. Как это сделать???
Помогите пожалуйста кто чем может, срочно нужно лабораторку сдать.
PM MAIL   Вверх
Christoph
Дата 19.11.2009, 01:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 667
Регистрация: 23.1.2008
Где: Харьков

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



FormCanResize 
Находить разницу до ресайза и после, и настолько же увеличить высоту ширину контрола


--------------------
user posted image
PM MAIL ICQ   Вверх
kami
Дата 19.11.2009, 01:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Для конкретики возьмем TButton. Вырезки из кода (пишу в браузере, могут быть синтаксические ошибки, но это не главное - важна идея).

Код

TMyForm=class(TForm)
  Button1:TButton;
private
  FLeftScale, FWidthScale: double;
  FTopScale, FHeightScale: double;
public
end;
//============
implementation
//============

procedure TMyForm.FormCreate(Sender:TObject);
begin
  // определяем коэффициенты масштабирования
  // положения кнопки
  FLeftScale:= Button1.Left/ClientWidth;
  FTopScale:=Button1.Top/ClientHeight;
  // и ее габаритов (пользоваться одними и теми же нельзя, бо будет непропорционально)
  FWidthScale:=Button1.Width/ClientWidth;
  FHeightScale:=Button1.Height/ClientHeight;
end;


procedure TMyForm.FormResize(...);
begin
  // и по завершению изменения размеров формы
  // в соответствии с ранее установленными коэффициентами
  // задаем новое положение и размеры кнопке.
  Button1.Left:=Round(ClientWidth*FLeftScale);
  Button1.Top:=Round(ClientHeight*FTopScale);
  Button1.Width:=Round(ClientWidth*FWidthScale);
  Button1.Height:=Round(ClientHeight*FHeightScale);
end;

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


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 7.11.2009

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



kami, спасибо большое!!!! Всё получилось!

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.0893 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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