Seite 1 von 1

Falscher Bildschirm [ERLEDIGT]

Verfasst: Mi, 27. Apr 2016 15:43
von RUzZlacK
Moin,

ganz kurz: Wenn ich ein neues Fenster aus dem Programm heraus öffne, öffnet es sich auf dem anderem Bildschirm. Soll sich aber da öffnen von wo es auch aufgerufen wurde bzw. da wo das Parentfenster ist.
Für alle Tipps offen.

Kann mir vorstellen ist sehr einfach zu lösen nur will bei mir irgendwie nicht klappen.

Danke im voraus,

Alex

Re: Falscher Bildschirm

Verfasst: Mi, 27. Apr 2016 15:45
von georg
Hallo, Alex -


wie erzeugst Du das Fenster? Ein wenig Code ist immer hilfreich.

Re: Falscher Bildschirm

Verfasst: Mi, 27. Apr 2016 15:55
von RUzZlacK
georg hat geschrieben:Ein wenig Code ist immer hilfreich.

Code: Alles auswählen

PROCEDURE proc_main_chatkundenversion(oDlg)

   LOCAL oDlg_chatkundenversion


   SET CHARSET TO ANSI
   SET DATE TO GERMAN

   oDlg_chatkundenversion:= chatkundenversion():New(,oDlg)


   oDlg_chatkundenversion:title:= "Chat"
   oDlg_chatkundenversion:maxSize:={648,413}
   oDlg_chatkundenversion:minSize:={648,413}

   oDlg_chatkundenversion:Create()



   //CenterControl(oDlg_chatkundenversion)
   SetAppFocus(oDlg_chatkundenversion)

   oDlg_chatkundenversion:close:= {||oDlg_chatkundenversion:Destroy()}

   oDlg_chatkundenversion:buttonErweitert:Activate:= {|| proc_showAdvancedConfig(oDlg_chatkundenversion)}

RETURN
Ist bisher nicht viel.
Erstellt mit dem Formdesigner

Re: Falscher Bildschirm

Verfasst: Mi, 27. Apr 2016 15:56
von brandelh
ein neues Fenster wird durch aPos posioniert. Normal ist das recht klein und somit auf dem ersten Monitor.
Wenn du beim parent abfragst wo er steht, kannst du die Werte vor der Anzeige anpassen.

Re: Falscher Bildschirm

Verfasst: Mi, 27. Apr 2016 19:19
von Herbert
...oder setzt die Ecke relativ zum Parent.

Re: Falscher Bildschirm

Verfasst: Do, 28. Apr 2016 9:08
von RUzZlacK
brandelh hat geschrieben:ein neues Fenster wird durch aPos posioniert. Normal ist das recht klein und somit auf dem ersten Monitor.
Wenn du beim parent abfragst wo er steht, kannst du die Werte vor der Anzeige anpassen.

Wie kann ich den abfragen wo er steht? Also nicht nur x und yPos.
Ja, aPos Positioniert, aber wie soll das den dann auf den anderen Bildschirm hinpositioniert werden?

Re: Falscher Bildschirm

Verfasst: Do, 28. Apr 2016 9:22
von georg
Leider zeigt Dein Code nur, wie Du Dein Objekt erstellst, nicht jedoch den XbpDialog(). Dieser Code wäre noch interessanter (und es war dieser Code, auf den ich mich zuerst bezog). In dem Code hier übergibst Du weder Position noch Grösse. Laut Dokumentation ist die Position {0, 0}, wenn keine vorgegeben wird, und die Grösse ist ebenfalls {0, 0}, wenn keine vorgegeben wird.

Da ein Fenster erscheint, musst Du zumindest die Grösse und (höchstwahrscheinlich) auch die Position vorgeben. Und da liegt der Knackpunkt: wie sieht dieser Code aus?

Re: Falscher Bildschirm

Verfasst: Do, 28. Apr 2016 12:24
von RUzZlacK
georg hat geschrieben:Leider zeigt Dein Code nur, wie Du Dein Objekt erstellst, nicht jedoch den XbpDialog(). Dieser Code wäre noch interessanter (und es war dieser Code, auf den ich mich zuerst bezog). In dem Code hier übergibst Du weder Position noch Grösse. Laut Dokumentation ist die Position {0, 0}, wenn keine vorgegeben wird, und die Grösse ist ebenfalls {0, 0}, wenn keine vorgegeben wird.

Da ein Fenster erscheint, musst Du zumindest die Grösse und (höchstwahrscheinlich) auch die Position vorgeben. Und da liegt der Knackpunkt: wie sieht dieser Code aus?
Super danke! Hab´s herausgefunden. Das war der Suchansatz den ich gebraucht habe.

Code: Alles auswählen

METHOD _chatkundenversion:init( oParent, oOwner, aPos, aSize, aPP, lVisible )


   DEFAULT oParent  TO AppDesktop(), ;
           aPos     TO {-1178,500}, ;
           lVisible TO .F.
Es öffnet sich automatisch im Minus Bereich, warscheinlich weil das laut dem System der erste Bildschirm ist, obwohl sich das Hauptfenster auf dem anderem öffnet.

Jedenfalls vielen Dank!


EDIT:

Gelöst hab ich das Problem so:

Code: Alles auswählen

 memPosODlg := oDlg:currentPos()

   IF memPosODlg[1] >= 0

      CenterControl(oDlg_chatkundenversion)

   ENDIF
Das öffnet mein(e) Fenster immer im richtigen Bildschirm.