Einzelnen Beitrag anzeigen

Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#20

Re: Tool zum Berechnen von LED Vorwiderstand u.s.w

  Alt 24. Jan 2010, 19:27
.. 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
Klaus
  Mit Zitat antworten Zitat