SLE auf Aktiv abfragen

Klassen, Objekte, Methoden, Instanzen

Moderator: Moderatoren

Antworten
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21198
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

SLE auf Aktiv abfragen

Beitrag von Manfred »

Hi,

noch ne heiße Frage.

Da ich eine Eingabemaske habe, die für Erfassen/suchen/ändern/ usw herhalten muß, versuche ich möglichst jede Art der Bearbeitung oben in der Titelzeile anzeigen zu lassen. Also, wenn ich Neuerfasse, dann steht oben in Klammer Neuerfassen und bei Änderung usw. eben Ändern. Jetzt stellt sich mir nur die Frage, wie kann ich dem Teil klarmachen, dass die Anwendung eigentlich auf den Pushbuttons steht und kein SLE mehr aktiv ist, sodaß der Hinweis oben wieder verschwindet? Gibt es da was, oder muß man alle einzeln abfragen, oder wie macht man sowas? Und vor allen Dingen WO wird sowas gemacht? Den Titel ändern, mache ich direkt über die Aktivierung mit dem jeweiligen Pushbutton.
Zuletzt geändert von Manfred am Mo, 10. Dez 2007 20:26, insgesamt 1-mal geändert.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9367
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 102 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Beitrag von Tom »

Hallo, Manfred.

SetAppFocus() gibt Dir jederzeit das Objekt zurück, auf dem der Fokus steht. Mit SetAppFocus():IsDerivedFrom() oder SetAppFocus():ClassName() kannst Du abprüfen, welche Basisklasse benutzt wird (also z.B. XbpSLE oder XbpPushButton).

Edit: Ich nehme an, daß es einen Pushbutton für Neueingabe und/oder einen für Änderung gibt. Dann sollte es auch einen geben (oder irgendwas), das die jeweilige Aktivität beendet ('Speichern'?). Dort müßtest Du dann im Codeblock den Titel des Dialogs wieder zurückändern.
Herzlich,
Tom
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21198
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Beitrag von Manfred »

Hi Tom,

das habe ich so verstanden.

Jetzt kommt aber gleich die nächste Frage hinterher. Wo im Programm frage ich die Sache ab? Ich meine, beim VIO wußte ich alles was nach dem READ kommt, aber was mache ich im GUI? Das Programm ist ja im Grunde genommen IMMER im Wartezustand um dann zu reagieren. Oder muß ich irgendwas bei den Pushbuttons einbauen, dass dort was passiert, wenn die aktiv sind? Ich habe mal wieder keine Ahnung, wo ich dann den Abfragehebel ansetzen muß.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9367
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 102 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Beitrag von Tom »

Noch eine Ergänzung:

Jedes XbpPart verfügt über die beiden Slots :SetInputFocus und :KillInputFocus. Dort kannst Du Codeblöcke hineinstopfen, die irgendwas tun, sobald das Objekt den Focus bekommt oder verliert.
Herzlich,
Tom
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9367
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 102 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Beitrag von Tom »

Gegenfrage: Wie beendet Dein Benutzer die Neuerfassung oder Bearbeitung? Es muß doch irgendwas geben, das zur Speicherung der Daten und/oder zum Ent-Locken des Datensatzes führt.
Herzlich,
Tom
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21198
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Beitrag von Manfred »

Hi Tom,

auch alles klar, benutze ich auch, aber woher weiß das Programm, dass jetzt das letzte SLE den Focus verloren hat? Mal dumm gefragt. Das hieße ja, ich müßte es in jedem KillInputFocus setzen, denn ich kann ja mit der Maus in ein SLE hüpfen, welches per TAB gar nicht an der Reihe wäre und somit würde beim letzten SLE die Eingabemaske nicht verlassen werden.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14655
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Beitrag von Jan »

Manfred,

frag doch beim letzten SLE im :killInputFocus() einfach ab, ob alles erforderliche ausgefüllt ist? Das kannst Du ja in eine kleine Funktion auslagern. Und wenn was fehlt, springt der Cursor in das betreffende SLE zurück.

Jan
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21198
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Beitrag von Manfred »

Hi Jan,

ich will nicht in ein anderes SLE springen, ich will wissen, wann ich aus der "GET" Maske raus bin um den Dialogtitel wieder auf den Ursprung zurückzusetzen. Sprich, dass da oben nicht mehr Erfassen oder Ändern oder so steht.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14655
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Beitrag von Jan »

Hallo Manfred,

sorry, dann hab ich Dich falsch verstanden. Ich hab das so verstanden, daß per Maus die von Dir vorgegebene Reihenfolge unterbrochen wird und dennoch gesichert ist, daß alles sauber läuft.

Und das mit dem in ein SLE springen war nur dazu gedacht, übersprungene SLE zum Ausfüllen zu erzwingen.

Ich muß gestehen daß ich nicht wirklich verstanden habe, was Du genau erreichen möchtest. Möchtest Du feststellen, wann Du die Erfassung erledigt hast? Oder wie?

Jan
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9367
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 102 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Beitrag von Tom »

Hallo, Manfred.

Du hast meine Gegenfrage nicht beantwortet - wie bekommst Du im Moment heraus, daß der Erfassungsprozeß beendet ist? Oder geht es Dir um genau das? Ich meine, Du mußt doch irgendwas tun in Deiner App, außer nur den Titel des Fensters zu ändern. Oder verstehe ich da strukturell etwas falsch?
Herzlich,
Tom
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21198
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Beitrag von Manfred »

Sorry Tom, habe ich total übersehen.

Also es sieht so aus: Ich drücke einen Button und die SLE werden aktiv. Gleichzeitig wird der Titel des Dialoges geändert und es erscheint oben der Hinweis, was gerade gemacht wird. Das klappt alles. Jetzt möchte ich aber haben, dass der Titel wieder geändert werden kann, wenn kein Eingabefeld (egal welcher Art später) aktiv ist. Weil, dann ist ja nichts angesagt und der Hinweis muß weg.

Ich vermute einmal, dass ich das ganze Konzept wohl falsch angegangen bin.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9367
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 102 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Beitrag von Tom »

Hallo, Manfred.

Du solltest den Button, der benutzt wird, um den Bearbeitungsgang auszulösen, in diesem Moment mit einer anderen Caption ('Speichern') versehen (:SetCaption). Und eine logische Variable toggeln, die festhält, ob man gerade bearbeitet oder nicht (lEdit := !lEdit). Abhängig von dieser Variabeln löst dann der Button beim Speichern einen anderen Prozeß aus - er speichert durch und ändert den Titel des Fensters zurück ({||IF(lEdit,Speichern(),Bearbeiten()}). Feddisch. 8)
Herzlich,
Tom
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21198
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Beitrag von Manfred »

Jupp,

so ist das. Bisher mache ich es ja so, aber ich möchte den schwebenden Zustand erwischen. Im Moment ist es so, wenn ich das letzte SLE verlasse (ich spreche immer noch wie bei GETS) dann wird der Button Speichern aktiv, aber noch nicht ausgelöst. Es kann im Prinzip jetzt alles gemacht werden. Aber die letzte Aktion steht noch oben drin. Ich habe aber in diesem schwebenden Zustand keine Ahnung, wie ich den Titel neu setzen kann.

Wenn ich allerdings jetzt ein wenig nachdenke, dann komme ich zu dem Schluß, dass es evtl. doch nicht so verkehrt ist, wenn die letzte Aktion im Titel bleibt, weil dann der User halt die Info hat, er befand sich im Suchen, Ändern, oder Neuerfassen. Ich glaube das lasse ich so.

Aber trotzdem würde mich interessieren, ob es für diesen "schwebenden" Zustand eine Möglichkeit irgendeiner Abfrage gibt, was denn nun gerade angesagt ist am Bildschirm?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1930
Registriert: Do, 09. Nov 2006 10:33
Wohnort: Bergheim
Danksagung erhalten: 3 Mal
Kontaktdaten:

Beitrag von Rolf Ramacher »

Hi Manfred,

ich bringe meine Sachen ja heute mit. Vielleicht haben wir Zeit und ich zeige dir wie ich dies bei mir gemacht habe. Dann wird es bestimmt deutlicher.
Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16517
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Manfred,
mach' mal langsam, Du schiesst schon wieder zu weit :D
Es gibt nix schwebendes bei Deiner Beschreibung (oder Deinem Zustand :lol:)
Solange der User nicht auf Speichern klickt, befindet er sich natürlich noch immer im Modus Erfassen bzw. Ändern.
Insofern ist schon alles schön, so wie Du es im Moment hast!

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21198
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Beitrag von Manfred »

Hi Martin,

jaja, ich hatte es immer schon mit den Waffen ....

Aber es ist doch kein "Cursor" mehr in irgendeinem SLE, wieso befindet sich das Programm dann immer noch im Eingabezustand? Diese Denkweise ist mir irgendwie noch verdammt fremd.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Antworten