Главная страница
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.015 c
1-50709
lovres
2002-09-03 13:39
2002.09.16
Никак не могу разобраться с WordDocument, помогите!


3-50584
vita
2002-08-24 12:54
2002.09.16
работа с INTERBASE


1-50729
BillyJeans
2002-09-02 16:44
2002.09.16
Как изменить рисунок фона на форме?


3-50606
SERY
2002-08-25 15:53
2002.09.16
Не могу разобраться


1-50681
maxim2
2002-09-05 06:10
2002.09.16
WebBrowser