Meldungsfenster in ipsview

Hallo,
wie löst Ihr diese Herausforderung:
innerhalb einen Aktionsscripts werden z.B. Daten in einer Datenbank geändert.
Wenn alle Aktion korrekt durchgeführt wurden, wollte ich eine kleine Meldung anzeigen:
z.B. Eingaben wurden verarbeitet und OK Button.
Grundsätzlich habe ich eine Lösung gefunden mit einer BoolVar das Fenster sichtbar oder unsichtbar schalten.
Wenn ich aber diese Meldung aus einer PopUp Seite aktiviere, dann erscheint die Meldung „hinter“ der PopupSeite.
Wenn ich die Popup Seite schließe, dann sehe ich die Meldung.
Direkt auf der Popup Seite gleich sichtbar geht nicht?
Oder wie macht Ihr das?
Grüße von
Ekkehard

Moin Ekkehard,

das Stichwort dafür lautet Aktives Popup und gehört zur Gruppe der Fernsteuerungsvariablen :wink:

SetValueString(15086 /*[Zeit-Scripte\IPSView\Esszimmer Aktives Popup]*/, "MessagePopup");

Auf den OK Button kannst du direkt verzichten, da mit dem nächsten Click oder auf das Kreuz des Fensters das Popup geschlossen wird.

Ein möglicher Grund für die Positionierung im Hintergrund könnte im Falle von Containern deren falsche Position auf der Seite sein. Das muss in den Vordergrund geholt werden - kenne aber deine Skripte nicht im Einzelnen.

Gruß
Hans

Hallo Hans,
danke für Deine Antwort.
Ich gehe wie folgt vor: unter View Eigenschaften : trage ich unter Fernsteuerung Client : aktives PopUp die String Variable, in Deinem Beispiel, die 15086 ein.
Dann muss ein neue Popup Fenster anlegen, in Deinem Beispiel : MessagePopup
das rufe ich dann mit Deinem Befehl auf.
Ist das der Ablauf?
Grüße von
Ekkehard

Hallo Ekkehard,

ja und innerhalb des Popups legst du ein Variablen Label an, welches auf die String Variable die den anzuzeigenden Text enthält referenziert.

Gruß
Hans

Hallo Hans,
das Popup Fenster wird mir leider nicht angezeigt.
Habe die einzelnen Schritt als Hardcopies eingefügt:
mittwoch 1.PNGmittwoch 2.PNGmittwoch 3.PNGmittwoch 4.PNG

Erste Hardcopy = view Eigenschaften
zweite Hardcopy = Eigenschaften des popup Fenster oberer Teil
dritter Hardcopy = Eigenschaften des popup Fensters unterer Teil
vierter Hardcopy = so sieht das popup Fenster aus, der Text in der Mitte ist die Variable 52898 und somit der eigentliche Meldungstext.
Zum Test wollte ich das Popup Fenster mit folgendem Script testen:

$meldungs_text = „dies ist ein Meldungstext“;
SetValueString(52898 /[Allgemein\IPSView\Text der im Meldungsfenster ausgegeben werden soll]/, $meldungs_text);
SetValueString(32528 /[Allgemein\IPSView\Fenster Meldung]/, „Meldungsfenster allgemein“);

Meine Frage wäre nun: warum wird das Popup Fenster nicht angezeigt?
Besten Dank für Deine Hilfe.
Grüße von
Ekkehard

Moin,

dir fehlt vermutlich noch das Detail Image in deiner View siehe IPSStudio 4.0 Dokumentation

Damit lässt sich übrigens die Position des Popups einigermaßen festlegen :wink:

Gruß
Hans

Hallo Hans,
aber grundsätzlich ist es schon möglich aus einer popup Seite solch eine Meldung auszugeben?
Und das DetailImage, hab’s in der Doku gefunden, muss auf nur auf dem Meldungs-Fenster sein?
Oder auf allen Seiten, die irgendwann mal eine Meldung anzeigen sollen?
Grüße von
Ekkehard

Hi Ekkehard,

wenn es nicht möglich wäre dann hätte ich dir nicht den Weg zur Realisierung beschrieben :smiley:

Das Detail Image muss auf allen Seiten einer View irgendwo versteckt im Hintergrund liegen wo das Popup angezeigt werden soll.

Noch ein Tipp: das intensive Lesen der Doku und hier im Forum schaden nicht :wink: Zum Detail Image gibt es im Forum einige Beiträge.

Gruß
Hans

Hallo Hans,
ein DetailImage lässt sich auf einer Popup Seite nicht einfügen.
Schade, damit wird es bei mir keine Meldungen geben.:mad:
Nochmals Danke und Grüße von
Ekkehard

Hi,

du musst das Detail Image auf die SEITE packen wo das Popup erscheinen soll :wink:

Gruß
Hans

Hallo Hans,
habe eine Popup-Seite wo ich z.B. Eingaben machen kann.
Möchte am Ende des Aktions-Scripts eine Meldung ausgeben.
Aber, wenn ich den DetailImage Button in das Popup Fenster ziehen will erscheint nie ein Button, sondern es sieht aus aus, als wenn dieser Button bei einer Popup Seite nicht möglich wäre.
Und das dies nicht möglich ist steht leider nicht in der Doku.
Grüße von
Ekkehard

Hi,

nein, so wird das wohl nicht funktionieren. Du willst aus einem Popup ein Popup aufrufen und das geht meiner Ansicht nach nicht. Popups haben so einige Beschränkungen.

Was ich nicht verstehe ist, warum du das alles aus einem Popup starten willst. Du hast so viele Möglichkeiten mit Inline Strukturen, dass das vermutlich überhaupt nicht erforderlich ist.

Auch könntest du deine Meldung über eine kleine versteckte Inline Seite anzeigen lassen und dein Skript würde lediglich die Inline Seite sichtbar machen. Dabei ist darauf zu achten, dass diese Inline Seite im Studio vorne liegt. Das behindert beim Arbeiten weshalb man diese Seite zunächst in den Hintergrund legt und am Ende vor dem Speichern nach vorne holt.

Ich würde dir empfehlen dich mit Containern, Inline Seiten usw. zu beschäftigen. Das Feld ist recht umfangreich aber es gibt eigentlich nichts was man nicht irgendwie realisieren kann - auch dein Problem. Am Anfang ist das alles recht verwirrend und da mir das genauso erging kann ich deine Probleme gut nachvollziehen.

Anbei noch View Ausschnitte die dir eine komplette Überlagerung zeigen.

Und nun mit Aktivierung der Inline Seite die den unteren Part überlagert. Diese würde auch mit einem Meldungsfenster gehen.

Gruß
Hans

Guten Morgen Hans,
sorry, ich schon wieder.
Aber ich habe ich den vergangenen Stunden mich intensiv mit der Doku beschäftigt.
Habe erkannt, dass Popup Seiten nicht die gute Wahl war um Detail Daten anzuzeigen.
Habe auf meiner Seite einen Inline-Image-Button eingefügt der eine Inhaltsseite : z.B. Canbus öffnet.
Auf der Hauptseite der View habe ich eine Inhaltsseite angelegt, die die volle Breite der Maske nutzen soll.
Die restlichen Seiten nutzen jeweils nur eine Bildschirmhälfte.
Wenn ich nun den Inline-Image Button drücke wird die Inline Seite geöffnet und überdeckt teilweise den Hintergrund.
Das ist soweit ok.
Mein Problem ist, wie muss ich vorgehen, damit diese Inhaltsseite wieder geschlossen wird?
Bei einer Popup-Seite habe das „X“ schliessen Symbol rechts oben an der Maske.
Danke für Deine Hilfe.
Grüße von
Ekkehard

Moin Ekkehard,

es ist schön zu lesen, dass du neue Erkenntnisse hast :slight_smile:

Das Schließen bzw. Überschreiben des Inhaltes von Inline Seiten kann man erreichen indem man einen neuen Inhalt reinschreibt analog zu dem Wechsel zur Seite hin oder aber wie in meinem Beispiel oben mittels des programmierten kleinen roten Kreuzes, welches den Überlagerungsteil wieder auf unsichtbar stellt. Bei Popups ist das nicht erforderlich.

Letztendlich hängt das alles von der dahinter liegenden Struktur ab. Ich habe das damals so gemacht, dass ich mir für die verschiedenen Clients Zeichnungen mit Buntstift - manchmal sind die einfachsten Mittel auch die besten Mittel - gemacht habe, wo ich die Hauptseite in die Blöcke aufgeteilt habe. Du hast ja für die Fernsteuerung zahlreiche Variablen zur Verfügung mit denen du Teile und Strukturen beeinflussen kannst.

So ist z. B. der linke Part meiner Hauptview auf dem Win IPS Rechner gleichzeitig identisch mit einer Seite auf einem iPad. Dies spart dann reichlich Arbeit :wink: Außerdem ist der linke Teil auf einigen Seiten dann nochmals unterteilt.

Solltest du mehrere Clients haben (IOS, Win Android) würde ich mit Buttons mit Texten sparsam umgehen, da zum einen die Darstellung zwischen den Clients unterschiedlich ist und beim Ändern der Größe einer View für einen anderen Client, die Anzeige dann möglicherweise nicht mehr stimmt. Bei Verwendung von Images hat man das Problem nicht, da diese einfach verkleinert werden. Verhindern lässt sich der Einsatz allerdings nicht (siehe oben die angezeigten Werte).

Gruß
Hans

Hallo Hans,
danke für Deine Antwort.
Dank den drei Komponenten: Nachtruhe, Doku lesen und Deine super Beschreibung bin ich glaube ich auf den richtigen Weg angekommen. Mittels Script Button, einer Fernsteuervariablen für die anzuzeigende InlinePage und einer BoolVar für sichtbar / unsichtbar kann ich nun die Seite aufrufen und mit dem „roten“ X kann ich per Script die Seite wieder korrekt schliessen. Das rote X kann ich entsprechend groß machen, da ich auf einem Touchscreen immer bei den PopUp Seiten das Problem hatte genau das X zu treffen.
Hab jetzt eine Menge Arbeit vor mir, die Popup Seiten auf Inlinepages umzustellen, doch das ich nur Fleisarbeit.
Damit sollte jetzt auch das PopupFenster mit der Meldung funktionieren?
Hast Du noch Einwände gegen den Ablauf?
Danke und Grüße von
Ekkehard

Moin,

das Umstellen von Popup auf Inline sollte schnell erledigt sein. Ich würde einfach die View unter einem anderen Namen speichern, dann die Popups in der einen View löschen, die Inline Seiten einrichten und die Inhalte der Popups von der anderen View komplett rüber kopieren :wink:

Viel Erfolg.

Gruß
Hans

Hallo Hans,
einen Punkt habe ich noch, dann lasse ich Dich wieder in Ruhe:)
Wollte die Popup Meldung testen und habe auf einer inline-page einen Script Button angelegt mit folgendem Code

$meldungs_text = „die Eingabe wurde erfolgreich gespeichert“;
SetValueString(52898 /[Allgemein\IPSView\Text der im Meldungsfenster ausgegeben werden soll]/, $meldungs_text);
SetValueString(32528 /[Allgemein\IPSView\Fenster Meldung]/, „Meldungsfenster allgemein“);

Auf dieser Seite habe ich auch ein DetailImage angelegt:
donnerstag 1.PNG donnerstag 2.PNG

In der View Eigenschaft habe ich unter den Fernsteuerung die Variable 32528 für das popup Fenster erfasst.
Wenn ich nun das Script ausführe, hätte ich erwartet, dass das popup Fenster sich öffnet und die Meldung anzeigt.
Wenn ich auf das DetailImage klicke erscheint das Popup Fenster. Sollte doch aufpoppen, wenn das Script ausgeführt wurde? Sicherlich noch etwas übersehen?
Danke und Grüße von
Ekkehard

Moin,

probier mal

SetValueString(32528 /*[Allgemein\IPSView\Fenster Meldung]*/, "");
sleep(1);
SetValueString(32528 /*[Allgemein\IPSView\Fenster Meldung]*/, "Meldungsfenster allgemein");

Der Grund, die Variable wird nur auf Änderung geprüft und vielleicht war der letzte Wert bereits „Meldungsfenster allgemein“.

Man sollte nichts versprechen was man unter Umständen nicht halten kann :smiley:

Gruß
Hans

Hallo Hans,

Du bist Spitze.
Genau das war das Problem.
Mit diesen drei Zeilen klappt nun auch die Popup Meldung:

SetValueString(32528 /[Allgemein\IPSView\Fenster Meldung]/, „“);
sleep(1);
SetValueString(32528 /[Allgemein\IPSView\Fenster Meldung]/, „Meldungsfenster allgemein“);

Perfekt!
Zu meiner Aussage stehe ich, zumindest für heute !:wink:
Jetzt kann ich wieder aktiv werden.

Danke und Grüße von
Ekkehard

Hi Ekkehard,

ich kann dich trösten - ich habe damals ebenfalls heftig gesucht warum es nicht geht :slight_smile: Und immer bei Popups daran denken, dass ein Detail Image - möglicherweise versteckt oder im Hintergrund - auf den Seiten liegen muss, wo das Popup erscheinen soll.

Gruß
Hans