Autor Beitrag
abi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 121

Windows 2000
Delphi 5
BeitragVerfasst: Fr 16.04.04 09:09 
Hallo

ich habe mir einen Type deklariert z.B. Elemente. Dieser sicht so aus

TYPE Elemente = (aa, bb, cc, dd, ee, ff, gg);

Dann kommt
Liste :Elemente;

Jetzt habe ich noch zwei RadioButton, wenn ich jetzt denn RadioButton1 drücke soll in meiner ComboBox die ersten 3 Elemente vom Element angezeigt werden.

Wenn ich RadioButton2 drücke dann alle Elemente.

Hätte auch eine Idee aber igendwie komme ich da auch nicht weiter.

Ich wollte jetzt mit meine Elemente in TList schreiben und dann in der ComboBox ausgeben. Aber ich weiss nicht wie ich meine Elemente in die TList bekomme.

_________________
Die lansamste Schnecke kommt auch irgendwann an.
maximus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 896

Win XP, Suse 8.1
Delphi 4/7/8 alles prof
BeitragVerfasst: Fr 16.04.04 10:23 
Moin.

Die elemente eines enum types in eine TList zu schreiben macht keinen sinn, da es im prinzip normale zahlen sind. in diesem fall

Elemente = (0,1,2,3,4,5,6);

und da TList für referenz-typen gedacht ist. Du kannst aber sehr wohl die names der elemente aus der RTTI auslesen und sie in eine stringListe schreiben:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
uses typInfo;

TYPE Elemente = (aa, bb, cc, dd, ee, ff, gg); 

var sl:TStringList;
     ElementInfo: PTypeData;
...
ElementInfo:= TypeInfo(Elemente); // RTTI info zu elemente holen
for I := low(Elemente ) to high(Elemente) do sl.add(GetEnumName(ElementInfo, I));
...
// und so kannst du die einträge dann ansteuern
showMessage(sl[integer(cc)]); // zB.


so in etwa sollte es gehen...kann sein das bugs drinn sind, habs aus dem kopf geschrieben.
Genau so könntest du es auch direkt in die comboBox schreiben.

_________________
mfg.
mâximôv
abi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 121

Windows 2000
Delphi 5
BeitragVerfasst: Fr 16.04.04 10:42 
Hi Markus

schon mal danke werde des gleich mal ausprobieren aber
leider hab ich mal wieder die hälfte vergessen, denn ich will in meine Elemente Zahlen einfügen, des geht aber nicht.

Denn der erste Zeichen muss ein Buchstabe sein.

Will aber kein Buchstabe als erste Ziffer haben.

Dann hab ich noch was anderes. Ich lese denn Text aus meiner ComboBox. Jetzt möchte ich je nach dem was dort drin steht was bestimmtes aus geben.

Also habe ich eine Case einweisung gemacht. Hier mal kurz mein Code.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
 testauto.Autotest1.ComboBox2.Text := 'Auflösung wählen';
  //ShowMessage('comboBox1 Click');
  //Prüfen welche Encoder Familie gewählt würde
 text := testauto.Autotest1.ComboBox1.Text;
 if text = 'C2' then begin
 a := 1;
 end;
 StrList := TStringList.Create;
 case Bustyp of
  CANopen: begin
           case text of
             C2: begin      //mit dem Integer Wert gehts aber des ist mir zu unübersichtlich, ich sag nur Lesbarkeit
                 StrList.CommaText := '0012 0013 0014 0015 0016';
                 testauto.Autotest1.ComboBox2.Items := StrList;
                 end;
             end;
  end;
 end;


Danke und bis später.

Moderiert von user profile iconMotzi: Code- durch Delphi-Tags ersetzt.

_________________
Die lansamste Schnecke kommt auch irgendwann an.
abi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 121

Windows 2000
Delphi 5
BeitragVerfasst: Fr 16.04.04 10:51 
ich bins nochmal bin gerade dabei deinen Code einzutippen, denn ich echt gut finde.

Denn ich hab erst mit Delphi angefangen und kenne mich noch nicht sogut aus.

Mein Programm sagt erkennt die Bezeichnung PtypeData nicht.

Und ich hab von der auch noch nie was gehört, muss ich davor noch was machen.

Ciao

_________________
Die lansamste Schnecke kommt auch irgendwann an.
maximus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 896

Win XP, Suse 8.1
Delphi 4/7/8 alles prof
BeitragVerfasst: Fr 16.04.04 10:54 
Zitat:
Dann hab ich noch was anderes. Ich lese denn Text aus meiner ComboBox. Jetzt möchte ich je nach dem was dort drin steht was bestimmtes aus geben.

Also habe ich eine Case einweisung gemacht. Hier mal kurz mein Code.


Was willst du mir damit sagen? ...sieht nicht so aus als ob das zum thema gehört. Ich seh da weder Elemente noch Enums nur strings (die du übrigens nicht in case anwiesungen benutzen kannst)


PS: Wer ist Markus?

_________________
mfg.
mâximôv
maximus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 896

Win XP, Suse 8.1
Delphi 4/7/8 alles prof
BeitragVerfasst: Fr 16.04.04 10:57 
abi hat folgendes geschrieben:
ich bins nochmal bin gerade dabei deinen Code einzutippen, denn ich echt gut finde.

Denn ich hab erst mit Delphi angefangen und kenne mich noch nicht sogut aus.

Mein Programm sagt erkennt die Bezeichnung PtypeData nicht.

Und ich hab von der auch noch nie was gehört, muss ich davor noch was machen.

Ciao


Ich seh grad, dass du delphi 5 hast :cry: ...weiss nicht ob und wie die unit typInfo dort heisst? evtl. hast du pech! aber eine RTTI gabs damals ja auch schon, sonst wären DFMs ja garnicht möglich.

Vielleicht weiss ja jemand wie das damals ging :?:

_________________
mfg.
mâximôv
abi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 121

Windows 2000
Delphi 5
BeitragVerfasst: Fr 16.04.04 11:03 
Hi Maximus

da hast du wohl recht, das dort nur String sind, aber des liegt daran das ich mein Element nicht in die Box bekommen hab. Denn wenn ich dies Schaffe kommt statt dem String das Element hinein.

Und wenn erst mal mein Element drin ist, kann ich mit meiner Case anweisung.
Über meine Elemente gehen, des ist jetzt nur ne Notlösung. Sonst kann ich nicht weiter machen.

Deshalb hat des für mich schon was mit dem Thema zutuchen, ich hoffe du weisst jetzt wie ich des meine.

Und mit dem Markus hab ich mich verschrieben, sorry. Bin irgendwie noch leicht im Bett.

_________________
Die lansamste Schnecke kommt auch irgendwann an.
maximus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 896

Win XP, Suse 8.1
Delphi 4/7/8 alles prof
BeitragVerfasst: Fr 16.04.04 11:37 
Wenn in comboBox zB:

aa
bb
cc
dd
...

drinn stehr, dann wäre es ein leichtes, den itemIndex zum TElement type zu casten:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
var   actElement:TElement; // in delphi immer ein T vor typen

procedure TFomr1.ComboBoxChanded(sender:TObject);
begin
  actElement := TElement(comboBox.itemIndex); // wie gesagt elemente eines enum-types sind nur nummern, die hier sogar dem index entsprechen
  ...
  case actElement of
    aa: bla;
    bb: blub;
  else showMessage('Ungültig');
  end;
end;

_________________
mfg.
mâximôv
abi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 121

Windows 2000
Delphi 5
BeitragVerfasst: Fr 16.04.04 11:54 
Danke nochmal
genau des wollte ich haben, jetzt muss ich nur noch meine Elemente in die ComboBox bekommen und es ist perfekt.

du hast geschrieben das bei Typen immer ein T davor geschrieben wird.

hab des jetzt ohne T gemacht, denn mit T gehts nicht.

nur noch kurz zur erklärung, ich muss doch Element schreiben, da mein actElement sich auf bezieht.

Da ich es mit den Elementen vergleich die dort drin stehen, oder?

Mercy du hast mir sehr geholfen

:dance: :dance:

_________________
Die lansamste Schnecke kommt auch irgendwann an.
maximus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 896

Win XP, Suse 8.1
Delphi 4/7/8 alles prof
BeitragVerfasst: Fr 16.04.04 12:15 
abi hat folgendes geschrieben:
Danke nochmal
genau des wollte ich haben, jetzt muss ich nur noch meine Elemente in die ComboBox bekommen und es ist perfekt.
Das steht oben, such bei dir mal nach der unit typInfo, oder ähnlichen
Zitat:

du hast geschrieben das bei Typen immer ein T davor geschrieben wird.
Ist ein standard, den du auch benutzen solltest, damit andere deinen code besser verstehen
Zitat:


hab des jetzt ohne T gemacht, denn mit T gehts nicht.
Das T musst du natürlich überall schreiben, auch bei der typ-deklaration
Zitat:


nur noch kurz zur erklärung, ich muss doch Element schreiben, da mein actElement sich auf bezieht.
Ja genau, oder dann halt TElement, wenn du es geändert hast!!!
Zitat:


Da ich es mit den Elementen vergleich die dort drin stehen, oder?
Versteh die frage nicht
Zitat:


Mercy du hast mir sehr geholfen
immer gerne :D
Zitat:


:dance: :dance:

_________________
mfg.
mâximôv