Modales DEWindow über ein DEWindow

Moderator: Moderatoren

Antworten
Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
Beiträge: 829
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich
Danksagung erhalten: 1 Mal
Kontaktdaten:

Modales DEWindow über ein DEWindow

Beitrag von satmax »

Ich möchte über ein bestehendes DEWindow (nicht modal, eigener Tread) ein modales DEWindow öfnnen um die Datensätze einer Subtabelle zu bearbeiten.

Das 2 Fenster, also das modale habe ich wie folgt erstellt:

Code: Alles auswählen

LOCAL oParent := AppDeskTop()
LOCAL oOwner  := SetAppWindow()
...
oDlg := myDEsubClassF3():new(nRows,nCols,;
        /*cTitle*/,;
            oParent,oOwner,,threadObject():threadId/5,threadObject():threadId/5)

oDlg:create()
// Sicher Modal machen
oDlg:setModalState(XBP_DISP_APPMODAL)
Im Anzeigemoduls kann ich blättern mit den Bildtasten aber nicht mit e in den Editmodus schalten, drücke ich direkt auf den "Edit" Button kann ich editieren. Im Editmodus kann ich zwar Daten eingeben, Aber Enter, Tab usw. funktionieren nicht. BildRunter zum Speichern geht aber wieder.

Im Debugger sieht man, das alle nicht funktionieren Tasten im KeyHandler des ersten Fensters ankommen.

Wie kann ich sicherstellen das alle Tasten in meinem modalen Fenster ankommen?


Gruß
Markus
Gruß
Markus
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12493
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 3 Mal
Danksagung erhalten: 6 Mal

Re: Modales DEWindow über ein DEWindow

Beitrag von AUGE_OHR »

hi,

ein Thread, der Events verarbeiten soll, benötigt eine eigene Event loop.
Ich möchte über ein bestehendes DEWindow (nicht modal, eigener Tread) ein modales DEWindow öfnnen um die Datensätze einer Subtabelle zu bearbeiten.
also wenn im 1st Fenster z.b. ein Browse zur Auswahl ist und du dann "e"dit drückst und er dir eine Detail Maske aufmacht.

dafür ist Thread richtig, aber wieso dann modal ? alles was im Thread ist läuft doch "unabhängig" vom Main.
gruss by OHR
Jimmy
Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
Beiträge: 829
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: Modales DEWindow über ein DEWindow

Beitrag von satmax »

So ähnlich, aber ss ist etwas komplexer.

Ich habe ein DEWIn in einem eigenen Tread laufen. In diesem Fenster werden Daten aus ca. 8-10 Tabellen angezeigt. 3 dieser Datenbanktabellen werden im ersten DEWin als Browsercontrol angezeigt. Normale Dialoge kann ich ohne Probleme öfnnen und darin einen Datensatz bearbeiten und speichern.

Folgendes arbeitet Problemlos:
xAunr:=tdGetStr("Zu suchende Auftragsnummer:",12)

auch MultiGet ist kein Problem:
aRetGets:=tdMultiGet1("Bearbeite XY",aGets,/*[bGlobalVal]*/,/*[nStartGet]*/,/*[cTitle]*/,/*[aColor]*/,/*[cGetFont]*/,;
/*[cLabelFont]*/,/*[cBord]*/,/*[nRowAdj]*/,/*[nColAdj]*/,/*[lShowBttns]*/,/*[oOwner]*/, ;
/*[lModal]*/ .T. , /*[lEnterOn]*/ .T. ,/*<xx>*/,/*[nIcon]*/,/*[cMsgFont]*/,/*[lStatBar]*/,;
/*[nDlgWd]*/,/*[nDlgHt]*/,/*[lOvdPx]*/,/*[nLabelClr]*/,/*[aHiLiteClr]*/,/*[aActvClr]*/,/*[bEscVal]*/)


Bloss wenn auch aus einem DEWin en weiters DEWIn aufrufe klappt es nicht. Es werden dann Teile der Tastatureingabe an des erste DEWin gesandt, obwohl das 2. DEWin aktiv ist, focus hat und auch modal ist.

Ich habe testweise das 2. DEWin auch schon in einem eigenen Tread laufen lassen (DB nochmals geöffnet), aber immer das gleiche Verhalten. Möglichweise versuche ich das in einem kleinem Testprogramm nachzustellen und schicke es dann zu Clayton.


Gruß
Markus
Gruß
Markus
Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
Beiträge: 829
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: Modales DEWindow über ein DEWindow

Beitrag von satmax »

Im Prinzip hatte ich einfach 2 Fehler eingebaut. Aufgrund meines Beispielprogrammes konnte mir Clayton in kurzer Zeit helfen.
Gruß
Markus
Antworten