Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Fenster von ausserhalb des Bildschirms (https://www.delphipraxis.net/135726-fenster-von-ausserhalb-des-bildschirms.html)

FBrust 16. Jun 2009 17:39


Fenster von ausserhalb des Bildschirms
 
Hallo,

ich möchte ein kleines Tool so gestalten, dass es normalerweise ausgeblendet ist und nur (z. B. am rechten Bildschirmrand) einen kleinen "Reiter" zeigt. Wenn man mit der Maus über diesen "Reiter" fährt, soll das Fenster (soll nur eins geben) von rechts nach links in den Bildschirm wandern (so wie es die Taskbar von Windows von unten nach oben macht, wenn sie ausgeblendet ist).

Aber ich hab keine Vorstellung, wonach ich suchen muss. Die Threads zu dem Thema, die ich hier gefunden habe, beziehen sich auf "normales" aus- und einblenden von Formularen.

Hat vielleicht jemand einen Tip?


Gruß
Frank

mirage228 16. Jun 2009 17:54

Re: Fenster von ausserhalb des Bildschirms
 
Also so wie auch die Dock-Fenster in den neuen Delphi-IDE, wenn du auf diesen Pin klickst?

Also ich denke, dass Du das in diesem Fall selbst schreiben musst. Du könntest dein Form erstmal nur auf diesen Reiter reduzieren (oder auch ein neues Formular nehmen). Dort fängst Du bei OnMouseEnter mit der Einblendsequenz an. Ist diese noch nicht abgeschlossen und Du erhälst ein OnMouseLeave, schließt Du das Fenster wieder sofort.

Viele Grüße

Hybrid666 17. Jun 2009 08:22

Re: Fenster von ausserhalb des Bildschirms
 
Liste der Anhänge anzeigen (Anzahl: 1)
Also du sagst du willst ein Fenster außerhalb des Bildschirms. Was wenn einer DualHead hat (zwei oder mehr monitore mit erweitertem desktop)? Dann wäre das Fenster die Ganze zeit auf dem anderen Bildschirm zu sehen. Ich würde auf einfachstem Weg die Scrollbars in Form1 ausblenden, dann mit Width und Left das ding einblenden (um eins nach links verschieben, width um eins vergrößern). Dann würde das Fenster auf die gewünschte größe gezogen werden.

Und anfangs halt einfach nur den Reiter einblenden

EDIT:

Hab dir hier mal ein kleines beispielprogramm, siehe anhang

Ist aber sehr schnell zusammengebastelt, wenn du fehler findest, behalt sie ruhig ;)

FBrust 17. Jun 2009 16:36

Re: Fenster von ausserhalb des Bildschirms
 
Hallo,

danke für die aufschlussreichen Antworten, das Beispielprogramm von Hybrid666 schau ich mir am WE mal an, falls ich noch Fragen habe, melde ich mich wieder :).


Gruß
Frank

FBrust 19. Jun 2009 15:05

Re: Fenster von ausserhalb des Bildschirms
 
Hallo,

das "Testproggie" von Hybrid666 funktioniert wunderbar (vielen Dank nochmal), allerdings hab ich doch noch eine Frage:

Ich hab jetzt zwei Controls auf der Form, ein Image und ein Gridview.

Wie kann ich denn verhindern, dass die beiden Ereignisse OnMouseEnter und OnMouseleave aufgerufen werden, wenn ich den Mauscursor von der Form zum Image und zurückbewege? (Da ich mit Transparenz arbeite, die beim "Ausfahren" der Form abgeschaltet wird, ist dies ein ziemliches Geflacker.)

Bin für jeden Tip dankbar.

Gruß
Frank

mirage228 19. Jun 2009 15:32

Re: Fenster von ausserhalb des Bildschirms
 
Eventuell kannst Du ja gucken, ob dann nach dem MouseLeave bzw. vor dem MouseEnter der Cursor vllt auf Deiner eigenen Form bzw. auf dem Image war? Ansonsten könnte Dir ggf. die Eigenschaft "DoubleBuffered" helfen...

Viele Grüße

FBrust 19. Jun 2009 15:50

Re: Fenster von ausserhalb des Bildschirms
 
Hallo,

Doublebuffered ist auf True, das ist nicht das Problem.

Bei Mouseenter stelle ich den Alphawert auf 255 und bei MouseLeave wieder auf 50 zurück.

Da z. B. OnMouseLeave aufgerufen wird, wenn der Mauszeiger von der Form auf das Image wandert, wird kurz der Alphawert geändert. Das heisst, es wird, sobald ich ein Steuerelement mit der Maus erreiche, ständig zwischen 50 und 255 hin- und hergeschaltet.

Gruß
Frank

mirage228 19. Jun 2009 16:03

Re: Fenster von ausserhalb des Bildschirms
 
Moin,

Prüfe im OnMouseEnter, ob Msg.LParam = 0 ist. Hintergrund: Msg.LParam enthält die Komponente, von der die Aktion ausgeht. Wenn der Mauszeiger also Form1 verlässt und Image1 betritt, wäre TObject(Msg.LParam) gleich Deinem Image...

Viele Grüße

Larsi 19. Jun 2009 16:12

Re: Fenster von ausserhalb des Bildschirms
 
Wie wärs mit AlphaBlendValue als Alternative? Da kannst du dann per Timer das Fenster langsam aus dem unsichtbaren heraus immer mehr erscheinen lassen.

FBrust 19. Jun 2009 16:17

Re: Fenster von ausserhalb des Bildschirms
 
Hallo Larsi,

Alphablendvalue meinte ich mit "Alphawert" :)


Gruß
Frank


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:05 Uhr.

Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf