German ausgewählten Radiobutton erkennen

fraureuther1

Member
Licensed User
Longtime User
ich habe 2 Panele mit Radiobutton. Wenn ich den ausgewählten Radiobutton ermitteln will, muss ich da jeden einzeln abfragen, oder gibt es da eine schnellere Möglichkeit?

MfG

Uhland
 

klaus

Expert
Licensed User
Longtime User
Beiliegend ein Beispiel das mehr sagt als viele Worte.
B4X:
Sub Activity_Create(FirstTime As Boolean)
    Activity.LoadLayout("main")
End Sub

Sub rbtTest1_CheckedChange(Checked As Boolean)
    Dim rbt As RadioButton
   
    rbt = Sender
    Select rbt.Tag
    Case "1"
    Case "2"
    Case "3"
    End Select
End Sub

Sub rbtTest2_CheckedChange(Checked As Boolean)
    Dim rbt As RadioButton
   
    rbt = Sender
    Select rbt.Tag
    Case "1"
    Case "2"
    Case "3"
    End Select
End Sub
 

Attachments

  • RadioButtonOnPanels.zip
    7.4 KB · Views: 264

fraureuther1

Member
Licensed User
Longtime User
Hallo Klaus,

danke für die schnelle Antwort. Wenn ich das Beispiel richtig verstehe, ist es dazu gedacht, das nach ändern einer Auswahl der ausgewählte Radiobutton ermittelt werden kann. Ich möchte aber zu einem beliebigen Zeitpunkt die ausgewählten Radiobutton ermitteln und in ein Listview eintragen, also wenn das Erweitern der ListView- Einträge ausgelöst wird.

MfG

Uhland
 

pjo12345

Active Member
Licensed User
Longtime User
Hallo Uhland!

Jedesmal wenn sich bei deinen Radiobuttons etwas ändert, dann wird die entsprechende Sub (rbTest bzw. rbTest2) ausgeführt.
 

klaus

Expert
Licensed User
Longtime User
Ich hab Dir eine Antwort auf Deine Frage gegeben.
Wenn Du etwas anderes möchtest musst Du das im Detail erklähren.
Ohne zu wissen was Du genau machen willst ist es schwer konkrete Antworten zu geben ?
Wenn Du wissen willst welcher RadioButton gewählt ist solltest Du eine Process globale Variable definieren die jedes mal aktualisiert wird wenn ein RadioButton geklickt wird.
 
Last edited:

fraureuther1

Member
Licensed User
Longtime User
Ok Klaus, danke. Das Beispiel habe ich mir schon abgespeichert, nur hier funktioniert es so nicht.
Ich habe 2 Panele mit Ratiobutton und ich möchte wissen, welche RB ausgewählt sind, also 2 Stück. Unter Umständen wird aber die Voreinstellung nicht verändert, also kein Ereignis ausgelöst. Wenn ich aber alle Einstellungen unter einem Namen im ListView und am Ende in eine Datei speichern will, muss ich den auch schon vorausgewählten RB kennen, also ermitteln, auch, wenn er nie geändert wurde. Falls ein anderer RB ausgewählt wurden wäre, wäre es leicht mit Deinem Beispiel den RB zu merken und auszulesen. Das ist verzwickt und ich wundere mich sowieso, wie die Antwortgebenden immer begreifen, was da gemeint ist. Ich kann ja jeden RB einzeln abfragen und dann den gewählten merken, ich habe nur auf eine einfacher Lösung gehofft. Bei den Buttons muss ich das ja sowieso. Bei VB gibt es da eine Funktion, mit der man den Intex des gewählten RB auslesen kann.

MfG

Uhland
 

fraureuther1

Member
Licensed User
Longtime User
Hallo Klaus,

ich muss beim Anpassen deines Beispiels an mein Programm leider etwas falsch gemacht haben.
Weder Dateiausgabe noch Radiobuttonindex funktionieren.

MfG

Uhland
 

Attachments

  • pcr1000.zip
    13.4 KB · Views: 247

klaus

Expert
Licensed User
Longtime User
Du hast leider nicht alle Details im Beispiel mit bekommen.
Für jede Gruppe muss der EventName der gleiche sein !
Es fehlen die Tag Parameter in einer der beiden Gruppen !

Es wäre viel besser wenn Du den Views meinungsvolle Namen geben würdest.
rbtBandbreite0 sagt mehr aus als RadioButton1
rbtModulation0 sagt mehr aus als RadioButton6

Du kannst mit File.WriteList den Inhalt eines List Objektes speichern aber nicht den Inhalt einer ListView !
Das gleiche gilt beim lesen.

Deinen Code könnte man sehr vereinfachen indem man Events gleicher Views in eine Routine zusammenfasst, so wie Ich es mit rbtBandbreite und rbtModulation gemacht habe. Alle RadioButtonX_CheckedChange Routinen sind weg und in rbtBandbreite_CheckedChange und rbtModulation_CheckedChange eingefügt.
Für die Bandbreiten-Werte und Modulations-Werte solltest Du Arrays benutzen.
Für die Bandbreiten-Werte habe Ich es geändert, der gewählte Wert wird mit Bandbreite(rbtBandbreiteIndex) ermittelt.
Ich für die Bandbreiten-Werte habe Ich den Int Variablen Type gewählt da es ganze Zahlen sind, man könnte aber auch den String Type verwenden.
Das gleiche kannst Du mit Modulation machen.

Alle Sub CheckBoxX_CheckedChange(Checked As Boolean) Routinen könnte man in eine zusammen fassen und die Werte mit Arrays ermitteln.

Den Code für die + und - Buttons und der dazu gehöhrenden Anzeige könnte man auch vereinfachen.
Die eleganteste Lösung wäre eine Class zu erstellen.

Beiliegend das geänderte Projekt.
 

Attachments

  • pcr1000_Neu.zip
    13.7 KB · Views: 224

fraureuther1

Member
Licensed User
Longtime User
Hallo Klaus,
ich danke Dir für deine Mühe.
Nun brauche ich noch ein Beispiel zum Speichern und Lesen des Listview-Inhaltes.
Da habe ich offensichtlich Dein Tutorial nicht richtig verstanden. Dort ist ja das Schreiben und Lesen von Listen in Datein beschrieben.
Nur scheint ein Listview keine Liste zu sein, obwohl sie für mich eine ist.

MfG

Uhland
 

klaus

Expert
Licensed User
Longtime User
Du verwechselst scheinbar zwischen:
- List, ein Objekt um Daten zu speichern. Diese können mit File.WriteList gespeichert werden und mit File.ReadList wieder gelesen werden.
- ListView, eine View um Date anzuzeigen.
Eine ListView enthält pro Zeile entweder:
- Ein Label.
- Zwei Label.
- Zwei Labels und ein Bild.
Die Zeilen können gemischt sein.

Zum speichern kannst Du die SaveSetup und ReadSetup Routinen erweitern.
Ich würde für jeden Parameter eine Variable erstellen.
Diese in SaveSetup speichern und ReadSetup wieder einlesen und die ListView füllen.
Wie werden die anderen Parameter durch den Benutzer geändert ?
 

fraureuther1

Member
Licensed User
Longtime User
Hallo Klaus,

die Commandoübergabe an den Empänger und auch die Bluetoothstrecke funktioniert bestens. Wenn die Hardware fertig ist, muss ich noch die wenigen Rückinformationen wie S-Meter an den PDA programmieren.
Was mir jetzt fehlt, ist eben eine sichtbare Liste, in der ich durch Sendernameeingabe die aktuellen Einstellungen übernehme und durch anclicken der jeweiligen Zeile auch wieder zurückschreiben kann. Bis auf Sendername und Frequenz kann alles auch in Bolean gespeichert werden. Die Seekbar- Werte werden in dezimal gespeichert, so dass alles ganz leicht zurückgeschrieben werden kann. Da wäre eine Datenbank mit DBview das richtige und besser zu handhaben. Diese, immer größer werdende Liste möglichst eben mit Spalten und Zeilen muß dann auch in eine Datei gespeichert und bei einem Programmaufruf wieder geladen werden, völlig egal, wie das geschieht. Was mir noch vorschwebt ist, wie Du schon angefangen hast, die aktuellen Einstellungen in eine Datei zu schreiben und bei Neustart wieder zurückzuschreiben.

MfG

Uhland
 

fraureuther1

Member
Licensed User
Longtime User
mein nächstes Problem. Wie kann ich einen Radiobutton vom Programm aus auswählen. Ich habe gesucht, aber nichts gefunden.

MfG

Uhland
 

fraureuther1

Member
Licensed User
Longtime User
Ok, danke Klaus. Alles funktioniert jetzt, nur noch nicht optimal.
Wie kann ich aus einem seekbar- value von 0-255 einen dreistelligen String, also mit Vornullen oder Leerzeichen, machen?
Wie kann man zwei Listview so miteinander verbinden, das beim scrollen des einen der andere mitscrollt?

MfG

Uhland
DL4UP
 

klaus

Expert
Licensed User
Longtime User
Wie kann ich aus einem seekbar- value von 0-255 einen dreistelligen String
B4X:
Dim Wert As String
Wert = NumberFormat(SeekBar1.Value, 3, 0)

Wie kann man zwei Listview so miteinander verbinden...
Ich befürchte dass das mit ListViews nicht möglich ist.
Warum brauchst Du zwei ListViews die immer miteinander scrollen ?
Was für Werte hast da drin, genügt eine nicht mit allen Werten ?
 

fraureuther1

Member
Licensed User
Longtime User
Danke Klaus,

man müsste eine deutsche Suchreferenz für Beginners Guide haben. Ich weis immer nicht, nach was ich suchen soll.
Ich habe jetzt erst einmal versucht, alle notwendigen Funktionen unterzubringen, egal wie, es muss funktionieren.
Einiges davon gefällt mir allerdings noch nicht.
Die beiden listview habe ich gewählt, weil der Sendername ja in der Länge variabel ist. Das macht mir beim Separieren Schwirigkeiten.
auch mit true und false hatte ich Schwierikeiten, hab ich aber gelöst. Dadurch kann ich im 2. listview alles leicht mit substring2 auslesen.
Ja da muss ich manchmal aus Unkenntnis der Möglichkeiten krumme Wege gehen, die mich dann später wieder behindern.
Nun funktioniert aber erst einmal alles, was ich bis jetzt testen kann.

MfG

Uhland
 

klaus

Expert
Licensed User
Longtime User
Die beiden listview habe ich gewählt, weil der Sendername ja in der Länge variabel ist. Das macht mir beim Separieren Schwirigkeiten.
Verstehe leider nicht was Du hiermit meinst.
auch mit true und false hatte ich Schwierikeiten
Was für Schwierigkeiten ?
Anstatt ListViews kann man auch ScrollViews benutzen, mit denen kann man viel mehr machen.
Du könntest auch einen Blick auf CustomListView werfen.
 
Top