Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.09.16;
Скачать: CL | DM;

Вниз

Как определить что мышь ушла за пределы компонента   Найти похожие ветки 

 
pavit   (2002-09-03 12:54) [0]

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


 
Виктор Щербаков ©   (2002-09-03 13:00) [1]

CM_MOUSELEAVE


 
AL2002 ©   (2002-09-03 13:00) [2]

Подложи что-то под комбо и событие ему мышовое назначь.


 
Леха_   (2002-09-03 13:07) [3]

если хочешь сделать надежно то SetCapture ReleaseCapture


 
pavit   (2002-09-03 13:14) [4]

я еще не такой суппер, потоэтому если не трудно как в контексте это выглядит.


 
Виктор Щербаков ©   (2002-09-03 13:18) [5]

Вот пример:
unit Unit1;

interface

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

type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
private
{ Private declarations }
public
{ Public declarations }
procedure CMMouseLieave(var Message: TMessage); message CM_MOUSELEAVE;
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.CMMouseLieave(var Message: TMessage);
begin
if Message.LParam = Integer(Button1) then beep;
end;

end.


 
Леха_   (2002-09-03 13:36) [6]

procedure TForm1.Button1Click(Sender: TObject);
begin
SetCapture(Panel1.Handle);
end;

procedure TForm1.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if (x<0)or(y<0)or(x>Panel1.Width)or(y>Panel1.Height) then
begin
ReleaseCapture;
ShowMessage("


 
pavit   (2002-09-03 13:53) [7]

2 Леха_
Вообщем решил сделать надежно:
при нажатие на заголовок грида -
procedure TForm1.ZnachenGridTitleClick(Column: TColumn);
begin
if (column.Index=0) then
begin
Zn1DBox.Visible:=true;
SetCapture(Zn1DBox.Handle);
end;
end;


затем -
procedure TForm1.Zn1DBoxMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if (x<0)or(y<0)or(x>Zn1DBox.Width)or(y>Zn1DBox.Height) then
begin
ReleaseCapture;
Zn1DBox.Visible:=false;
end;
end;


только не пропадает Combo, когда мышка за его пределами.


 
pavit   (2002-09-03 14:39) [8]

2 Виктор Щербаков ©
Пример хороший, и работает нормально, но список нельзя раскрывать, т.е. нельзя ни чего выбрать, возникают исключительные ситуации (он раскрыт но его уже не видно).
Как можно отследить мышь в области раскрывшегося списка?


 
Song ©   (2002-09-03 14:45) [9]

Тем же onMouseMove. А размеры раскрывающегося списка можно узнать через CB_GETDROPPEDCONTROLRECT



Страницы: 1 вся ветка

Текущий архив: 2002.09.16;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.017 c
3-50634
Adoon
2002-08-26 19:15
2002.09.16
БД


14-50916
Мася
2002-08-21 09:11
2002.09.16
Автозагрузка


1-50664
R_F$29{n}xp
2002-09-04 13:51
2002.09.16
Мастера подскажите как можно сохранить компонент TTree View?


3-50625
saxon
2002-08-26 18:22
2002.09.16
Index is read only


3-50639
Nikolai_S
2002-08-26 18:47
2002.09.16
Сжатие базы данных MS Access