slide down dialog

Hallo in die Runde.
Ich möchte möglichst platzsparend eine Suche in ein Fenster integrieren. Dazu würde ich gern eine kleine “Lasche” von der Fenstertitelzeile hängen lassen (soll etwa so aussehen, wie ein auf dem Kopf stehender Karteikartenreiter), die ein Lupen-Icon enthält.
Klickt man auf diese Lasche/Lupe, wird die Lasche animiert nach unten gefahren und ein Dialog mit einer Eingabezeile kommt aus der Fenstertitelzeile.

Nach Eingabe des Suchbegriffs und anschließendem Return soll der Dielog wieder unter der Fenstertitelzeile verschwinden.

Das wird vermutlich gegen alle GUI-Regeln verstoßen, finde ich aber eine platzsparende Lösung. Ich habe nur momentan keine Ahnung, wir ich das umsetzen kann. Insbesondere mit einer Animation, die den Dialog rauf/runter fährt habe ich keine Erfahrung.

Hat jemand soetwas schon umgesetzt?
Gibt es das evt. sogar schon als GUI-Element oder Beispielprojekt?

Über hilfreiche Tipps würde ich mich freuen.
Zielplattform: Mac OS, Windows und Linux

Gruß, Stefan Mettenbrink.

Du kannst, wenn die Lupe geklickt wird, einen Timer starten, der das Top-Attribut des Dialogs ndert, damit es gewissermaen nach unten fhrt. Unter Windows sind solche “Animationen” aber oft etwas hakelig.

Momentan bin ich nicht zu Hause, aber vielleicht schaffe ich es heute Abend mal, ein Beispiel zu posten…

Gru Jens

Es ist ja nicht nur das Top-Attribut. Es soll ja so aussehen, als würde der Dialog unter der Titelzeile hervorkommen und vor den bisherigen GUI-Elementen des Fensters liegen (incl. Schatten ). Also etwa so, wie ein Menü, das eingeblendet wird. Grundsätzlich würde ein Menü auch den Zweck erfüllen. Wenn das einfacher ist, nehme ich auch das. Allerdings brauche ich keine Menüpunkte zum Anklicken sondern ein TextField (ggf. noch Label und Button).

In meinem Programm habe ich einen Filter-Dialog. Beim Klicken auf das Filter-Icon in der Toolbar geht ein Sheet auf. Man kann dort die Suchkriterien eingeben und klickt dann auf Suchen:

Würde so etwas passen? Wie sieht denn Dein Interface aus?

Ja, an soetwas dachte ich.
Ich brauche lediglich ein TextField und evt. das Lupen-Icon.

Ich habe mal ein Beispielbild erzeugt:

Hier soll der Anwender bei Eingabe des Namens eine entsprechende Liste passender Eintrge zur Ausahl angezeigt bekommen. Somit soll sich der Dialog dann auch passend nach unten erweitern. Das kann dann auch eine Art Kontextmen oder Combobox sein.

Warum erklre ich eigentlich so umstndlich?
Wenn man in Xojo ein Projekt startet, kommt doch genau so ein Hinweisdialog reingefahren :slight_smile:

Wie macht man das?

Gru, Stefan Mettenbrink.

Wenn wir das Gleiche meinen, ist das ein Sheet Window. Einfach ein neues Fenster als Sheet anlegen und in deinem Hauptfenster mit New Fenstername an gegebener Stelle erzeugen.

Gru Jens

Hmmm…
ein Fenter ohne Titelzeile. An passende Fensterpositon einblenden und per Timer bis zur Wunschgröße aufziehen würde dann ggf. auch einen netten Einblendeffekt erzeugen.

Ich denke, damit kann ich anfangen.
Danke.

Das meinte ich auch ganz oben. Hat zudem den Vorteil, dass man es auch unter Windows übernehmen könnte; das Sheet-Fenster gibt es nativ ja nur unter MacOS.

Gruß Jens

Wie sieht das Sheet Window denn unter Windows und Linux aus. Wie die anderen Fenster (mit Titelzeile)?
Ich mach es erst mal für Mac OS. Windows schau ich mir an, wenn es bei mir läuft :slight_smile:

Als unterstes Element im Fenster eine Disclosure Triangle
Diese zeigt wahlweise nach rechts (weitere Elemente sind unsichtbar)
oder nach unten (weitere Elemente sind sichtbar, das Fenster ist höher).

Ja, unter Windows/Linux ist es ein ganz normales Dialogfenster.

Gru Jens

Inzwischen luft es unter Mac OS, wie es soll. Wenn ich allerdings unter Windows starte, wird as Sheet Window gar nicht geffnet.

Muss ich das Fenster noch mal als normales Fensterfr Windows anlegen? Ich habe nicht gefunden, wo ich den Type von Sheet Window z. B. zu Modal Dialog ndern kann.

Das ist Frame -> Type.

Du kannst einen Container machen, den Du in zwei Fenster einbettest.

OK, Container habe ich noch nicht benutzt. Das muss ich mir mal ansehen.