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?
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.
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.