Текущий архив: 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.46 MB
Время: 0.036 c