Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.12.12;
Скачать: CL | DM;

Вниз

Перемещение формы по экрану.   Найти похожие ветки 

 
Koba   (2003-12-01 11:04) [0]

Когда свойство формы BorderStyle отлично от bsNone,
то над формой есть такая синяя полоска с иконкой и
кнопками минимизации и т.д. Во время работы приложения
можно хватать форму за эту полоску и тащить в любую
часть экрана. А вот когда BorderStyle = bsNone, такой
полоски нет.

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

Можно конечно, запрограмировать изменение свойств Left и
Top. Это отчасти работает, но мне кажется, что это
неправильно. При таком способе иногда все виснет. Кроме
того, форма каждый раз перерисовывается полностью и на
старых машинах это может работать медленно и коряво.

Нет ли другого способа?


 
TUser ©   (2003-12-01 11:52) [1]

1. Обрабатывай события OnMouseDown - установить некий флаг, запомнить положение формы и курсора, OnMouseMove - если флаг, то переместить форму в соотвествии с новым положением курсора, OnMouseUp - убрать флаг.
2. (еще проще) - есть такой массаг, WMC..Hit.. (Ну, не помню я как его зовут). В обработчкие написать Msg.result:=htCaption.


 
Юрий Федоров ©   (2003-12-01 12:02) [2]

WM_NCHITTEST


 
Koba   (2003-12-02 09:19) [3]

Спасибо. Все работает. Я в FAQ еще другой способ нашел.
Правда вот есть еще одна проблема.

Без всяких там перемещений. Пишем обработчик OnMouseDown
и в теле обработчика меняем Form.Cursor Вот что странно.
Если во время работы приложения нажимаю правую кнопку,
то курсор сразу же меняется. А если левую --- то нет, а
только тогда, когда ее отпустишь. Как с этим бороться?


 
AbrosimovA ©   (2003-12-02 10:16) [4]

if Button=mbLeft then
begin
...//меняй курсор
end


 
Семен Сорокин ©   (2003-12-02 10:23) [5]

Mouse.CursorPos := Mouse.CursorPos


 
Yanval ©   (2003-12-02 10:28) [6]

procedure Form.MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
const SC_DragMove = $F012;
begin
ReleaseCapture;
perform(WM_SysCommand, SC_DragMove, 0);
end;



Страницы: 1 вся ветка

Текущий архив: 2003.12.12;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.013 c
8-36773
Sergeys
2003-08-16 00:39
2003.12.12
ListBox + Картинка + Список


6-36780
man2k
2003-10-15 03:42
2003.12.12
Как написать на WIN API закачку файла на FTP?


14-36850
Карелин Артем
2003-11-20 14:36
2003.12.12
Знатоки АСМА. Что это за фигня??


1-36729
webpauk
2003-12-02 11:38
2003.12.12
Файлы dcu->pas


1-36752
Blamyr
2003-12-01 23:24
2003.12.12
Как поймать нажатие кнопки Tab