Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
14-36799
Mihey
2003-11-20 20:26
2003.12.12
Нужна помощь по MS Word.


1-36604
Relaxxx
2003-12-01 15:32
2003.12.12
Есть ли сочетание букв в слове???


1-36619
Zapped
2003-12-01 03:09
2003.12.12
Delphi 7 глюк редактора


14-36819
Sergeant ///
2003-11-19 15:34
2003.12.12
Перенос приложения


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





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский