Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.09.16;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.009 c
4-51042
hovl
2002-07-23 20:24
2002.09.16
UNLOADDLL


1-50772
^Sanya
2002-09-05 14:39
2002.09.16
TStringGrid:


3-50654
Mike Kouzmine
2002-08-23 19:09
2002.09.16
ДБФ. Удаление удаленного или как сохранить номер записи


4-51016
DAO
2002-07-22 21:02
2002.09.16
Ошибка работы с потоком (CoInitialize...)


6-50903
resident1984
2002-07-06 18:00
2002.09.16
NetBios имя хоста.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский