abbrechen
Suchergebnisse werden angezeigt für 
Stattdessen suchen nach 
Meintest du: 
abbrechen
Suchergebnisse werden angezeigt für 
Stattdessen suchen nach 
Meintest du: 
Programmierung
Alles über Programmierung in GDL und Python

Tipps + Tricks: Popup-Erläuterungen im User Interface

Anonymous
Nicht anwendbar
Tipps und Tricks – Popup-Erläuterungen im User Interface

Andreas Zeike fragte mich, ob es nicht möglich sei, Popups als Erläuterungen im User Interface eines GDL-Objektes unterzubringen.

Das brachte mich auf die Idee der Erzeugung von schwebenden Dialogfeldern, die beim Klicken auf ein „?“ aufpoppen.
Das Prinzip ist ähnlich wie beim Seitenwechsel mit Booleschen Parametern.
Eine Pixelgrafik in Form eines Fragezeichens wird auf ein Ankreuzfeld gelegt. Beim Klicken auf das Fragezeichen wird der Boolesche Parameter aktiviert.
Durch eine IF-Anweisung im UI-Script wird dann eine große Grafik angezeigt, die über großen Teilen des Interface schwebt und dieses verdeckt (daneben funktioniert leider nicht).
Auf diesen Popupflächen können Erläuterungen zur Eingabe von Parametern gegeben werden, oder irgendwelche anderen benutzerspezifischen Dinge.
Geschlossen wird das Popupfeld durch Klicken auf das Windowstypische X-Feld in der rechten oberen Ecke. Damit das klappt, muss sich beim Aktivieren des Booleschen Parameters die Position des Ankreuzfeldes von der ursprünglichen Position an die Stelle ändern, die genau unter dem X des Popups liegt. Hierzu muss ggf. gleichzeitig eine andere UI-Funktion, die da gerade im Wege ist, deaktiviert werden.
Das alles ist vielleicht für den GDL-Programmierer ein bisschen aufwendig, aber extrem anwenderfreundlich.

Ein Beispiel für ein solches Popup ist im folgenden dargestellt:
- das Objekt dient dem Erzeugen solcher Popups. Leider sind die damit erzeugten Pixelgrafiken nicht pixelgenau, so dass sie etwas unscharf sind. Vielleicht hat jemand eine Idee, wie man diese Schwäche verbessert. Will man pixelgenaue und scharfe Popups erzeugen, fertigt man am besten in Photoshop eine Vorlagedatei an, bei der man dann nur den Inhalt verändert. Zum pixelgenauen Zeichnen sollte man das Raster aktivieren und auf eine Größe von 1x1 Pixel einstellen.

<OBJECT ID="GDLCtl" codebase="http://www.gdlcentral.com/bin/files/GDLCtl.cab#version=1,2,5,178" WIDTH="200" HEIGHT="200" CLASSID="CLSID:64D9B72C-E42A-490e-9181-221E1E035A14"><PARAM NAME="GdllistTxt" VALUE=""><PARAM NAME="SRC" VALUE="http://www.download.b-prisma.de/objekte/Popup_Maker.gsm"><embed name='GDLCtl' width='200' height='200' Src='http://www.download.b-prisma.de/objekte/Popup_Maker.gsm' GdlListTxt=''></OBJECT>

Ein weiteres Beispiel ist eine einfachere Form, bei der man zum Deaktivieren des Popups ein zweites Mal auf das Fragezeichen klickt:

<OBJECT ID="GDLCtl" codebase="http://www.gdlcentral.com/bin/files/GDLCtl.cab#version=1,2,5,178" WIDTH="200" HEIGHT="200" CLASSID="CLSID:64D9B72C-E42A-490e-9181-221E1E035A14"><PARAM NAME="GdllistTxt" VALUE=""><PARAM NAME="SRC" VALUE="http://www.download.b-prisma.de/objekte/Dachstuhl.gsm"><embed name='GDLCtl' width='200' height='200' Src='http://www.download.b-prisma.de/objekte/Dachstuhl.gsm' GdlListTxt=''></OBJECT>

Ich möchte vorschlagen, dass man ähnlich wie für ArchiCAD eine Wunschliste für Verbesserungen von GDL in diesem Forum eröffnet. Einer meiner Wünsche zu diesem Thema wären folgende Befehle:
UI_POPUP x,y,Breite,Höhe,“Textinhalt“
UI_POPUP x,y,Breite,Höhe,“Grafischer Inhalt (Datei)“

In viele Fällen können solche Popups eine wertvolle Hilfe für den Anwender darstellen, ohne wertvollen Platz auf den knapp bemessenen UI-Flächen zu beanspruchen.
Danke, Andreas, für die Anregung.

Eine zweite Möglichkeit, Erläuterungen, ins UI einzufügen, ist das Anzeigen von Erläuterungstext auf der normalen Interface Oberfläche, der dann auftaucht, wenn man auf ein Fragezeichenfeld (o.ä.) klickt. In diesem Fall wird dann der gesamte vorher angezeigte Inhalt der UI-Seite (oder ein Teil davon) ausgeblendet. Dies lässt sich durch eine IF...THEN Bedingung bewerkstelligen.
Folgendes Beispiel zeigt so etwas:
<OBJECT ID="GDLCtl" codebase="http://www.gdlcentral.com/bin/files/GDLCtl.cab#version=1,2,5,178" WIDTH="200" HEIGHT="200" CLASSID="CLSID:64D9B72C-E42A-490e-9181-221E1E035A14"><PARAM NAME="GdllistTxt" VALUE=""><PARAM NAME="SRC" VALUE="http://www.download.b-prisma.de/objekte/Carport_bp.gsm"><embed name='GDLCtl' width='200' height='200' Src='http://www.download.b-prisma.de/objekte/Carport_bp.gsm' GdlListTxt=''></OBJECT>

Es ist natürlich möglich, neben Text (UI_OUTFIELD) auch erläuternde Grafiken (UI_PICT) einzufügen.
Diese Idee der benutzerfreundlichen Erläuterungen habe ich das erste Mal bei einem Objekt von GDL-Guru Laurent Godel gesehen; danke hierfür.

Eine dritte Möglichkeit besteht darin, im Kommentar-Feld eine URL für eine html-Seite anzugeben.
Wenn man ab ArchiCAD 7.0 auf das Websymbol im Dialogfeld des Bibliothekselementes klickt (bei aktiviertem Kommentarfeld: unterster Button),
<img src="http://www.download.b-prisma.de/objekte/URL_test.gif" alt=" - " />
wird die entsprechende Internet-Seite geöffnet, auf der sich natürlich wesentlich mehr Informationen und größere Grafiken als im User Interface oder in Popups unterbringen lassen. Die URL kann auch eine Adresse auf der Festplatte sein.
Beispiel für eine Web-URL:
# http://www.download.b-prisma.de/test.html
Beispiel für eine Festplatten-URL:
# file://../GDL/Test_URL.html
Im zweiten Beispiel muss sich das GDL-Objekt und die html-Datei im selben Verzeichnis mit der Bezeichnung „GDL“ befinden.
Das Zeichen „#“ ist obligatorisch.
Derzeit ist nur eine einzige URL im Kommentarfeld zulässig.
Die Webschaltfläche ist derzeit nur in ArchiCAD verfügbar; im GDL Web Control gibt es sie nicht; im GDL Object Explorer muss die HTML-Datei den gleichen Dateinamen wie das Objekt besitzen (Achtung: Endung „htm“ !), ein Eintrag im Kommentarfeld ist nicht nötig.

Weitere Erfahrungen zu diesem Thema würden mich sehr interessieren.

[ 03. Juli 2005, 14:13: Beitrag editiert von: Jochen Suehlo ]
4 ANTWORTEN 4
andreaszeike
Newcomer
Thanxx für das Tutorial!!

Über die Kommentarfeld-Methode gibt´s übrigens auch noch eine kleine Doku hier: http://mitglied.lycos.de/azappa123/public/Dokus/GDL,%20Infotext%20-%20Objekte%20mit%20Heimweh.pdf

Gruß, az
Anonymous
Nicht anwendbar
Hallo Jochen,

mir erscheint die zweite Methode als der beste Weg, da auch am einfachsten auszuprogrammieren.

Bei der ersten Version wird sich das erzeugte Fenster nur bei den wenigstens so zeigen, wie Deine (!) Oberfläche eingestellt ist. (Farben, Schrift, OS etc.) Und wird daher nicht den Effekt haben, den Du beabsichtigst. Außerdem ist es ja auch eine ziemliche 'Pixelhühnerei', oder?

Abgesehen davon, und das bezieht sich auf Deinen UI_POPUP - Wunsch finde ich es nicht erstrebenswert, daß sich nun reihenweise POPUPS öffnen. Gerade hat GS in AC8 alles in einen Guß gepackt und da müssen wir doch nicht erneut ausbrechen. Die Eingabemaske sollte durch ihre Struktur doch die Notwendigkeit solcher 'Ausflüge' abnehmen. Und, wie Du im Beispiel 3 gezeigt hast, gibt es ja für ernste Fälle den HTML-Link.
Ab AC8 ist ja dann auch mehr Platz in der Eingabemaske. 🙂

Aber wie gesagt, ist die 2. Variante ja eine gute Lösung, die ich auch öfters verwende. Und da ist einer der zahlreichen UI-Wünsche dringender:
Einen echten UI_BTN-Befehl zum Navigieren, denn Hand aufs Herz: Wer legt seine Interfaces mit UI_PAGE an?

Das Navigieren durch die Interfaceseiten wäre natürlich mit TABS auch sehr komfortabel... und Ausklappdreiecke á la MacOS Finder wären nett... Jaja, das alles kann man auch mit der versteckten Checkbox realisieren, doch ist das sehr Aufwendig. Außerdem bekommt man mit seinen drübergelegten PICTS schon wieder oben angesprochene Unstimmigkeiten nach benutzter Betriebssystemoberfläche. Schon alleine zwischen MacOS 9 und NT muß man tricksen, da das Dialogfeldgrau unterschiedlich ist (mal abgesehen davon, daß das ja auch jeder beliebig ändern kann.) Das von GDL zur Verfügung gestellte Werkzeug für ein gutes Interface finde ich sehr mager.

Ach ja, Textausgabe: Wer lange Erläuterungstexte ausgeben will ist auf ~240 - Zeichenhappen beschränkt, die dann je nach Systemeinstellung auch noch unterschiedlich ausgegeben/umgebrochen werden. Diese Beschränkung sollte unbedingt fallen.

Last not least: Ein Interfaceeditor, wie er selbst für Word- und Exelmakros daherkommt sollte für GS ein absolutes Muß sein. Sonst werden weiterhin nur ein paar Maniacs Interfaces programmieren und der Rest bietet dem Anwender die inzwischen 500 möglichen Parameter als Liste an.
(Ich habe für ein zugegebenermaßen komplexes Objekt gerade ca. 30 Stunden am Interface programmiert. Das ist nur unwesentlich weniger als für die 2D/3D/Master-Skripte und das kanns ja nun wirklich nicht sein.)

Auch hier sollte man vielleicht mal Wünsche sammeln und dann im Block, vielleicht mit 'Unterschriften'liste an GS weiterreichen.
andreaszeike
Newcomer
Hi Lars!!

was meinst Du mit </font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">Zitat:</font><hr /><font size="2" face="Verdana, Helvetica, sans-serif"> Einen echten UI_BTN-Befehl zum Navigieren... ?
Anonymous
Nicht anwendbar
Hallo Andreas,
naja, den UI_BUTTON - Befehl kannst Du ja nur zum vorwärts und rückwärtsblättern innerhalb der mittels UI_PAGE angelegten Seiten verwenden. Hast Du 10 Seiten, ist das obernervig für den Anwender, weil er sich jedesmal voll durchklicken muß. Also machst Du das heute ohnehin anders mittels Auswahlparameter.
Hätte der UI_BUTTON aber nicht nur UI_NEXT und UI_PREV als Argument, sondern zusätzlich die Möglichkeit der Angabe von Zielseiten, ginge die Navigation schneller von der Hand. Und es würde auch wieder jemand den UI_PAGE - Befehl verwenden.

Das langt mir aber natürlich nicht. 😉 Knöpfe sind erst richtig genial, wenn sie dann auch noch eine Aktion auslösen können. Z.B. den Aufruf eines Makros, einer Subroutine, eines Zuweisungsbefehls, der gleichzeitig mehrere Parameter setzt etc.
Halt eine Funktionalität, wie man sie von 'anderen' Knöpfen prog-auf und -ab kennt.