DCREAD GUI Eval [ERLEDIGT]

Moderator: Moderatoren

Antworten
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21164
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

DCREAD GUI Eval [ERLEDIGT]

Beitrag von Manfred »

Hi folgendes macht Probleme und ich verstehe nicht warum..

stark vereinfacht.

Code: Alles auswählen

********************************************************************************
PROCEDURE main()
          MEMVAR oHauptDialog
//------------------------------------------------------------------------------
       DCGETOPTIONS;
         ABORTQUERY MSG {|| AppQuit("",.T.,"Programmende mit ESC") };
         AUTORESIZE;
     AUTOWINDOWMENU;
             BORDER XBPDLG_SIZEBORDER;
         CLOSEQUERY MSG {|| AppQuit("",.T.,"Programmende über X-Button") };
               ICON ICON_APPLICATION;
              PIXEL;
              TITLE TokenUpper(SubStr(oSysPara:cProgrammName,1,Rat(".",oSysPara:cProgrammName)-1)) + " (DATENEMPFANG AUSGESCHALTET)"

             DCREAD GUI;
               EVAL {|o| oHauptdialog:setFrameState(XBPDLG_FRAMESTAT_MAXIMIZED),;
                         oDateneingang:disableItem(2),;
                         SetTimerEvent(10000, {|| starteThread(oThread,oEinstellung:neustart,oHauptDialog,oDatenEingang,oSignale) } );
                    };
            OPTIONS GetOptions;
             PARENT @oHauptDialog

          RETURN
Es wird bei Eval gemeckert, das oHauptDialog nicht bekannt ist. Ich denke EVAL wird erst ausgeführt, nachdem alles fertig ist?Vor allen Dingen, der Witz ist ja, wenn der SetTimerEvent nicht drin ist, dann wird oHauptdialog nicht angemeckert.
Zuletzt geändert von Manfred am Do, 26. Aug 2010 9:39, insgesamt 1-mal geändert.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: DCREAD GUI Eval

Beitrag von Tom »

Ja, die Objekte sollten in diesem Augenblick eigentlich bekannt sein. Genaugenommen ist das "o", das Du als Parameter an den EVAL-Codeblock übergibst, Dein "oHauptDialog".

Mach's mal so:

Irgendwo vor dem DCREAD:

Code: Alles auswählen

DCUSEREVENT xbeP_User+110 ACTION {||SetTimerEvent(10000, {|| starteThread(oThread,oEinstellung:neustart,oHauptDialog,oDatenEingang,oSignale) })}
Und im Eval:

Code: Alles auswählen

EVAL {||PostAppEvent(xbeP_User+110)}
Übrigens würde Dein TimerEvent alle tausend Sekunden einen neuen Thread starten, wenn ich das richtig sehe. Das ist doppelt gemoppelt. SetTimerEvent ist schon implizit ein neuer Thread.
Herzlich,
Tom
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21164
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: DCREAD GUI Eval

Beitrag von Manfred »

Hi Tom,

wie schon oben erwähnt, stark verkürzt.

Ich rufe eine Funktion auf, die prüft, ob der Thread schon läuft. Wenn dem so ist, dann passiert erstmal nichts.

Sinn und Zweck soll sein, dass ein Thread automatisch beim Programmstart angestossen wird. Ansonsten soll zu einer bestimmten Zeit das Teil kurz gestoppt und dann wieder gestartet werden. Da ich aber bedingt durch den Fehler es nicht testen kann, weiß ich auch nicht, ob meine Idee so klappt, wie ich es mit vorstelle.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21164
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: DCREAD GUI Eval

Beitrag von Manfred »

Hi Tom,

ich habe einmal zum Test, das "o" aus |o| übergeben, statt oHauptDialog. Es wird ein NIL übergeben. Komisch.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: DCREAD GUI Eval

Beitrag von Tom »

Mach's doch mal so, wie ich oben gezeigt habe.
Herzlich,
Tom
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21164
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: DCREAD GUI Eval

Beitrag von Manfred »

Nur mal so, damit kein Missverständnis auftritt.

Du meintest das so?

Code: Alles auswählen

//------------------------------------------------------------------------------
       DCGETOPTIONS;
         ABORTQUERY MSG {|| AppQuit("",.T.,"Programmende mit ESC") };
         AUTORESIZE;
     AUTOWINDOWMENU;
             BORDER XBPDLG_SIZEBORDER;
         CLOSEQUERY MSG {|| AppQuit("",.T.,"Programmende über X-Button") };
               ICON ICON_APPLICATION;
              PIXEL;
              TITLE TokenUpper(SubStr(oSysPara:cProgrammName,1,Rat(".",oSysPara:cProgrammName)-1)) + " (DATENEMPFANG AUSGESCHALTET)"

        DCUSEREVENT xbeP_User+110 ACTION {||SetTimerEvent(10000, {|| starteThread(oThread,oEinstellung:neustart,oHauptDialog,oDatenEingang,oSignale) })}

             DCREAD GUI;
               EVAL {|o| oHauptdialog:setFrameState(XBPDLG_FRAMESTAT_MAXIMIZED),;
                         oDateneingang:disableItem(2),;
                         PostAppEvent(xbeP_User+110);
                    };
            OPTIONS GetOptions;
             PARENT @oHauptDialog

          RETURN
da passiert gar nichts. Die Funktion starteThread() wird gar nicht aufgerufen.

Ich habe auch einmal einen Blick auf das Event Beispiel von Roger geworfen. Der macht das dort wohl genauso wie ich, nur das er einen "@" vor oHauptDialog setzt. Aber das bewirkt auch nur, dass die Fehlermeldung weg ist, aber trotzdem NIL übergeben wird.

PS: Du warst etwas schneller als ich, ich hatte nur kurz vorher die Sache noch probieren wollen. ;-)
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21164
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: DCREAD GUI Eval

Beitrag von Manfred »

Auch nicht schlecht,

wenn ich das Beispiel User kompiliere, springt sofort mein Virenscanner an und behauptet es wäre ein Trojaner darin. Was es so alles gibt.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: DCREAD GUI Eval

Beitrag von Tom »

Die Funktion starteThread() wird gar nicht aufgerufen.
Hast Du mal 100 Sekunden gewartet? :wink:
Herzlich,
Tom
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21164
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: DCREAD GUI Eval

Beitrag von Manfred »

Aber sischer datt.

Wobei ich aber dann nicht verstehen würde, warum meine Version sofort losprescht und Deine 100 Sekunden warten würde. Ich habe die 10000 mal auf 10 reduziert, aber es tut sich nichts.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16501
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: DCREAD GUI Eval

Beitrag von Martin Altmann »

Und wo hast Du den Aufruf PostAppEvent(xbeP_User+110) :?:

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21164
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: DCREAD GUI Eval

Beitrag von Manfred »

Öh ja, öh,

in dem EVAL vom DCREAD GUI !?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16501
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: DCREAD GUI Eval

Beitrag von Martin Altmann »

Ahh - OK.
Ich nutze kein eXpress++...

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21164
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: DCREAD GUI Eval

Beitrag von Manfred »

:D

Deswegen war ich auch zuerst verwirrt und dachte mir: "Weiß er welche Frage er gestellt hat"?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: DCREAD GUI Eval

Beitrag von Tom »

Ist Deine GetList als lokales Array definiert?
Herzlich,
Tom
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21164
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: DCREAD GUI Eval

Beitrag von Manfred »

Hi Tom,

so sieht es komplett aus

Code: Alles auswählen

#include "appevent.ch"
#include "dcdialog.ch"
#include "dcgra.ch"
#include "dcmsg.ch"
#include "routenverfolgung.ch"
#include "nls.ch"
#include "xbp.ch"
#include "q:\include\inkey.ch"

#pragma Library( "XBTBASE1.LIB")                                                // wird dadurch in keinem
#pragma Library( "XBTBASE2.LIB")                                                // Projektfile mehr benötigt als Angabe
#pragma Library( "XppUI2.lib" )                                                 // für den XbpPrintDialog()
#pragma Library( "dclipx.lib" )

#pragma Library ("q:\zusaetze_gui\allgemein\mk_zusaetze.lib")
********************************************************************************
PROCEDURE appsys()
          RETURN
********************************************************************************
PROCEDURE main()
          LOCAL getlist       := {}
          LOCAL GetOptions

          LOCAL oDateiMenu    := NIL
          LOCAL oDateneingang := NIL
          LOCAL oEinstellung  := NIL
          LOCAL oHilfeMenu    := NIL
          LOCAL oMenuBar      := NIL
          LOCAL oSeparator    := NIL
          LOCAL oSignale      := signale():new()
          LOCAL oStammdaten   := NIL
          LOCAL oThread       := seriellewache():new()

          MEMVAR oHauptDialog
          MEMVAR oMessage
          MEMVAR oPruefen
          MEMVAR oSysPara

          PUBLIC oMessage
          PUBLIC oSysPara                                                       // wegen Thread

          oMessage := nachricht():new()
          oPruefen := pruefen():new()
          oSysPara := systemParameter():new()

          DC_LangMsg(DCLANG_GERMAN)
          DC_DotHotkey(0)                                                       // damit das Dot-Prompt Tool weg ist (kann man auch umlenken)
          SetLocale( NLS_ICURRENCYEURO, "1" )
          SetLocale( NLS_SCURRENCY, Chr(213) )

          oEinstellung := einstellung():new()
          oEinstellung:db_oeffnen(,,,,,,,.T.)

          oEinstellung:schliesse_datenbank()
          DCMENUBAR oMenuBar;
                 ID 999;
          OWNERDRAW;
              TITLE "Menuebar"
//------------------------------------------------------------------------------
          DCSUBMENU oDateiMenu;
             PARENT oMenuBar;
             PROMPT "~Datei";
              TITLE "Datei"

         DCMENUITEM "~Einstellungen";
             ACTION {|| einstellungen() };
             PARENT oDateiMenu;
              TITLE "Einstellungen"

         DCMENUITEM "~Importieren";
             ACTION {|| importieren() };
             PARENT oDateiMenu;
              TITLE "Importieren"

         DCMENUITEM oSeparator;
             PARENT oDateiMenu;
          SEPARATOR

         DCMENUITEM "~Beenden";
             ACTION {|| IF(AppQuit("",.T.,"Programmende"),DC_ReadGuiEvent(DCGUI_EXIT_OK,GetList),NIL)};
             PARENT oDateiMenu;
              TITLE "Beenden"
//------------------------------------------------------------------------------
          DCSUBMENU oDateneingang;
             PARENT oMenuBar;
             PROMPT "Daten~Empfang"

         DCMENUITEM "St~art";
             ACTION {|| oThread:start("datenempfang",oThread,oDateneingang,oHauptDialog)};
             PARENT oDateneingang

         DCMENUITEM "St~op";
             ACTION {|| oThread:terminate()};
             PARENT oDateneingang

         DCMENUITEM "~Fahrtanzeige";
             ACTION {|| oDateneingang:disableItem(3),;
                        signalbrowse(),;
                        oDateneingang:enableItem(3);
                    };
             PARENT oDateneingang
//------------------------------------------------------------------------------
          DCSUBMENU oStammdaten;
             PARENT oMenuBar;
             PROMPT "~Stammdaten";
              TITLE "Stammdaten"

         DCMENUITEM "~Karten erstellen";
             ACTION {|| kartenerstellen() };
             PARENT oStammdaten;
              TITLE "Karten erstellen"
//------------------------------------------------------------------------------
          DCSUBMENU oHilfeMenu;
             PARENT oMenuBar;
             PROMPT "~Hilfe";
              TITLE "Hilfe"

         DCMENUITEM oSeparator;
             PARENT oHilfeMenu;
          SEPARATOR

         DCMENUITEM "~Info";
             ACTION {|| info() };
             PARENT oHilfeMenu;
              TITLE "Info"
//------------------------------------------------------------------------------
       DCGETOPTIONS;
         ABORTQUERY MSG {|| AppQuit("",.T.,"Programmende mit ESC") };
         AUTORESIZE;
     AUTOWINDOWMENU;
             BORDER XBPDLG_SIZEBORDER;
         CLOSEQUERY MSG {|| AppQuit("",.T.,"Programmende über X-Button") };
               ICON ICON_APPLICATION;
              PIXEL;
              TITLE TokenUpper(SubStr(oSysPara:cProgrammName,1,Rat(".",oSysPara:cProgrammName)-1)) + " (DATENEMPFANG AUSGESCHALTET)"

        DCUSEREVENT xbeP_User+110 ACTION {||SetTimerEvent(10000, {|| starteThread(oThread,oEinstellung:neustart,oHauptDialog,oDatenEingang,oSignale) } ) }

             DCREAD GUI;
               EVAL {|o| oHauptdialog:setFrameState(XBPDLG_FRAMESTAT_MAXIMIZED),;
                         oDateneingang:disableItem(2),;
                         PostAppEvent(xbeP_User+110);
                    };
            OPTIONS GetOptions;
             PARENT @oHauptDialog

          RETURN
********************************************************************************
CLASS seriellewache FROM thread
      PROTECTED:

      EXPORTED:
      VAR gestartet,;
          tageswechsel,;
          terminated

      EXPORTED:
      INLINE METHOD init
             ::thread:init()
             ::tageswechsel := .F.
             ::terminated   := .F.
             ::gestartet    := .F.
      RETURN self

      INLINE METHOD terminate
      RETURN(::terminated := .T.)

      METHOD checktermination
ENDCLASS
********************************************************************************
METHOD seriellewache:checkTermination()
       IF ::terminated
          ::terminated := .F.
       ENDIF
RETURN self
********************************************************************************
FUNCTION starteThread(oThread,cNeustart,oHauptDialog,oDateneingang,oSignale)
         LOCAL lErfolg := .F.

         oSignale:cPfad  += "/" + Alltrim(Str(Year(Date()))) + "/" + Alltrim(Str(Month(Date()))) + "/"
         oSignale:cDbank += DToS(Date())
         IF Time() > PosIns(cNeustart,":",3)
            IF oThread:gestartet
               IF ! File(oSignale:cPfad + oSignale:cDbank + ".dbf")
                  oThread:tageswechsel := .T.
               ENDIF
            ELSE
               lErfolg := .T.
            ENDIF
         ENDIF
         RETURN(lErfolg)
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21164
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: DCREAD GUI Eval

Beitrag von Manfred »

Also das muß ich ja nicht verstehen....

Code: Alles auswählen

EVAL {|o| oHauptdialog:setFrameState(XBPDLG_FRAMESTAT_MAXIMIZED),;
                         oDateneingang:disableItem(2),;
                         test(oHauptdialog),;
                         SetTimerEvent(10000, {|| starteThread(oThread,oEinstellung:neustart,oHauptDialog,oDatenEingang,oSignale) } );
                    };
wenn ich eine kleine test() Funktion einbaue, dann ist dort oHauptDialog bekannt und wird auch entsprechende empfangen in der Funktion. SetTimerEvent() kennt oHauptDialog aber nicht. :confused2:
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: DCREAD GUI Eval

Beitrag von Tom »

Mach oHauptDialog mal LOCAL. PRIVATES als Parameter für neue Threads, die aus Codeblöcken heraus gestartet werden, funktionieren nicht. Oder mach die Variable PUBLIC und nimm sie ganz aus den Parametern raus. oHauptDialog gibt's ja vermutlich sowieso nur einmal, und da spielt es dann auch keine Rolle, ob der GC aufräumen kann oder nicht.

Warum das mit DCUSEREVENT/PostAppEvent() nicht funktioniert, ist mir allerdings ein Rätsel. Ich arbeite viel damit, weil DCREAD eben doch nicht ganz "fertig" ist, wenn der EVAL-Codeblock aufgerufen wird.
Herzlich,
Tom
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21164
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: DCREAD GUI Eval

Beitrag von Manfred »

Hi Tom,

so kann man es machen. Aber wo steht das mit Private und Codeblock usw, was Du anführst?

Ich wäre da nie drauf gekommen, weil ich ja von Private und Public so gut wie weg will. Aber das Thema hatten wir ja schon zur genüge hier im Forum, was Sinn macht und was nicht.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Juergen
UDF-Programmierer
UDF-Programmierer
Beiträge: 92
Registriert: Di, 19. Dez 2006 19:37
Wohnort: Düsseldorf
Kontaktdaten:

Re: DCREAD GUI Eval

Beitrag von Juergen »

Hallo Manfred,

mache das doch bevor Du den Dialog aufbaust.


SetTimerEvent( 100, {||starteThread(.....)} )

Aufbau des Dialoges mit @dcsay .... get usw.
dcread gui ....

SetTimerEvent(0)

Gruß Jürgen
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21164
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: DCREAD GUI Eval

Beitrag von Manfred »

Hi Jürgen,

das geht nicht so ganz. Im Thread wird der Titel von oHauptDialog geändert und der ist ja zu dem Zeitpunkt noch nicht erstellt.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: DCREAD GUI Eval

Beitrag von Tom »

Hallo, Manfred.

Es war mal wieder Zeit für ein neues MANFRED.PRG :badgrin:

Das hier funktioniert bei mir einwandfrei. Alle zehn Sekunden ändert sich der Titel des Dialogs:

Code: Alles auswählen

STATIC nCounter

#include "dcdialog.ch"
#include "appevent.ch"
#pragma library("dclipx.lib")

PROCEDURE appsys() ; RETURN

PROCEDURE MAIN()
LOCAL GetList := {}, oDialog, oMenu

nCounter := 0

DCMENUBAR oMenu
DCSUBMENU oTestMenu PROMPT 'Test' PARENT oMenu
DCMENUITEM PROMPT 'Exit' PARENT oTestMenu ACTION {||DC_ReadGuiEvent(DCGUI_EXIT_OK,GetList)}

@  1,1 DCSAY 'Hallo, Welt'

@ 20,1 DCSAY 'Aber sowas von hallo'

DCREAD GUI EVAL {||SetTimerEvent(1000,{||ResetCaption(oDialog)})} ADDBUTTONS PARENT @oDialog TITLE 'Test'

RETURN

PROC ResetCaption(oDialog)
nCounter ++
oDialog:SetTitle('Test '+Str(nCounter))
RETURN
Herzlich,
Tom
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: DCREAD GUI Eval

Beitrag von Tom »

Und noch die Gegenprobe mit DCUSEREVENT und PostAppEvent() - funzt auch:

Code: Alles auswählen

STATIC nCounter

#include "dcdialog.ch"
#include "appevent.ch"
#pragma library("dclipx.lib")

PROCEDURE appsys() ; RETURN

PROCEDURE MAIN()
LOCAL GetList := {}, oDialog, oMenu

nCounter := 0

DCMENUBAR oMenu
DCSUBMENU oTestMenu PROMPT 'Test' PARENT oMenu
DCMENUITEM PROMPT 'Exit' PARENT oTestMenu ACTION {||DC_ReadGuiEvent(DCGUI_EXIT_OK,GetList)}

@  1,1 DCSAY 'Hallo, Welt'

@ 20,1 DCSAY 'Aber sowas von hallo'

DCUSEREVENT xbeP_User + 110 ACTION {||SetTimerEvent(1000,{||ResetCaption(oDialog)})}

DCREAD GUI EVAL {||PostAppEvent(xbeP_User+110)} ADDBUTTONS PARENT @oDialog TITLE 'Test'

RETURN

PROC ResetCaption(oDialog)
nCounter ++
oDialog:SetTitle('Test '+Str(nCounter))
RETURN
Herzlich,
Tom
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21164
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: DCREAD GUI Eval

Beitrag von Manfred »

Hm,

ich verstehe das jetzt nicht. Es klappt doch Dank des PUBLIC Setzens von oHauptDialog, alles so, wie ich es haben will. Das hatte ich doch oben geschrieben.

Danke nochmals für die Hilfe....
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: DCREAD GUI Eval [ERLEDIGT]

Beitrag von Tom »

Ich wollte Dir nur zeigen, dass es mit LOCALs geht. Bei PRIVATEs müsstest Du mit MemVarBlock() arbeiten.
Herzlich,
Tom
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21164
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: DCREAD GUI Eval [ERLEDIGT]

Beitrag von Manfred »

Ach so,

das habe ich falsch interpretiert. Sorry.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Antworten