Главная страница
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.038 c
15-1165937364
GrayFace
2006-12-12 18:29
2007.01.21
Версии Delphi. А также вопрос к тем, у кого Delphi более, чем 7


1-1164730634
Алена
2006-11-28 19:17
2007.01.21
метод TTimer


2-1168079099
Туплю
2007-01-06 13:24
2007.01.21
Как получить старший бит числа?


15-1167851451
PHPdeveloper
2007-01-03 22:10
2007.01.21
бывает же такое :)


1-1164629646
NeyroSpace
2006-11-27 15:14
2007.01.21
Вопрос про плагины (компонент TJvPlugin)