Modales DEWindow über ein DEWindow

Moderator: Moderatoren

Modales DEWindow über ein DEWindow

Beitragvon satmax » Mi, 16. Okt 2013 17:13

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
satmax
1000 working lines a day
1000 working lines a day
 
Beiträge: 776
Registriert: Do, 02. Dez 2010 20:34
Wohnort: Biberbach in Österreich

Re: Modales DEWindow über ein DEWindow

Beitragvon AUGE_OHR » Mi, 16. Okt 2013 21:18

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
AUGE_OHR
Marvin
Marvin
 
Beiträge: 10315
Registriert: Do, 16. Mär 2006 8:55
Wohnort: Hamburg

Re: Modales DEWindow über ein DEWindow

Beitragvon satmax » Do, 17. Okt 2013 14:03

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: 776
Registriert: Do, 02. Dez 2010 20:34
Wohnort: Biberbach in Österreich

Re: Modales DEWindow über ein DEWindow

Beitragvon satmax » Sa, 19. Okt 2013 22:56

Im Prinzip hatte ich einfach 2 Fehler eingebaut. Aufgrund meines Beispielprogrammes konnte mir Clayton in kurzer Zeit helfen.
Gruß
Markus
Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
 
Beiträge: 776
Registriert: Do, 02. Dez 2010 20:34
Wohnort: Biberbach in Österreich


Zurück zu TopDown

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast