Главная страница
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.011 c
4-36886
STAINER
2003-10-16 09:37
2003.12.12
Проблемы с апишным popupmenu


14-36831
nikus
2003-11-19 15:03
2003.12.12
WAP-версия форумов


3-36501
Ormada
2003-11-21 14:16
2003.12.12
Fields


1-36710
timM
2003-12-03 12:34
2003.12.12
fsMDIForm и Dll


1-36759
Labert
2003-12-01 20:06
2003.12.12
Как сделать подключение форм в run time