Autor Beitrag
regsnerven
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 25.06.09 21:22 
Hallo Leute,

versuche gerade Mastermind zu programmieren und erstell dafür dynamisch (,weil ich will das so) die Comboboxen dafür. ^^
Problem bei der Sache ist jetzt nur, dass er die onChange-Funktion nicht so übernimmt, dass er auf sich selber zu greifen kann bzw. ich einfach nicht wirklich weiß, wie das geht xD
Ich hab's mal geschafft gehabt, warum weiß ich aber nicht genau.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
for i := 0 to  code_laenge- 1 do
  begin
    combobox[i] := Tcombobox.Create(self);
    combobox[i].Parent:= Form1;
    combobox[i].Top   := 20;
    combobox[i].Left  := round(((Form1.Width/code_laenge +10)*i)+10);
    combobox[i].OnChange:= farbeAuswaehlen;
    for x := 0 to anzahl_farben - 1 do
      combobox[i].Items.Add(farben[x])

  end;


Damit werden also nun die Comboboxen erstellt und die Farben zugewiesen (farben['rot', 'gelb', 'blau', 'grün']).

Die "farbenAuswaehlen"-Prozedur:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
procedure TForm1.farbeAuswaehlen(Sender: TObject);
var combobox : Tcombobox;
begin
  versuch[0] := farben[combobox.ItemIndex] ;
  //listbox1.Items.Add(versuch[0]); //Ist nur zum Teste, ob da auch was passiert
end;


So. Wie ihr seht, gibt es da noch ein weiteres Problem.
Ich muss die Position in dem Array versuch auch noch genau durch die Combobox ermitteln lassen. Also die zuerst kreirte Combobox soll bei einer Änderung versuch[0] definieren und die z.B. 3. dann eben versuch[3]. Allerdings weiß ich da noch weniger, wo ich ansetzen soll ^^

Achja, hab vergessen zu erwähnen, dass versuch als private Variable gesetzt ist und dass wenn ich die Combobox ändere, da ein Zugriffsfehler kommt.

Habt ihr da ein paar Tipps für mich?

Gr33tZ
Rn
Xentar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: Do 25.06.09 21:49 
Schnelle Lösung:
beim Erzeugen noch hinzufügen
ausblenden Delphi-Quelltext
1:
    combobox[i].Tag   := i;					


und dann
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
procedure TForm1.farbeAuswaehlen(Sender: TObject);
var Combobox: TCombobox;
begin
  ComboBox := Sender as TComboBox;
  Versuch[Combobox.Tag] := farben[combobox.ItemIndex];
end;

so in der Art.

Weiß grad aber nicht, ob das die eleganteste Variante ist

_________________
PROGRAMMER: A device for converting coffee into software.
regsnerven
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 25.06.09 22:33 
Danke dir. Hat funktioniert.

Noch ein paar Fragen ^^

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure TForm1.Button1Click(Sender: TObject);
var i :integer;
versuch2 : string;
begin
  for i := 0 to length(versuch) - 1 do
    versuch2 := versuch2 + '    ' + versuch[i];

  listbox1.Items.Add('Versuch: '+ versuch2);
end;


gibt es eine elegantere Variante als immer "versuch2 + versuch[i]"? Also z.B. "versuch2 .= versuch[i]" so wie in PHP ?

Und:
Hat jemand jetzt noch eine Idee, wie ich am besten die geratenen Farben darstellen kann?

Also ich hab's in einer Listbox versucht, aber ich kann ja nicht von jedem einzelnen String die Farbe ändern (oder?).

Mit Checkboxen und Radiobuttons funktioniert das auch nicht, weil die Farbe irgendwie nicht wirklich zugewiesen wird, also ich verändere sie, aber die Erscheinung ändert sich kein bisschen.

Joar. ich denke, das war's dann an diesem Punkt ^^
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Do 25.06.09 22:47 
Moin!

user profile iconregsnerven hat folgendes geschrieben Zum zitierten Posting springen:
Noch ein paar Fragen ^^
[...]
gibt es eine elegantere Variante als immer "versuch2 + versuch[i]"? Also z.B. "versuch2 .= versuch[i]" so wie in PHP ?
Nein, das kennt Delphi nicht.

Für die restlichen Fragen ist jetzt aber definitiv ein neuer Thread fällig. :|

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.