Zitat: |
Wo? Kann sein, daß es in der 6'er oder 7'er Version möglich ist im OI ItemIndex einzustellen. In der 3'er und 5'er kann man das nicht. |

Sorry, wusste nicht, dass es auch Versionen gibt, bei denen das nicht geht!
Zitat: |
Das könnte dein Lehrer auch bemerken und dich dannach fragen. |
Könnte zwar sein, glaub ich aber eher nicht. Der konnte sich nicht genau vorstellen, wie ich denn die Enigma proggen wollte!
Zitat: |
Ich glaube nicht, dass man ersteres irgendwie ändern kann. |
In meinem Enigma-Prog hab ich das ComboBox-Ereignis OnChange benutzt und da funktioniert die Anzeige des momentan ausgewählten Wertes.
Ich habe allerdings bei meiner Enigma das Problem, dass ich bei Auswahl einer Walze diese ausgewählte Walze, die eigentlichen einen String darstellt, in die Variable Walze1 kopierern muss.
Nur wenn ich nun ein Item aus einen ComboBox lösche, so ändert sich ja auch die "Zahl", die das Item repräsentiert.
Beispiel:
In der ComoBox1 sind folgende Items aufgelistet:
Quelltext
1: 2: 3: 4: 5: 6:
| Walze Nr. I Walze Nr. II Walze Nr. III Walze Nr. V Walze Nr. VI Walze Nr. VIII |
I wird in ComboBox1 "verwendet", IV in ComboBox2 und VII in ComboBox3.
Wenn ich jetzt aber Walze Nr. VI auswählen will, so heisst das (wie es eigentlich funktionieren müsste), dass in ComboBox1 das Item "Walze Nr. I" durch "Walze Nr. VI" ersetzt wird. Zusätzlich wird dann aus
Quelltext
1: 2: 3: 4:
| AlleWalzen : String = 'EKMFLGDQVZNTOWYHXUSPAIBRCJAJDKSIRUXBLHWTMCQGZNPYFVOE BDFHJLCPRTXVZNYEIWGAKMUSQOESOVPZJAYQUIRHXLNFTGKDCMWB VZBRGITYUPSDNHLXAWMJQOFECKJPGVOUMFYQBENHZRDKASXLICTW NZJHGRCXMYSWBOUFAIVLPEKQDTFKQHTLXOCBJSPDZRAMEWNIUYGV' |
der passende Abschnitt für "Walze Nr. VI" gesucht wird. Dies geschieht durch
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| procedure TForm1.WalzenAuswahl(Sender: TObject); var i : Integer; begin AlleReflektoren := 'YRUHQSLDPXNGOKMIEBFZCWVJATFVPJIAOYEDRZXWGCTKUQSBNMHL'; AlleWalzen := 'EKMFLGDQVZNTOWYHXUSPAIBRCJAJDKSIRUXBLHWTMCQGZNPYFVOE BDFHJLCPRTXVZNYEIWGAKMUSQOESOVPZJAYQUIRHXLNFTGKDCMWB VZBRGITYUPSDNHLXAWMJQOFECKJPGVOUMFYQBENHZRDKASXLICTW NZJHGRCXMYSWBOUFAIVLPEKQDTFKQHTLXOCBJSPDZRAMEWNIUYGV';
if TComboBox(Sender).Name = 'AuswahlReflektor' then for i := 1 to 26 do Reflektor[i] := AlleReflektoren[i + 26 * AuswahlReflektor.ItemIndex];
if TComboBox(Sender).Name = 'AuswahlWalze1' then begin for i := 1 to 26 do Walze1[i] := AlleWalzen[i + 26 * AuswahlWalze1.ItemIndex]; end; if TComboBox(Sender).Name = 'AuswahlWalze2' then begin for i := 1 to 26 do Walze2[i] := AlleWalzen[i + 26 * AuswahlWalze2.ItemIndex]; end; if TComboBox(Sender).Name = 'AuswahlWalze3' then begin for i := 1 to 26 do Walze3[i] := AlleWalzen[i + 26 * AuswahlWalze3.ItemIndex]; end; end; |
Der eigentlich richtige Abschnitt zu Walze Nr. VI ist
JPGVOUMFYQBENHZRDKASXLICTW aber weil VI in ComboBox1 an 5. Position (ItemIndex = 4). Deshalb wird - durch meine Prozedur bedingt - für VI der Abschnitt
ESOVPZJAYQUIRHXLNFTGKDCMWB (was der Walze Nr. IV entspricht!) ausgesucht.
Daher weiss ich nicht, wie ich das ohne neue Variablen richtig hinkriegen kann.
Eigene Werte sind durch csDropDownList nicht möglich.
In meinem Programm funktioniert die anzeige des momentan ausgewählten Items bei DropDown und wenn ich nichts auswähle, so wird das zuletzt ausgewählte Item weiterbenutzt.
Könbnt ihr mir da helfen, wie ich (ihr) das gescheid hinkriegen kann (könnt)?
Hoffe, ihr seid noch mitgekommen, sonst einfach fragen!