| | |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
|
Autor
|
Thema: Programm-Abbruch (1337 mal gelesen)
|
Frank Drebin Mitglied

 Beiträge: 14 Registriert: 14.12.2010
|
erstellt am: 08. Jan. 2011 11:38 <-- editieren / zitieren --> Unities abgeben:         
Moin, mein Programm, was ich geschrieben habe, rechnet (je nach Einstellung des Nutzers) relativ lange. Ich würde dem Nutzer ganz gerne die Entscheidungsmöglichkeit eines Abbruchs geben. Ich hab da auch schon nen relativ plausiblen Quelltext gefunden. Hier mal das Beispiel (Userform mit Start-und Stopp-Button und einem Label): Code: Dim bAbbruch As Boolean Private Sub cmdCancel_Click() bAbbruch = True End Sub Private Sub cmdStart_Click() bAbbruch = False cmdCancel.Enabled = True cmdStart.Enabled = False MachWas End Sub Private Sub UserForm_Initialize() cmdCancel.Enabled = True cmdCancel.Cancel = True End Sub Private Sub MachWas() Dim i As Long Dim a As Integer a = 0 For i = 1 To 1000000 a = i + 1 Debug.Print a If bAbbruch Then bAbbruch = False If MsgBox("Wirklich Abbrechen", vbYesNo + vbQuestion) = vbYes Then lblInfo.Caption = "Abgebrochen" cmdCancel.Enabled = False cmdStart.Enabled = True Exit Sub End If End If lblInfo.Caption = i Next i lblInfo.Caption = "bin Fertig" cmdCancel.Enabled = False cmdStart.Enabled = True End Sub
Nun ist das Problem, dass ich beim Starten des Programms der Stopp-Button zwar (theoretisch) aber praktisch nicht anwählber ist. Kennt jemand das Problem und/oder ne Lösung? Beste Grüße F.Drebin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Volkmar Grube Mitglied Konstrukteur
 
 Beiträge: 128 Registriert: 31.01.2009 WIN11 64Bit, SWX 2022, Delphi 10
|
erstellt am: 08. Jan. 2011 13:14 <-- editieren / zitieren --> Unities abgeben:          Nur für Frank Drebin
Hallo Frank, also in Delphi müsste man in so einem Fall die Processmessages aufrufen, damit das Programm mal kurz guckt, ob noch andere Nachrichten in der Schlange stehen. Dein cmdCancel_Click() erzeugt nur eine Nachricht in der Schlange, die erst bearbeitet wird, wenn der Rechenprozess abgeschlossen ist. Ich kann jetzt allerdings nicht sagen, wie das in SWX  -API bzw VB anzugeben ist. Bevor du bAbbruch auswertest, müsstest du die Nachrichtenschlange verarbeiten: Delphi-Syntax: Application.ProcessMessages; If bAbbruch Then begin .... Vielleicht kann da jemand mit VB-Kenntnissen helfen.
------------------ Grüße aus Dresden Volkmar Grube Es gibt keine Probleme, es gibt nur Aufgaben. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Frank Drebin Mitglied

 Beiträge: 14 Registriert: 14.12.2010
|
erstellt am: 08. Jan. 2011 16:56 <-- editieren / zitieren --> Unities abgeben:         
Hmmm ... das dachte ich mir auch schon. Hatte nur gehofft, dass jemand hier eventuell so viel Ahnung von VBA hat, dass er gleich ne Lösung parat hat. Trotzdem danke. Gruß aus Dresden nach Dresden ... hehe Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Volkmar Grube Mitglied Konstrukteur
 
 Beiträge: 128 Registriert: 31.01.2009 WIN11 64Bit, SWX 2022, Delphi 10
|
erstellt am: 08. Jan. 2011 18:01 <-- editieren / zitieren --> Unities abgeben:          Nur für Frank Drebin
|
Frank Drebin Mitglied

 Beiträge: 14 Registriert: 14.12.2010
|
erstellt am: 08. Jan. 2011 18:37 <-- editieren / zitieren --> Unities abgeben:         
|
StefanBerlitz Guter-Geist-Moderator IT Admin (CAx)

 Beiträge: 8756 Registriert: 02.03.2000 SunZu sagt: Analysiere die Vorteile, die du aus meinem Ratschlag ziehst. Dann gliedere deine Kräfte entsprechend und mache dir außergewöhnliche Taktiken zunutze.
|
erstellt am: 10. Jan. 2011 10:50 <-- editieren / zitieren --> Unities abgeben:          Nur für Frank Drebin
|
Volkmar Grube Mitglied Konstrukteur
 
 Beiträge: 128 Registriert: 31.01.2009 WIN11 64Bit, SWX 2022, Delphi 10
|
erstellt am: 10. Jan. 2011 19:07 <-- editieren / zitieren --> Unities abgeben:          Nur für Frank Drebin
Ist mir das peinlich. Normalerweise passe ich da immer auf. Aber man wird halt älter. Entschuldigung. ------------------ Grüße aus Dresden Volkmar Grube Es gibt keine Probleme, es gibt nur Aufgaben. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |