.. so das ist alles noch ein wenig statisch.
Aber es zeigt das Prinzip gan gut auf:
Als erstes habe ich zwei neue Typen erstellt:
Delphi-Quellcode:
TLEDProperties = record
color: String;
mcdValues : TStringList;
end;
// dynamisches Array vom Typ TLEDProperties
TLEDList = Array of TLEDProperties;
Eine Variable vom Tyo TLEDList angelegt:
Delphi-Quellcode:
private
{ Private declarations }
LEDList : TLEDList;
Im FormCreate die LEDList initialisiert:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
// die Länge des dyn. Array auf die Anzahl der Einträge in der ComboBox anpassen
setLength(LEDList,ComboBox1.Items.Count);
LEDList[0].color:='rot';
LEDList[0].mcdValues := TStringList.Create;
LEDList[0].mcdValues.add('15');
LEDList[0].mcdValues.add('20');
LEDList[1].color:='grün';
LEDList[1].mcdValues := TStringList.Create;
LEDList[1].mcdValues.add('15');
LEDList[1].mcdValues.add('25');
LEDList[1].mcdValues.add('50');
LEDList[2].color:='blau';
LEDList[2].mcdValues := TStringList.Create;
LEDList[2].mcdValues.add('100');
end;
Die Werte ließen sich im Prinzip auch aus einer Datei (iniFile,
xml) auslesen.
Wenn ein Wert aus der ComboBox ausgewählt wird:
Delphi-Quellcode:
procedure TForm1.ComboBox1Change(Sender: TObject);
var
i : Byte;
begin
// radioGroup1.Caption := ComboBox1.Items[ComboBox1.itemIndex];
// das obige ist ist dem untenstehende equivalent
// das obige bringt Nachteile wenn du die Combobox1 mal nach Auswahlbox umbenennst
radioGroup1.Caption := (sender as TComboBox).Items[(sender as TComboBox).itemIndex];
radioGroup1.Items.Clear;
// iterierere durch die mcdValues StringList und füge für jeden Eintrag
// einen Eintrag in die RadioGroup ein.
for i:= 0 to LEDList[(sender as TComboBox).ItemIndex].mcdValues.Count -1 do
begin
radioGroup1.Items.Add(LEDList[(sender as TComboBox).itemIndex].mcd[i]);
end;
end;
Auf meiner Form haben sich eine ComboBox und eine Radiogroup befunden.
Ach ja, und nicht vergessen die StringListen wieder freizugeben.
Grüße
Klaus