| Autor |
Beitrag |
abi
      
Beiträge: 121
Windows 2000
Delphi 5
|
Verfasst: 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
      
Beiträge: 896
Win XP, Suse 8.1
Delphi 4/7/8 alles prof
|
Verfasst: 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:
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); for I := low(Elemente ) to high(Elemente) do sl.add(GetEnumName(ElementInfo, I)); ... showMessage(sl[integer(cc)]); |
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 
      
Beiträge: 121
Windows 2000
Delphi 5
|
Verfasst: 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.
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'; 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 StrList.CommaText := '0012 0013 0014 0015 0016'; testauto.Autotest1.ComboBox2.Items := StrList; end; end; end; end; |
Danke und bis später.
Moderiert von Motzi: Code- durch Delphi-Tags ersetzt.
_________________ Die lansamste Schnecke kommt auch irgendwann an.
|
|
abi 
      
Beiträge: 121
Windows 2000
Delphi 5
|
Verfasst: 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
      
Beiträge: 896
Win XP, Suse 8.1
Delphi 4/7/8 alles prof
|
Verfasst: 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
      
Beiträge: 896
Win XP, Suse 8.1
Delphi 4/7/8 alles prof
|
Verfasst: 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  ...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 
      
Beiträge: 121
Windows 2000
Delphi 5
|
Verfasst: 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
      
Beiträge: 896
Win XP, Suse 8.1
Delphi 4/7/8 alles prof
|
Verfasst: 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:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| var actElement:TElement; procedure TFomr1.ComboBoxChanded(sender:TObject); begin actElement := TElement(comboBox.itemIndex); ... case actElement of aa: bla; bb: blub; else showMessage('Ungültig'); end; end; |
_________________ mfg.
mâximôv
|
|
abi 
      
Beiträge: 121
Windows 2000
Delphi 5
|
Verfasst: 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

_________________ Die lansamste Schnecke kommt auch irgendwann an.
|
|
maximus
      
Beiträge: 896
Win XP, Suse 8.1
Delphi 4/7/8 alles prof
|
Verfasst: 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 | Zitat: |
 |
_________________ mfg.
mâximôv
|
|