German B4J Programmende

strupp01

Active Member
Licensed User
Longtime User
Suche schon eine geraume Zeit einen Befehl, um ein B4J-Programm zu beenden, so dass die Form geschlossen wird. Habe bisher nur den Befehl 'ExitApplication' gefunden, der aber nicht das erhoffte Ergebnis bringt.
Gibt es so einen Befehl oder wie geht das ? Evtl. Beschreibung mit 2-3 Zeilen posten.
 

rboeck

Well-Known Member
Licensed User
Longtime User
Wo ist das Problem? ich habe ExitApplication im Sub Mainform_Closed Event stehen. Welches nicht erhoffte Ergebniss tritt da auf?
 

strupp01

Active Member
Licensed User
Longtime User
Wie rufe ich das Sub MainForm_CloseRequest (EventData As Event) aus dem Programm auf ?
 

DonManfred

Expert
Licensed User
Longtime User
Folgendes funktioniert bei mir problemlos um die App zu beenden.

B4X:
Sub AppStart (Form1 As Form, Args() As String)
    MainForm = Form1
    MainForm.RootPane.LoadLayout("Layout1") 'Load the layout file.
    MainForm.Show
End Sub

'Return true to allow the default exceptions handler to handle the uncaught exception.
Sub Application_Error (Error As Exception, StackTrace As String) As Boolean
    Return True
End Sub

Sub Button1_Action
    MainForm.Close
End Sub

Ich schliesse nur das mainform. Wenn Du noch andere Fenster offen hast dann musst du diese ggfls natürlich auch schliessen.
 

rboeck

Well-Known Member
Licensed User
Longtime User
Wozu? Es wird vom System aufgerufen, wenn Du beenden willst. Man könnte es zwar auch selbst aufrufen, aber dazu müsstest Du das EvenData Object mitsenden und kann mir keinen sinnvollen Zweck vorstellen...
 

strupp01

Active Member
Licensed User
Longtime User
Irgendwie stehe ich auf dem Schlauch. Habe ein Mini-Programm beigelegt. Vielleicht könnt Ihr mir den benötigten Code zum Beenden einfügen. Bin im Moment ratlos.:(
 

Attachments

  • Test_Programmende.zip
    1.2 KB · Views: 265

DonManfred

Expert
Licensed User
Longtime User
B4X:
Sub AppStart (Form1 As Form, Args() As String)
   MainForm = Form1
   MainForm.Show
   s1.Initialize("s1")
   MainForm.RootPane.AddNode(s1, 10, 0, 300, 100)
   
    Dim btn As Button
    btn.Initialize("ExitButton")
    btn.Text = "Programm verlassen"
    MainForm.RootPane.AddNode(btn,25,150,250,50)
 
   s1.MaxValue = 100
   s1.MinValue = 0
 
   s1.Value =80
 
End Sub

Sub S1_ValueChange (Value As Double)
    If s1.Value = 100 Then Berechnung.Berechnung_Test
End Sub
Sub ExitButton_Action
    MainForm.Close
End Sub

PS: Beuqmemer ist es allerdings den Designer zu verwenden.
 

strupp01

Active Member
Licensed User
Longtime User
Das funktioniert so nicht. Wenn ich den Slider auf 100% schiebe geht die MsgBox auf. Bestätige ich die MsgBox mir klicken auf OK-Button, so schließt sich das MsgBox-Fenster und das war es. Die Form bleibt erhalten, das Programm ist nicht beendet.
 

DonManfred

Expert
Licensed User
Longtime User
B4X:
Sub AppStart (Form1 As Form, Args() As String)
   MainForm = Form1
   MainForm.Show
   s1.Initialize("s1")
   MainForm.RootPane.AddNode(s1, 10, 0, 300, 100)
    
   s1.MaxValue = 100
   s1.MinValue = 0
  
   s1.Value =80
  
End Sub

Sub S1_ValueChange (Value As Double)
    If s1.Value = 100 Then
         Berechnung.Berechnung_Test
        MainForm.Close           
    End If
End Sub

So geht´s auch. Ich verstehe nicht, wo GENAU dein Problem liegt. Vielleicht solltest Du die Anforderungen genauer Spezifizieren.
 

strupp01

Active Member
Licensed User
Longtime User
Ich will aus dem Modul Berechnung, nach Quittierung der MSGBox das Programm beenden. Dein obriges Beispiel kann ich so nicht anwenden. Kann man nicht das Quittieren der MsgBox abfragen und dann das MainForm.Close auslösen ?
 

strupp01

Active Member
Licensed User
Longtime User
Ich sehe gerade, wenn ich eine MsgBox2 nehme, kann ich das Ja oder Ok abfragen und zu Main.ProgEnde springen. Im sub ProgEnde steht nur Mainform.Close. Jetzt wird die Form geschlossen und das Programm beendet.

Kann ich auch die normale MsgBox abfragen ? wenn ja, wie geht das ?
 

DonManfred

Expert
Licensed User
Longtime User
msg box abfragen, ergebnis auswerten und je nach antwort halt den entsprechenden quelltext reinpacken.

Hört sich für mich an als bestünde bei Dir massiver Bedarf, nochmal das Anfänger tutorial zu B4A/B4J durchzugehen und Dich etwas mehr mit der Sprache zu beschäftigen.
 

strupp01

Active Member
Licensed User
Longtime User
Du hast ja irgendwie recht. Habe vor etlichen Jahren das letzte mal in B4A programmiert. Viel davon vergessen. B4J existiert leider das tutoriaL nur in English, da habe ich sehr große Probleme. Die grauen Gehirnzellen wollen langsam auch nicht mehr so recht. So kommt halt alles zusammen und ich versuche wieder etwas mehr reinzukommen. Tut mir leid, wenn ich dabei etwas nerve.
 

strupp01

Active Member
Licensed User
Longtime User
Versuche ein bischen geistig frisch zu bleiben und dazu in B4A ein Programm zu schreiben. Als Eingangsdaten dazu muss ich aber unter B4J viele Daten in Datenbanken erfassen. B4J ist jedoch für mich total neu und leider jede Dokumentation in English. Bin mitlerweile mit dem Programm in B4J fast fertig. So vertreibt sich halt ein rentner sein Zeit.:)
Möchte halt gerne etwas programmieren, versuche die Lösungen von anderen Usern für die Probleme, die bei mir auftauchen, im Internet zu finden und auf meine Probleme anzupassen. Nur wenn ich garnichts finde oder verstehe poste ich hier im Forum. Manchmal auch im English-Forum mit Google-Übersetzung.

Es ist halt für mich Hobby.
 

KMatle

Expert
Licensed User
Longtime User

strupp01

Active Member
Licensed User
Longtime User
Mir ist bewußt, dass Manfred helfen wollte. Bin auch sehr froh darüber, da er das auch nicht zum Erstenmal macht. Stand nur auf dem Schlauch an diesem Tag. Nachher war mir alles klar. Ich wollte keine andere Lösung. Die hier gezeigte war schon die richtige. Habe sie auch mitlerweile eingebaut. Wie gesagt, war an diesem Tag wohl nicht richtig aufnahmefähig. Sorry.
 
Top