zufälligen/variablen command-Button?

FlixXxer

Grünschnabel
hallo zusammen,
habe vor kurzem nach längerer Pause mal wieder angefangen Visual zu verwenden. Nun wollte ich für ein Programm einen zufälligen oder zumindest variablen Command Button verwenden. Ist sowas möglich?
Es soll so funktionieren, dass vorher z.b. eine Variable definiert wird die dann einen entsprechenden Wert dem Caption des Buttons übergibt.
Also in etwa so:
x=int((6*rnd)+1)
command(x)=array1(3)
Gibts da ne Möglichkeit?
Auf jeden FAll schon mal Danke im Vorraus.
 
hallo FlixXxer,

beim Control 'Command-Button' gibt es die Eigenschaft 'Caption'.
Diese kann variabel gestaltet werden.

z.B. Der Caption-Eigenschaft einen Wert (String) übergeben.

Command(x).Caption ="Variabler Wert"

Dann kann man die Caption wieder abfragen, wenn der Button verschiedene Akionen durchführen soll.

z.B.
If Command(x).Caption="Variabler Wert" then
Command(x).Caption ="nicht variabler Wert"
'einfügen weiterer durchzuführender Aktionen
elseif Command(x).Caption="nicht variabler Wert" then
Command(x).Caption ="Variabler Wert"
'einfügen weiterer durchzuführender Aktionen
endif

Ich hoffe, das beantwortet Deine Frage.

ANI
 
Ich glaube das ist nicht ganz das was ich mir vorgestellt habe. Vielleicht war miene erste Frage auch nicht unbedingt deutlich.
Also ich habe 5 Command-Buttons (command1 bis command5). Und nun will ich aus diesen fünf einen zufälligen auswählen, um dessen Caption-Eigenschaft dann mit einem bestimmten Element eines Arrays zu belegen. Deshalb wollte ich an Stelle der 1, 2, 3, 4 bzw. 5 hinter dem command eine Variable setzen. Allerdings gibt er mir beim ausführen an dieser Stelle im Code einen Fehler aus, wenn ich diese Zeile eingefügt habe:
command(x).caption=array1(3)
Weiß jemand wie man eine Variable korrekt in einen Namen einbindet?
Ich hoffe diese Erläuterung hat geholfen.
 
hallo FlixXxer,

die Caption-Eigenschaft ist grundsätzlich ein String.
Das heist, der zusammengesetzte String aus Text und Variable musst du noch mit der Umwandlungs-Function 'CSTR()' bearbeiten.

command(x).caption=Cstr(array1(3))

Variable und Text werden immer mit einem kaufmannischen UND (&) verbunden z.B.

"Drücke Button " & x & " zweimal"

Ansonsten schreibe mir mal die Fehlermeldung auf, vielleicht kann ich dann die eigendliche Ursache Deines Problems erkennen.

Du kannst aber auch ein zweidimentionales 'Dim Array(1 to 5,y) as String' dafür verwenden.

Irgenwie brauche ich mehr Informationen.

ANI
 
Hallo FlixXxer,

mir ist noch etwas eingefallen.

Um Command-Button mit einem Index (Variable) aufrufen zu können, musst Du den Command-Button einen Index geben.

Alle Command-Button haben den selben Namen, aber den Index von 1 - 5.

ANI
 
Vielen Dank für deine biisherige Mühe, aber leider bin ich bisher noch nicht zu einen zufriedenstellenden Ergebnis gekommen.
Am besten ich erkläre einfach mal was ich vor habe ;)
Am Ende soll eine Art Multiple Choice Test entstehen. Ich habe ein Formular, in dem sich ein Bilderrahmen befindet. Aus einen definierten Array heraus wird in diesen Bilderrahmen eine zufällige Bilddatei geladen. Daneben gibt es fünf CommandButtons. Nun soll davon einer zufällig ausgewählt werden, auf dem die richtige Lösung steht, die aus einem weiteren Array stammt. Mein Ziel ist, dass sich die richtige Lösung nicht immer hinter dem selben Button verbirgt.
Ist mein Problem nun klar geworden? Ich habe bisher keine Möglichkeit gefunden einen Button zufällig auszuwählen.
 
zu deinem letzten Hinweis mit dem Index:
Wie kann ich denn einn Button mit Hilfe seines Indizies aufrufen? Dann könnte ich damit ja eine Zufallszahl zwischen 1 und 5 generieren und dann den Button mit dem entsprechenden index wählen? Wäre diese Denkweise korrekt?
 
hallo FlixXxer,

die Aufgabenstellung ist mir nun klar geworden.
Die RND-Funktion muss folgendermassen eingesetz werden:

x=CInt(Rnd * 5)
command(x).Caption=Array1(3)

Setzt aber voraus, daß x auch ein Index eines vorhandenen Buttons ist.

In VBA gibt es noch die Möglichkeit das Control mit Me("Command(" & X & ")").Caption anzusprechen. Aber in VB habe ich dies noch nie ausprobiert.

Vielleicht hilft dir dies weiter.

ANI
 
hallo FlixXxer,

mit der Denkweise - Button über einen zufällig erzeugten Index ansprechen, würde für meine Zwecke eine denkbare Methode sein.

Das heist, der zufällig angesprochene Button wurde mit der richtigen Antwort als Caption gefüllt.

Du kannst aber auch noch die TAG-Eigenschaft des Buttons nutzen, um die Antworten am Button festzumachen. Dann fragst du eben die TAG-Eigenschaft beim Klick-Ereignis statt die Caption-Eigenschaft ab.

In die Tag-Eigenschaft schreibts du dann einfach hinein:

Button1.Tag ="Falsche Antwort" (False)
Button2.Tag ="Falsche Antwort" (False)
Button3.Tag ="Richtige Antwort" (True)
Button4.Tag ="Falsche Antwort" (False)
Button5.Tag ="Falsche Antwort" (False)

So in etwa

ANI
 
x = Int(6 * Rnd+1)
Command(x).Caption = antwort(n)

Das ist der Code den ich eingefügt habe. An die fünf Buttons hab ich die Indizies 1-5 vergeben. Beim Ausführen meldet er mir den Laufzeitfehler 13 "Typen unverträglich".
antwort ist ein Array mit 29 möglichen Antworten, aus denen er dem Bild entsprechend die korrekte Antwort wählt. n bezeichnet den Index der geladenen Bilddatei.
 
Zurück