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

Вниз

Сменить вид указателя мыши при нажатии на левую кнопку.   Найти похожие ветки 

 
DVM ©   (2006-11-29 11:05) [0]

Сделал потомка от TWinControl. Хочу наделить его способностью перемещаться по родительскому окну. Само перемещение не вызывает проблем. Проблема вот в чем. При нажатии на левую кнопку мыши (кнопку не отпустили еще) хочу поменять указатель на крестик - и не получается. С правой кнопкой, средней - ок, а вот с левой нет почему-то.
Где собака зарыта?


 TViewItem2 = class(TCustomControl)
 private
  ...
 protected
  ...
 public
   ...
   procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override;
   procedure MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override;

......
......

procedure TViewItem2.MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
 ....
 Self.Cursor := crSizeAll;
 ...
 inherited;
end;


 
clickmaker ©   (2006-11-29 11:18) [1]

возможно, дело в этом
procedure TControl.WMLButtonDown(var Message: TWMLButtonDown);
begin
 SendCancelMode(Self);

как вариант, можно подцепить обработчик WM_SETCURSOR и вызывать в нем SetCursor(SizeCursorHandle), если (GetKeyState(VK_LBUTTON) >> 8) <> 0


 
REA   (2006-11-29 11:46) [2]

Можно попробовать на MouseMove, если MouseCapture то Cursor := crSizeAll


 
DVM ©   (2006-11-29 12:05) [3]


> REA   (29.11.06 11:46) [2]
> Можно попробовать на MouseMove, если MouseCapture то Cursor
> := crSizeAll

Не получится так. MouseMove возникает до того как я нажимаю левую кнопку, а именно по нажатию левой кнопки выставляется флаг FDrag, говорящий в дальнейшем в MouseMove, что окно надо тащить. Пока левая кнопка не отпущена, окну плевать на изменения курсора.


 
DVM ©   (2006-11-29 12:06) [4]


> clickmaker ©   (29.11.06 11:18) [1]

как узнать хэндл курсора, который в делфи обозначен как crSizeAll ?


 
clickmaker ©   (2006-11-29 12:08) [5]


> [4] DVM ©   (29.11.06 12:06)

LoadCursor(0, IDC_SIZEALL)


 
DVM ©   (2006-11-29 12:11) [6]


> clickmaker ©   (29.11.06 12:08) [5]

Так то я знаю.
Но он же уже загружен приложением. Из списка загруженных его никак?


 
clickmaker ©   (2006-11-29 12:13) [7]

LoadCursor не будет лишнюю работу делать. Она типа умная ))


 
DVM ©   (2006-11-29 12:20) [8]

Все решилось проще:

procedure TViewItem2.WMLButtonDown(var Message: TWMLButtonDown);
begin
 Self.Cursor := crSizeAll;
 inherited;
end;



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

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

Наверх




Память: 0.48 MB
Время: 0.033 c
1-1164377393
DelphiLexx
2006-11-24 17:09
2007.01.21
DBGridEh сделать Footer не внизу а после последней строкой


15-1167761848
vidiv
2007-01-02 21:17
2007.01.21
как сделать форму toolwindow всегда выше всех форм


6-1155930238
Rescator
2006-08-18 23:43
2007.01.21
Клиент веб-чата на делфи. Как реализовать?


8-1148966463
-=Germe$=-
2006-05-30 09:21
2007.01.21
сплайн-интерполяция


11-1144151482
BaryVetaL
2006-04-04 15:51
2007.01.21
Новый компонент BVLedNumber