Sichtbereich Workaera?

Alle Fragen um die Programmierung, die sich sonst nicht kategorisieren lassen. Von Makro bis Codeblock, von IF bis ENDIF

Moderator: Moderatoren

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

Sichtbereich Workaera?

Beitrag von satmax »

Ich rufe aus dem Hauptmenü meine Auftragsbearbeitung als eigenen Thread auf. Dieser Thread erweitert auch Menüstruktur des Hauptmenüs. Rufe ich via einem so erstellten Menüpunkt eine Funktion auf, habe ich innerhalb dieser Funktionen keinen Zugriff auf die Daten (Workarea) des Threads, irgendwie ja logisch. Nur wie komme ich die Daten des jeweils aktiven Threads?

Geht das überhaupt?
Gruß
Markus
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Sichtbereich Workaera?

Beitrag von AUGE_OHR »

satmax hat geschrieben:Geht das überhaupt?
JA.

1.) du könntest mit dem ZeroSpace arbeiten
2.) du benutzt die Windows Queue

zu 1.) kann ich nicht viel sagen weil ich es nicht benutze.
zu 2.) mache es auf die Windows Art zum übergeben von Parameter.

Xbase++ kennt PostAppEvent und UserDef Events

Code: Alles auswählen

// Userdef Events
#define MyEnter       xbeP_User + 4711
#define MyAbort       xbeP_User + 4712

Proc Main
LOCAL oDialog
LOCAL oThread := Thread():new()
...
   oThread:start(  {|| DoMyThread(oDialog) } )
...
   nEvent := xbe_None
   DO WHILE !lExit
      DO CASE
         //
         // your Userdef Events
         //
         CASE nEvent == MyEnter
             DoNextStep(mp1)
         CASE nEvent == MyAbort

         OTHERWISE
            oXbp:HandleEvent ( nEvent, mp1, mp2 )
      ENDCASE
   ENDDO
...
RETURN

Proc DoMyThread(oMain)
LOCAL aReturn := {}
   // do your stuff here
   // and aadd Result to Array
   aadd(aReturn, Customer->Firstname)
   aadd(aReturn, Customer->Lastname)
   ...
   // post Array into Queue
   PostAppEvent(MyEnter, aReturn, , oMain)
RETURN
gruss by OHR
Jimmy
Antworten