SetAppFocus() und ShowModal() [Erledigt]

Grafische Primitive, XbaseParts und Darstellungsfragen allgemein.

Moderator: Moderatoren

Antworten
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14653
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

SetAppFocus() und ShowModal() [Erledigt]

Beitrag von Jan »

Ich benutze eigentlich nie :showmodal(). Jetzt muß ich das aber doch, und habe prompt ein Problem: Ich habe in der Zeile vor dem :showModal() den SetAppFocus() stehen. Der will aber bei der Anzeige des modalen Dialoges den Fokus nicht auf das angegebene SLE setzen. Erst wenn ich TAB drücke, dann steht der korrekt da drin.

Ist das Absicht bei modalen Dialogen, oder habe ich da einen Denkfehler?

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2828
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Hat sich bedankt: 259 Mal
Danksagung erhalten: 12 Mal
Kontaktdaten:

Re: SetAppFocus() und ShowModal()

Beitrag von UliTs »

Hallo Jan,

ich vermute, Du möchtest den Focus auf einem bestimmten Xbp des modalen Fensters haben, wenn dieses angezeigt wird.
Setz am Besten den Focus das gewünschte Xbp in der Show()-Methode.

Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14653
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Re: SetAppFocus() und ShowModal()

Beitrag von Jan »

Hallo Uli,

ach neee. Das klappt in der Tat einwandfrei. Steht nur leider nicht in der Onlinehilfe drin, da wird kein Parameter für :showModal() aufgeführt.

Aber naja, jetzt gehts ja. Vielen Dank für den Hinweis.

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

Re: SetAppFocus() und ShowModal() [Erledigt]

Beitrag von Manfred »

Hm

und wie sieht das dann codemäßig aus?
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: 14653
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Re: SetAppFocus() und ShowModal() [Erledigt]

Beitrag von Jan »

Hallo Manfred,

jetzt rede ich garantiert wieder an Dir vorbei. Aber so:

Code: Alles auswählen

oDlg:showModal(oXbp)
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21189
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: SetAppFocus() und ShowModal() [Erledigt]

Beitrag von Manfred »

Nönö,

genau das war die Frage. Interessant.
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: 14653
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Re: SetAppFocus() und ShowModal() [Erledigt]

Beitrag von Jan »

Uffa! Noch mal Glück gehabt.

Im Ernst. Ich finde das auch interessant. Erst funktioniert ein normales :SetAppFocus() nicht, alternativ klappt das aber mit einem undokumentierten Parameter. Schon merkwürdig. Da würde mich mal der Hintergrund zu interessieren.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15696
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: SetAppFocus() und ShowModal() [Erledigt]

Beitrag von brandelh »

das ist wirklich interessant, ich nutze bei normalen Fenstern sowas in CREATE()

Code: Alles auswählen

   * Formular anzeigen
   ::show()
   SetAppFocus(oWin)  
   SetAppFocus(::sleTest_1)
RETURN self
aber ::showmodal() bleibt ja gerade stehen und geht nicht weiter.
Gruß
Hubert
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2828
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Hat sich bedankt: 259 Mal
Danksagung erhalten: 12 Mal
Kontaktdaten:

Re: SetAppFocus() und ShowModal() [Erledigt]

Beitrag von UliTs »

brandelh hat geschrieben:... ::showmodal() bleibt ja gerade stehen und geht nicht weiter.
Deshalb muss man es auch in der Show()-Methode implementieren! Die wird ja garantiert (auch von ShowModal()!) aufgerufen!
So hat man eine saubere Lösung.

Uli

P.S.
Und wer keine eigene Klasse hat oder haben möchte, um ::Show() zu modifizieren, der kann auch den Callback :setDisplayFocus() benutzen. :D
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15696
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: SetAppFocus() und ShowModal() [Erledigt]

Beitrag von brandelh »

Das ist doch auch SAUBER ... wenn es wie von JAN beschrieben funktioniert ;-)

Code: Alles auswählen

oDlg:showModal(oXbp)
Gruß
Hubert
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2828
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Hat sich bedankt: 259 Mal
Danksagung erhalten: 12 Mal
Kontaktdaten:

Re: SetAppFocus() und ShowModal() [Erledigt]

Beitrag von UliTs »

brandelh hat geschrieben:Das ist doch auch SAUBER ... wenn es wie von JAN beschrieben funktioniert ;-)
Aber nur, wenn es dokumentiert ist :D :D 8) :lol:
Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15696
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: SetAppFocus() und ShowModal() [Erledigt]

Beitrag von brandelh »

Dass die Dokumentation nicht sauber ist ist schon länger klar ... ich erinnere nur an:

Code: Alles auswählen

Syntax 
     MsgBox( <cMessage>, [<cTitle>] ) --> NIL 
Parameter 
<cMessage>
<cMessage> ist eine Zeichenkette, die den Text enthält, welcher in der Messagebox angezeigt werden soll. 
Als Zeilenumbruchzeichen dient Carriage Return (Chr(13)) oder Line Feed (Chr(10)). 
Bei Carriage Return wird der Text in der nächsten Zeile angezeigt und bei Line Feed in der übernächsten Zeile. 
Das Umbruchzeichen Chr(10) fügt also erst eine Leerzeile ein. 
...
Beispiel 
// Meldungen in GUI-Anwendungen anzeigen 
// In dem Beispiel wird eine Messagebox mit einem dreizeiligen 
// Meldungstext angezeigt. Die zweite Zeile ist eine Leerzeile. 
   PROCEDURE Main 
      MsgBox( "Das Programm" + Chr(13) + Chr(10) + "wird jetzt beendet!", "Programmende" ) 
   RETURN 
mir war diese DOKU (diese hier ist aus 1.90.355 ;-) ) in der CTP3 aufgefallen und viel aus allen Wolken ... chr(10) und Leerzeile ...
dann prüfte ich das nach und nix da ...

Code: Alles auswählen

      #define CRLF Chr(13)+Chr(10)
      MsgBox( "Das Programm" + CRLF + "wird jetzt beendet!", "Programmende" )  // so nutze ich das fast immer
      MsgBox( "Das Programm" + Chr(13) + Chr(10) + "wird jetzt beendet!", "Programmende" )
      MsgBox( "Das Programm" + Chr(13) + "wird jetzt beendet!", "Programmende" ) 
      MsgBox( "Das Programm" + Chr(10) + "wird jetzt beendet!", "Programmende" ) 
alle diese Zeilen bewirken (bei mir) das Gleiche, nämlich KEINE LEERZEILE zwischen den beiden Zeilen.
Getestet habe ich mit allen Versionen die bei mir noch installiert sind (1.82.x ff.)
ABER die Verwendung der undokumentierten Parameter ist nicht unsauberer als die richtige Verwendung von MSGBOX(),
die Dokumentation ist falsch ... nur von Funktionen die vom NAMEN her intern sind ( _ am Anfang), sollte man die Finger lassen.
Gruß
Hubert
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2828
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Hat sich bedankt: 259 Mal
Danksagung erhalten: 12 Mal
Kontaktdaten:

Re: SetAppFocus() und ShowModal() [Erledigt]

Beitrag von UliTs »

Das bezieht sich mit Sicherheit auf OS/2 ;-) .
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15696
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: SetAppFocus() und ShowModal() [Erledigt]

Beitrag von brandelh »

das kann ich jetzt nicht mehr testen :D
Gruß
Hubert
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14653
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Re: SetAppFocus() und ShowModal() [Erledigt]

Beitrag von Jan »

Till hat mir gerade beide Punkte bestätigt. Sowohl zu :showModal() als auch zu MsgBox(). in beiden Fällen wird ein PDR (6486 und 6487) angelegt und die Doku überarbeitet.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Antworten