Macro als Parameter

Moderator: Moderatoren

Antworten
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

Macro als Parameter

Beitrag von AUGE_OHR »

hi,

ich habe so eine Konstruktion

Code: Alles auswählen

   pBarForm( "THUMBS('" + cPath + "')" )
damit geht es in diese Function

Code: Alles auswählen

FUNCTION pBarForm( cFormRun )
   ...
   ON INIT &cFormRun
es wird die Function THUMBS(cPath) ausgeführt "während" die Function pBarForm() ausgeführt wird :oops:

mir ist klar das aus dem String ein Codeblock wird aber "wie" kann die Function pBarForm() laufen "während" der Codeblock läuft :idea:
gruss by OHR
Jimmy
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Macro als Parameter

Beitrag von brandelh »

wenn alles in einem Thread liegt, wartet die aufrufende Funktion, bis der Codeblock abgearbeitet ist ... wenn man es anders will, muss man einen neuen Thread starten und in diesem die Funktion ausführen.
Das habe ich früher für Druckroutinen gemacht, die länger dauerten. Debuggen ist dann aber schwer, daher erst eine normale Funktion bauen zum Testen und danach erst ...

oder habe ich dich wieder mal falsch verstanden ? ;-)
Gruß
Hubert
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: Macro als Parameter

Beitrag von AUGE_OHR »

hi,

aus dem String des Parameter muss ja ein Codeblock gebildet werden damit die Function ausgeführt wird.
das ganze muss ja per EVAL() passieren ... und da gab es doch einen "Trick" unter Cl*pper um ein FOR bzw. WHILE zu "simulieren" ...

es geht darum ein Progressbar anzuzeigen "während" er beim Aufbau der Form ist.
unter Cl*pper ging das so (aus dem Kopf)

Code: Alles auswählen

INDEX ON XXX TO YYY FOR EVAL( Codeblock )
ähnliches ging auch bei COPY oder APPEND FROM mit einem Codeblock der ausgeführt wurde "während" eine Aktion läuft.
klar geschehen beide Schritte nicht "gleichzeitig" und es läuft auch kein zusätzlicher Thread (kennt Cl*pper nicht)

da das ganze mit Cl*pper zu tun hat sind die "Variablen" dann PUBLIC sodas Änderrungen in TBUMBS() auch in pBarForm() "sichtbar" werden und "wirken".

Code: Alles auswählen

FUNCTION pBarForm( cFormRun )
      @  0,  0 PROGRESSBAR ProgressBar_1 RANGE 0, 100 WIDTH nWide HEIGHT nSbHight

PROCEDURE THUMBS( cPath )
   ...
   FOR xx := 1 TO xMax
       ...
       SetProperty( "pbar", "ProgressBar_1", "Value", CalcPos( nCount, nMax ) )
   NEXT
   SetProperty( "pbar", "ProgressBar_1", "Value", 0 )
es ist also Cl*pper Technique nur eben mit OOP

wie bekommt man das mit Xbase++ hin ... das muss doch auch gehen ... :idea:
gruss by OHR
Jimmy
Antworten