Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Delphi - Расположени формы на экране (Delphi)

Ответить
Настройки темы
Delphi - Расположени формы на экране (Delphi)

Аватара для fossil

Ветеран


Сообщения: 637
Благодарности: 20


Конфигурация

Профиль | Сайт | Отправить PM | Цитировать


Изменения
Автор: fossil
Дата: 18-12-2004
Привет! Я хочу чтобы моя форма всегда висела над трее и прилипала к нему. Как сделать так чтобы при разных разрешениях экрана форма оставалась на том же месте? (Разработчики Delphi предусмотрели только по дефолту и по центру, вот сволочи ). В инете ничего подобного не нашел.

Отправлено: 19:13, 18-12-2004

 

Аватара для Netscaper

Пользователь


Сообщения: 84
Благодарности: 0

Профиль | Отправить PM | Цитировать


То есть как? Отлавливаешь WM_DISPLAYCHANGE, в зависимости от разрешения меняешь положение...
Простой пример:
Код: Выделить весь код
...
type TForm1 = ...
  procedure DisplayResChange(var Message : TMessage); message WM_DISPLAYCHANGE;
...

implementation

procedure TForm1.FormCreate(Sender: TObject);
begin
  Left := Screen.Width - Width - 1;
  Top := 0;
end;

procedure TForm1.DisplayResChange(var Message : TMessage);
var NewWidth, NewHeight : Word;
begin
  NewWidth := Message.LParamLo;
  NewHeight := Message.LParamHi;
  Left := NewWidth - Width - 1;
  Top := 0;
  inherited;
end;
При создании окно переносится в правый верхний угол. При изменении разрешения экрана - смещается на нужное место.

Отправлено: 00:12, 19-12-2004 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для fossil

Ветеран


Сообщения: 637
Благодарности: 20

Профиль | Сайт | Отправить PM | Цитировать


Netscaper
Хм... спасибо конечно, но хотелось бы другой вариант...
Мне бы лучше подошел вариант когда прога определяет расширение, и в зависимости от расширения создает форму... А еще лучше чтобы сама автоматически висела в правом нижнем углу

Отправлено: 16:21, 19-12-2004 | #3


Аватара для Netscaper

Пользователь


Сообщения: 84
Благодарности: 0

Профиль | Отправить PM | Цитировать


Не очень понимаю, что значит
Цитата:
сама автоматически висела
...
При изменении разрешения экрана система посылает всем окнам сообщение с новыми размерами экрана.
Если для каких-то диапазонов надо использовать разные формы, можно сделать основное окно невидимым (MainForm.Visible := False), причем не забыть указать, что Application.ShowMainForm := False в проекте. Невидимое окно все равно будет получать сообщения WM_DISPLAYCHANGE и в обработчике создавать нужную форму LowResForm := TLowResForm.Create(nil).

Отправлено: 18:47, 19-12-2004 | #4


Аватара для Savant

Старожил


Сообщения: 300
Благодарности: 6

Профиль | Сайт | Отправить PM | Цитировать


fossil
В отличие от тебя, Netscaper все делает грамотно (правильно) и обоснованно. Не поленись объяснить, что значит "сама автоматически висела"... Если ты хочешь такое свойство окну приписать, то тебе его все равно придется реализовать через код, предложенный Netscaper

Отправлено: 18:55, 19-12-2004 | #5


Аватара для Netscaper

Пользователь


Сообщения: 84
Благодарности: 0

Профиль | Отправить PM | Цитировать


Savant
Спасибо за поддержку. Действительно, надо объяснять свои потребности.

Отправлено: 19:10, 19-12-2004 | #6


Аватара для fossil

Ветеран


Сообщения: 637
Благодарности: 20

Профиль | Сайт | Отправить PM | Цитировать


Netscaper
Ясно. Спасибо.
Но я бы хотел чтобы моя одна форма при активации определяла разрешение экрана, задавала параметры Top и Left и после этого появлялась уже в нужном месте.

Последний раз редактировалось fossil, 19-12-2004 в 21:08.


Отправлено: 21:01, 19-12-2004 | #7


Аватара для Netscaper

Пользователь


Сообщения: 84
Благодарности: 0

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
procedure TForm1.FormShow(Sender: TObject);
var R : TRect;
begin
  SystemParametersInfo(SPI_GETWORKAREA, 0, @R, 0);
  Left := R.Right - Width;
  Top := R.Bottom - Height;
end;
Появляется в правом нижем углу с учетом Taskbar. Можно поставить в любой метод.

Отправлено: 23:39, 19-12-2004 | #8


Аватара для fossil

Ветеран


Сообщения: 637
Благодарности: 20

Профиль | Сайт | Отправить PM | Цитировать


Netscaper
То что надо. Спасибо!

Отправлено: 10:17, 20-12-2004 | #9



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Delphi - Расположени формы на экране (Delphi)

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Формы Scorpion666 Вебмастеру 9 13-04-2006 10:33
Delphi - Delphi | События при создании формы riddler Программирование и базы данных 1 05-03-2005 13:16
Элементы формы Guest Вебмастеру 7 15-10-2004 11:28
Скины формы unreliable Программирование и базы данных 3 18-04-2004 08:41
HTML, Формы... Dafi Вебмастеру 26 23-01-2004 08:06




 
Переход