Seite 1 von 1

Requester sofort komplett schließen

Verfasst: 02.11.2014 21:19
von derschutzhund
Kann mir jemand sagen wie ich es erzwingen kann, dass der OpenFileRequester sofort komplett geschlossen wird?
In dieser Prozedure wird der OpenFileRequester aufgerufen um eine Datei auszuwählen.
Das geht auch wie gewünscht dann wird das Fenster geschlossen, allerdings bleibt da wo das Fenster war zunächst ein grauer Bereich.
Sind die folgenden Routinen abgearbeitet wird der Bildschirm aktuallisiert und die Anzeige stimmt.
Wie bekomme ich die graue Fläche weg?

LG

Wolfgang

Code: Alles auswählen

Procedure cncquelllesen(EventType)
   Define StandardFile$, Pattern$, Pattern, zeile$, anzahl, Tverwendet$   
   Define stelle.i, speed.f, xpos.f, ypos.f, zpos.f, ipos.f, jpos.f,temp.f, zeit.f, ext.f, wegxy.f, xalt.f, yalt.f, ealt.f
   Define absolut.i, i.i, teilstr$, anzahlfelder.i
   Define maxx.f, maxy.f, maxz.f
   Define minx.f, miny.f, minz.f
   Define xalt.f, yalt.f, zalt.f
   Define faktor.f, msg$, msgtool$, vorbefehl.i, inches.i, hinweis$, TGefunden.i
   Define toolzahl.i, teststr$, gefunden.i
   Define radius1.f, radius2.f
   Define mx.f, my.f, sx.f, sy.f
   Define MaxSpeedZul.i, MaxTiefeZul.f, TBefehlvorhanden.i, ErsterFahrbefehl.i, speedstr$
   Define posi1.i, posi2.i, ToolName.s, hilfstr.s
   Define vstart.f, vend.f, testweg.f, tbeschl.f, sbeschl.f, beschl.f, tfahr.f, vtest.f, druckzeit.f, wegext.f
   Define zalt.f, wegz.f, dx.f, dy.f, zeitraus.f, difwink.f, grenzwinkel.f, vakt.f, weggruppe.f, m.f, winkalt.f
   Define p0.f, p1.f, p2.f
   Define zeilenzahl.i
   
   StandardFile$ = "test.gcode"   ; anfänglichen Pfad + Dateiname festlegen
   Pattern$ = "CNC-Datei (*.gcode)|*.gcode|Alle Dateien (*.*)|*.*"
   Pattern = 0    ; wir verwenden den ersten von drei möglichen Pattern als Standard       
   cncprog$ = OpenFileRequester("CNC-Programm wählen",StandardFile$, Pattern$, Pattern) 
      
   ClearList(cncquelle())
   anzahl = 0
   speed = 0.0
   toolnr = 99
   xpos = 0.0
   ypos = 0.0

Re: Requester sofort komplett schließen

Verfasst: 02.11.2014 21:28
von ts-soft
Informationen sind ja dürftig. Kein OS, keine PB Version, also muß ich von der aktuellen
Version ausgehen. Ich würde sagen, kauf Dir ne aktuelle Grafikkarte oder nen schnelleren
PC, mir sind keine Bugs bekannt.

Zu lange aus dem Eventloop solltest Du auch nicht bleiben.

Gruß
Thomas

Re: Requester sofort komplett schließen

Verfasst: 02.11.2014 21:32
von Kiffi
zur Vermeidung der 'grauen Fläche' könntest Du mal ein

Code: Alles auswählen

While WindowEvent() : Wend
direkt nach OpenFileRequester() einfügen. Allerdings ist das eher ein Notbehelf.

Grüße ... Peter

Verfasst: 02.11.2014 21:32
von CodeCommander
~ DELETE ~

Re: Requester sofort komplett schließen

Verfasst: 02.11.2014 21:39
von derschutzhund
Kiffi hat geschrieben:zur Vermeidung der 'grauen Fläche' könntest Du mal ein

Code: Alles auswählen

While WindowEvent() : Wend
direkt nach OpenFileRequester() einfügen. Allerdings ist das eher ein Notbehelf.

Grüße ... Peter
Vielen Dank Peter!
Funktioniert perfekt!

Liebe Grüße

Wolfgang

Re: Requester sofort komplett schließen

Verfasst: 02.11.2014 21:47
von NicTheQuick
Damit der Fensterinhalt aktualisiert werden kann, muss '(Wait)WindowEvent()' aufgerufen werden. Sonst werden nämlich keine Events abgearbeitet und somit auch keine Fensterinhalte wiederhergestellt.

Edit: Okay, da war ich diesmal aber ganz schön spät dran. :D

Re: Requester sofort komplett schließen

Verfasst: 02.11.2014 21:51
von ts-soft
@CodeCommander
Falls Du die PB Version meinst, die scheint dort schon länger zu stehen, aber bestimmt
nicht aktuell. Aktuell wäre 5.24 LTS. Aber wäre sowieso nicht testbar, da kein ausführbarer
Code, lediglich der Requester und unnützes Zeuchs drum rum, was mit dem Problem nichts
zu tun hat.

Aber Du hast recht, die ganzen Variablen und die Liste in der Procedure, lassen auf längeres
verlassen des EventLoops vermuten, also das übliche Problem, wie NicTheQuick schon sagt,
totes Programm :mrgreen:

Und

Code: Alles auswählen

 While WindowEvent() : Wend 
sollte nur im Notfall benutzt werden, den
ich hier aber nicht unbedingt sehe.

Re: Requester sofort komplett schließen

Verfasst: 02.11.2014 22:14
von derschutzhund
NicTheQuick hat geschrieben:Damit der Fensterinhalt aktualisiert werden kann, muss '(Wait)WindowEvent()' aufgerufen werden. Sonst werden nämlich keine Events abgearbeitet und somit auch keine Fensterinhalte wiederhergestellt.

Edit: Okay, da war ich diesmal aber ganz schön spät dran. :D
Das kann man so nicht sagen! Die Reaktionszeit der anderen war nur extrem kurz und in einigen steckt noch dazu richtig Information! :allright:

Besten Dank!

Wolfgang