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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.11.2014, 11:54   #1
exyl
Пользователь
 
Регистрация: 15.11.2014
Сообщений: 75
По умолчанию Координаты формы при запуске

Делфист из меня так себе, поэтому могу запросто чего-то не понимать. Столкнулся с неприятной (для меня) вещью. При старте программы, конкретно, в файле проекта (project->view source) после создания форм вписана процедура инициализации глобальных переменных из отдельного модуля. Там кроме всего прочего в поля одной структуры заносятся данные, среди них положение формы. Изначально (в дизайн тайме) ее position установлена в poScreenCenter, и значения Top и Left имеют нулевые значения. Но мне (почему-то) казалось, что при запуске там будут текущие координаты на экране, просчитываемые исходя из установки (poScreenCenter). Ан нет. Нули так и остаются до первого перемещения формы по экрану. Написать свою функцию расчета положения формы по центру экрана при старте мне труда никакого не составляет, но странно это. Зачем установка этого свойства устанавливает координаты формы в ноль? Где смысл?
exyl вне форума Ответить с цитированием
Старый 25.11.2014, 12:08   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Не понял что смутило...
В дизайне у тебя координаты в нуле, но выставлено poScreenCenter, так?
Тогда проблем нет - координаты высчитаются самостоятельно когда форма появится на экране, и программа разместит ее по центру.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.11.2014, 12:13   #3
exyl
Пользователь
 
Регистрация: 15.11.2014
Сообщений: 75
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Не понял что смутило...
В дизайне у тебя координаты в нуле, но выставлено poScreenCenter, так?
Тогда проблем нет - координаты высчитаются самостоятельно когда форма появится на экране, и программа разместит ее по центру.
Так вот и смутило, что координаты высчитываются, форма появляется по центру, но значения Top и Left формы остаются равными нулю вплоть до ее перемещения/ресайза.
exyl вне форума Ответить с цитированием
Старый 25.11.2014, 12:30   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а в каком событии вы считываете координаты?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 25.11.2014, 12:33   #5
exyl
Пользователь
 
Регистрация: 15.11.2014
Сообщений: 75
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
а в каком событии вы считываете координаты?
В первом сообщении есть:
Цитата:
(project->view source) после создания форм вписана процедура инициализации глобальных переменных из отдельного модуля. Там кроме всего прочего в поля одной структуры заносятся данные, среди них положение формы.
exyl вне форума Ответить с цитированием
Старый 25.11.2014, 12:43   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

В OnActivate прочитайте Left и Top
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 25.11.2014, 12:49   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
но значения Top и Left формы остаются равными нулю вплоть до ее перемещения/ресайза.
А ты получай координаты в событии OnShow или OnActivate. Ты видимо в OnCreate их считываешь, т.е. когда форма еще не родилась даже.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.11.2014, 13:03   #8
exyl
Пользователь
 
Регистрация: 15.11.2014
Сообщений: 75
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А ты получай координаты в событии OnShow или OnActivate. Ты видимо в OnCreate их считываешь, т.е. когда форма еще не родилась даже.
Еще раз процитирую:
Цитата:
(project->view source) после создания форм
И поясню: сначала проходят все Application.CreateForm, а потом считываются координаты. Т.е. это уже после наступления события формы OnCreate и даже после OnShow (т.к. в этом файле проекта видимость этой формы изначально установлена в тру, т.к. она главная и инициализируется первой:
Код:
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.Title:='ZZZ';
  Application.CreateForm(TForm_ZZZ, Form_ZZZ);
  Form_ZZZ.Visible:=true;
  ...
  InitVars; //процедура инициализации переменных, где и считываются значения Left/Top с формы Form_ZZZ
).
exyl вне форума Ответить с цитированием
Старый 25.11.2014, 13:26   #9
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Мало ли создана, она еще не отцентрирована, и даже не в OnShow, а именно в OnActivate. Проверить трудно?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 25.11.2014, 13:28   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Еще раз процитирую:
Ты видимо не понимаешь сам механизм визуальных форм )
Обьяснять наверное не стану, просто еще раз намекну на совет Аватара.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при запуске формы ввода на MAC OS Hoochara Microsoft Office Excel 4 14.07.2012 15:52
Проблема при запуске формы в Delphi Dissembler7 Помощь студентам 1 19.04.2012 08:00
Ошибка при запуске динамической формы Orchestroman Общие вопросы Delphi 4 24.03.2012 23:51
Изменение разрешения при запуске формы artemavd Общие вопросы Delphi 2 16.07.2009 18:48
Координаты формы при различном разрешении экрана Fataller Помощь студентам 13 28.03.2009 10:51