Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Курсор мыши [D6, XP]


Jimmy ©   (2008-08-26 23:37:00) 

Почему процедура
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
begin
Cursor:=crHourGlass;
end;
изменяет курсор мыши только когда наступило MouseUp?
Заранее спасибо.


Jimmy   (2008-08-27 22:16:00) [1]

Screen.Cursor:=crHourGlass; помогло. Всем спасибо.


ЛшдлуттнСфе   (2008-08-27 05:18:00) [2]

Колесико - это колесико. Никакого, кроме механического, отношения к средней кнопки не имеет.


Германн   (2008-08-27 01:52:00) [3]


> Deltas ©   (27.08.08 01:31) [5]
>
>
> > А вот правая (насчет средней ничего не знаю)...
>
> Это колесико мышки. Им тоже можно кликать.

Что такое "средняя кнопка мышки" я знаю.


Deltas   (2008-08-27 01:31:00) [4]


> А вот правая (насчет средней ничего не знаю)...

Это колесико мышки. Им тоже можно кликать.


Deltas   (2008-08-27 01:30:00) [5]

Кстати, между этими двумя вариантами есть разница. Предположим на форме размещена кнопка TButton. Если использовать Screen.Cursor := crHourGlass, курсор изменится и над формой и над кнопкой. Если использовать выше описанный метод переопределения обработчика, курсор изменится только лишь над формой, над кнопкой он останется прежним.


Германн   (2008-08-27 01:28:00) [6]


> Видимо, какая-то ошибка в текстах модулей Delphi. Обрати
> внимание, что курсор изменяется после отпускания мыши только
> для левой кнопки. Для средней и правой он изменяется сразу.
>
>

Врядли это ошибка. Скорее дело в том, что левая кнопка по стандарту строго задействована только на тех контролах, которые можно "кликнуть" или "нажать". А вот правая (насчет средней ничего не знаю)...


Deltas   (2008-08-27 01:22:00) [7]


> Почему процедура
> procedure TForm1.FormMouseDown(Sender: TObject; Button:
> TMouseButton;
>  Shift: TShiftState; X, Y: Integer);
> begin
> Cursor:=crHourGlass;
> end;

> изменяет курсор мыши только когда наступило MouseUp?

Видимо, какая-то ошибка в текстах модулей Delphi. Обрати внимание, что курсор изменяется после отпускания мыши только для левой кнопки. Для средней и правой он изменяется сразу.

> А если попробовать написать
> Screen.Cursor:=crHourGlass;

Это помогает. Есть еще один вариант, более сложный: переопределить обработчик события WM_LEFTBUTTONDOWN:
unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

type
 TForm1 = class(TForm)
 private
   procedure OnLeftButtonDown(var Msg: TMsg); message WM_LBUTTONDOWN;
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.OnLeftButtonDown(var Msg: TMsg);
begin
 Cursor := crHourGlass;
end;

end.


Германн   (2008-08-27 01:11:00) [8]


> Cursor:=crHourGlass;

А если попробовать написать
Screen.Cursor:=crHourGlass;


Наверх

Титульная страница Поиск, карта сайта Написать письмо