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

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



Память: 0.47 MB
Время: 0.01 c
1-50815
DeMoN-777
2002-09-03 17:33
2002.09.16
Медиа


6-50888
[nex] aka Counterfeiter
2002-07-12 01:02
2002.09.16
ServerSocket nonBlockingThread


1-50790
jcrush
2002-09-02 18:19
2002.09.16
код из Help a а глючит до нельзя :( может где нить ошибка???


6-50894
SemFLY
2002-07-12 13:52
2002.09.16
Помогите разобраться ! ;-)


3-50592
Kolya
2002-08-24 23:45
2002.09.16
Autoincrement




   Наверх