Requester sofort komplett schließen

Anfängerfragen zum Programmieren mit PureBasic.
derschutzhund
Beiträge: 328
Registriert: 06.06.2013 20:37
Computerausstattung: Satellite A210-19Z, Samsung Netbook N130, VPAD10

Requester sofort komplett schließen

Beitrag 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
Satellite A210-19Z, Samsung N130, VPAD10, WinXP, Win7, PuppyLinux, PB 5.24, 5.31. 5.70
Elektronik, Mikrocontroller, CNC-Technik, 3D-Druck
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Requester sofort komplett schließen

Beitrag 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
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Requester sofort komplett schließen

Beitrag 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
a²+b²=mc²
Benutzeravatar
CodeCommander
Beiträge: 213
Registriert: 02.03.2014 16:06

Beitrag von CodeCommander »

~ DELETE ~
Zuletzt geändert von CodeCommander am 18.01.2015 14:39, insgesamt 1-mal geändert.
~ DELETE ~
derschutzhund
Beiträge: 328
Registriert: 06.06.2013 20:37
Computerausstattung: Satellite A210-19Z, Samsung Netbook N130, VPAD10

Re: Requester sofort komplett schließen

Beitrag 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
Satellite A210-19Z, Samsung N130, VPAD10, WinXP, Win7, PuppyLinux, PB 5.24, 5.31. 5.70
Elektronik, Mikrocontroller, CNC-Technik, 3D-Druck
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Requester sofort komplett schließen

Beitrag 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
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Requester sofort komplett schließen

Beitrag 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.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
derschutzhund
Beiträge: 328
Registriert: 06.06.2013 20:37
Computerausstattung: Satellite A210-19Z, Samsung Netbook N130, VPAD10

Re: Requester sofort komplett schließen

Beitrag 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
Satellite A210-19Z, Samsung N130, VPAD10, WinXP, Win7, PuppyLinux, PB 5.24, 5.31. 5.70
Elektronik, Mikrocontroller, CNC-Technik, 3D-Druck
Antworten