MouseLeave

Tags:    delphi

User
Bruger #75 @ 16.04.02 21:18
Hejsa

Jeg har en form med et panel på. Jeg vil gerne have at hvis man trykker et andet sted på skærmen, ikke kun på formen, sættes panelet's visible-property til false. Hvis man trykker på selve panelet forbliver det det synligt.
Hvordan kan jeg gøre det. Jeg tænkte, at måske kan jeg opfange museklikket med en timer, og derefter se om musen er på eller udenfor panelet... men hvordan...?

Håber jeg gjorde mig tydelig nok i min forklaring. På forhånd tak.

Med venlig hilsen

Mikkel Bøg Clemmensen
mt.clemmensen@vip.cybercity.dk




5 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 4 karma
Sorter efter stemmer Sorter efter dato
Hejsa

Jeg har en form med et panel på. Jeg vil gerne have at hvis man trykker et andet sted på skærmen, ikke kun på formen, sættes panelet's visible-property til false. Hvis man trykker på selve panelet forbliver det det synligt.
Hvordan kan jeg gøre det. Jeg tænkte, at måske kan jeg opfange museklikket med en timer, og derefter se om musen er på eller udenfor panelet... men hvordan...?

Håber jeg gjorde mig tydelig nok i min forklaring. På forhånd tak.

Med venlig hilsen

Mikkel Bøg Clemmensen
mt.clemmensen@vip.cybercity.dk


Du skal bruge en TDXInput og en TDXTimer.

I DXInput skal du sætte ActiveOnly til False og Mouse.Enabled til True.

I DXTimer skal du sætte ActiveOnly til False og Interval så lavt som muligt og i onTimer skal du skrive:

<pre>DXInput.Update;
if (DXInput.Mouse.Buttons[0]) then
Panel1.Visible := False;
</pre>

Emil Melgaard
emil.melgaard@private.dk



Alternativt kan du jo bare sætte
<pre>Panel1.Visible := False;</pre>
ind under de andre elementers OnClick-værdi... men det er jo lettere sagt end gjort hvis du har rigtig mange elementer på din form...

Mvh. /TP[Redigeret d. 22/04-02 09:05:41 af TP]



User
Bruger #75 @ 22.04.02 14:10
Men som sagt skulle det også være hvis man klikkede uden for min application, og der kan jeg jo ikke lige bare sådan styre onClick-events'ne :-)

Det jeg tænkte var at der måtte være en måde at opfange når musen blev klikket med, lige meget hvor på skærmen, og så derefter sætte Panel1.Visible til False.


Med venlig hilsen

Mikkel Bøg Clemmensen
mt.clemmensen@vip.cybercity.dk




Men som sagt skulle det også være hvis man klikkede uden for min application, og der kan jeg jo ikke lige bare sådan styre onClick-events'ne :-)

Det jeg tænkte var at der måtte være en måde at opfange når musen blev klikket med, lige meget hvor på skærmen, og så derefter sætte Panel1.Visible til False.


Med venlig hilsen

Mikkel Bøg Clemmensen
mt.clemmensen@vip.cybercity.dk


Forstår jeg dig rigtigt hvis du ønsker, at ligeså snart musens markør forlader TPanel'et, skal de skjules eller hvordan?
I det tilfælde skal du ind og tilføje en lille ting til TPanel, og lave din egen udgave, til brug i dit program... På den måde kan du let tilføje en OnMouseLeave...
Hvis ikke det er det du søger, så ret mig lige ;) jeg er rimlig træt, så det kan være jeg har overset noget :)



Hejsa

Jeg har en form med et panel på. Jeg vil gerne have at hvis man trykker et andet sted på skærmen, ikke kun på formen, sættes panelet's visible-property til false. Hvis man trykker på selve panelet forbliver det det synligt.
Hvordan kan jeg gøre det. Jeg tænkte, at måske kan jeg opfange museklikket med en timer, og derefter se om musen er på eller udenfor panelet... men hvordan...?

Håber jeg gjorde mig tydelig nok i min forklaring. På forhånd tak.

Med venlig hilsen

Mikkel Bøg Clemmensen
mt.clemmensen@vip.cybercity.dk


Dette tilføjer du til private:
<pre>procedure LButtonDown(var Msg : TWMLButtonDown); message WM_LButtonDown;
</pre>
Dette skal under implementation:
<pre>procedure TForm1.LButtonDown(var Msg : TWMLButtonDown);
begin
Panel1.Visible := False;
inherited;
end;
</pre>
Du kan evt. ændre Down til Up.

Emil Melgaard
emil.melgaard@private.dk



t