Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.027 c
15-1167329095
@BraIN
2006-12-28 21:04
2007.01.21
Перспективная емкость рынка (маркетинг)


2-1167234829
Johny
2006-12-27 18:53
2007.01.21
Поиск в ListBox


4-1157886409
Beglec
2006-09-10 15:06
2007.01.21
Подсчет страниц печати на принтере


15-1167254361
Nic
2006-12-28 00:19
2007.01.21
Тест


15-1167081346
Udaff
2006-12-26 00:15
2007.01.21
Расшифровка сетевых пакетов




   Наверх