Главная страница
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.108 c
2-1167911471
pound
2007-01-04 14:51
2007.01.21
нестандартная кнопка


15-1167164837
kroner
2006-12-26 23:27
2007.01.21
Регулярные выражения в delphi


15-1167469742
Derww
2006-12-30 12:09
2007.01.21
Как определить связен ли граф?


1-1164870957
DVM
2006-11-30 10:15
2007.01.21
Как лучше такое реализовать? Отлов нажатий клавиш.


3-1162332175
Vladimir_B
2006-11-01 01:02
2007.01.21
FreeReport утомил