German CustomDialog mit Button

peternmb

Well-Known Member
Licensed User
Longtime User
Hallo, ich öffne ein Fenster mit einem CustonDialog, dieser enthält unter anderem einen Button.
Wieso funktioniert mein Button nicht - im Beispiel-Code funktioniert es :BangHead:
Der Button wird angezeigt, beim Betätigen passiert aber nichts.

Was mache ich denn falsch oder anders:
B4X:
Sub einstellen_Click 
  'Dialogfenster öffnen
  Dim cd As CustomDialog
  Dim pnl As Panel
  pnl.Initialize("pnl")
  Dim bgnd As ColorDrawable
  bgnd.Initialize(Colors.Black, 5dip)
  pnl.Background = bgnd
  '    
  Dim btnTest As Button
  btnTest.Initialize("btnTest")
  btnTest.Text = "prüfen"
  pnl.AddView(btnTest, 220dip, 105dip, 80dip, 40dip)
  '   
  'usw   
  '
  cd.AddView(pnl, 0%x, 0%y, 640, 450)
  '
  ret = cd.Show("Einstellungen", "speichern", "verwerfen", "", Bild3)
  '   
  'usw   
  '
End Sub  
       
       
   
Sub btnTest_Click
' 
Msgbox("Klick","")
'   
End Sub
 

peternmb

Well-Known Member
Licensed User
Longtime User
Ist damit auch nicht anders.
Der Button wird angezeigt und ist enabled, wechselt auch beim Drücken die Farbe - es passiert nur absolut nix :sign0085:
 

klaus

Expert
Licensed User
Longtime User
Dein Code funktioniert !
Nur nicht genau wie Du Dir das vorstellst.
CustomDialog ist ein modaler Dialog, das heisst dass nichts Anderes gemacht wird ?
MsgBox ist auch ein modaler Dialog und kann nicht angezeigt weden !
Verusche folgenden Code:
B4X:
Sub btnTest_Click
    Activity.Title = "Klick"
    DoEvents
End Sub
Warum DoEvents ? Damit die vorhergehende Zeile in der Warteschleife ausgeführt wird. Ohne DoEvents wird die Activity.Title = "Klick" Zeile erst nach dem Verlassen des CustomDialog durchgeführt.

Beste Grüsse.
 

peternmb

Well-Known Member
Licensed User
Longtime User
Ja, das verstehe ich (jetzt).

Der Button dient dazu, eine eingegebene IP-Adresse zu testen und wenn verfügbar die dortigen Freigaben anzuzeigen.
Wie kann ich diese Meldung/Anzeige anders lösen als mit einer msgbox?
 

klaus

Expert
Licensed User
Longtime User
Das kommt darauf wie Dein Programm ausgelegt ist.
Eine Activity oder eventuell ein Panel.
Wenn das Panel den ganzen Bildschirm verdeckt ist es ja ähnlich wir der CustomDialog.
Falls Du andere Views unter dem Panel hast musst Du wahrscheinlich eine 'Dummy' Click Routine für das Panel einbauen damit diese nicht reagieren.
B4X:
Sub Panel1_Click
End Sub
Beste Grüsse.
 

peternmb

Well-Known Member
Licensed User
Longtime User
Vielen Dank, ich mache es jetzt mit ToastMessageShow.

Das funktioniert problemlos in Verbindung mit DoEvents. Ist zwar nicht perfekt, genügt aber absolut für diesen Zweck :cool:
 
Top