Zeitspanne warten



  • Tach auch,

    ich hab folgendes Problem:
    ich hab ein Frame und mit mehreren buttons.
    bei 2 davon hätte ich ganz gerne, dass die automatisch beim programmstart ausgeführt werden.
    das problem ist jetzt das der eine button auf einen anderen frame zugreift der aber noch nicht erzeugt ist -> exception.

    bisher habe ich das über OnActivate oder OnShow probiert, beides funktionierte nicht.

    kann man irgendwie dem programm noch 1 sekunde zeit geben den rest zu laden und dann erst die aktionen auszuführen.

    also so in etwa

    // 1 sekunde warten
    button1->Click();
    button2->Click();
    

    oder gibt es vielleicht irgend ein anderes event was ausgelöst wird wenn alles(!) andere geladen ist?

    Danke im voraus

    cu Errraddicator



  • Ganz brutal!:

    mach Dior nen Timer in die Form.
    Beim Start wird der eingestellt und aktiviert.

    Nach der Zeit 'drueckt der auf die Knoepfe' und deaktiviert sich.

    PS: kann sicher auch dyn. erzeugt werden.



  • ich glaube, dass dei porblem wo anders leigt, als dass der frame noch nicht erzeugt ist. meiner meinung nach, wird OnShow erst ausgelöstz, wenn dalles erzeugt wurde.



  • Am saubersten wäre es sicherlich, die entsprechenden Formulare selbst zu laden, anstatt sie automatisch laden zu lassen.
    Ansonsten gäbe es noch die Möglichkeit ComponentState auf csLoading abzuprüfen. Dann weißt Du wenigstens, dass die Komponente
    (in diesem Fall ein Formular oder ein Frame) entweder vollständig oder nicht vollständig geladen ist.

    Gruß,

    Alexander



  • Konsti schrieb:

    ich glaube, dass dei porblem wo anders leigt, als dass der frame noch nicht erzeugt ist. meiner meinung nach, wird OnShow erst ausgelöstz, wenn dalles erzeugt wurde.

    Nein, das stimmt so nicht.
    Das Ereignis OnShow wird aufgerufen, wenn das Fenster angezeigt wird.



  • @DJ BlackEagle:
    ja, aber angezeigt wird es erst, wenn alles geladen ist..



  • Hallo guten Morgen,
    ich habe mal etwas zum Thema "TEvent" aus der Hilfe kopiert, möglicherweise ist es das wonach du suchst:

    Mit TEvent läßt sich signalisieren, daß ein Ereignis aufgetreten ist oder ein bestimmter Status erreicht wurde.

    In einer Multithread-Anwendung kann TEvent verwendet werden, damit ein Thread anderen Threads signalisieren kann, daß ein Ereignis ausgelöst wurde.

    Das Handle eines TEvent-Objekts kann auch zur Kommunikation mit anderen Verfahren dienen, so daß eine Anwendung den zeitlichen Ablauf von Ereignissen mit anderen Anwendungen abstimmen kann. Sie können beispielsweise das Handle eines TEvent-Objekts nutzen, um abzuwarten, bis ein anderer Prozeß bereit ist, Informationen über einen Aufruf der Windows-API zu transferieren.

    In einer Singlethread-Anwendung kann TEvent die Koordination von Quelltextabschnitten übernehmen, die auf asynchrone Ereignisse wie z.B. Windows-Botschaften reagieren.

    Viel Erflog
    Evi48


Anmelden zum Antworten