Главная страница
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.123 c
2-1167212791
Elfenit
2006-12-27 12:46
2007.01.21
Помогите открыть RTF


15-1167141808
NeyroSpace
2006-12-26 17:03
2007.01.21
А как пиринговые сети соединяют 2х клиентов находящихся за NAT?


15-1167638328
kaZaNoVa
2007-01-01 10:58
2007.01.21
Методы управления людьми


2-1167867933
Riply
2007-01-04 02:45
2007.01.21
Ожидание начала работы нити.


2-1167689615
Footballer
2007-01-02 01:13
2007.01.21
TMemo и его Lines