Форум: "Основная";
Текущий архив: 2003.12.12;
Скачать: [xml.tar.bz2];
ВнизПеремещение формы по экрану. Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.007 c