Autor |
Beitrag |
Barret
      
Beiträge: 156
Erhaltene Danke: 1
Win XP
D7 Ent
|
Verfasst: Mi 02.06.04 08:26
Ich habe ne Combox und wollte den Items einen Zahlzustand geben.
Das heist ich möchte die ausgewählte Zeile den Zahlwert der Zeile zuweisen
(Beispiel: Zeile 2 = Zahlwert 2)
Hat jemand vieleicht nen Plan wie das zu realisieren ist??? Moderiert von Tino: Topic aus Sonstiges verschoben am Do 03.06.2004 um 11:39
_________________ Wir könnten ja, wenn wir wollten aber wir wollen ja nicht.
It´s not a bug, it´s a feature.
|
|
smiegel
      
Beiträge: 992
Erhaltene Danke: 1
WIN 7
D7 Prof., C#, RAD XE Prof.
|
Verfasst: Mi 02.06.04 08:34
Hallo,
in der OnClick der Combobox, kannst Du den aktuell gewählten Eintrag ermitteln:
Delphi-Quelltext 1: 2: 3: 4: 5:
| procedure TForm1.ComboBox1Click(Sender:TObject); begin with ComboBox1 do Items[ItemIndex]:=IntToStr(ItemIndex+1); end; |
_________________ Gruß Smiegel
Ich weiß, daß ich nichts weiß, aber ich weiß mehr als die, die nicht wissen, daß sie nichts wissen. (Sokrates)
|
|
Barret 
      
Beiträge: 156
Erhaltene Danke: 1
Win XP
D7 Ent
|
Verfasst: Mi 02.06.04 11:00
ich ab dein Beispiel in mehreren Kombinationen ausprobiert smiegel
mit der Anweisung kann ich aber nur den Inhalt der ChomboBox ändern
und dann zeigt er mir in jeder Zeile die Nummer an
ich will ja eigentlich nur die Nummer des Items haben um einen Wert mit einem dazugehörigen zweiten Wert, den ich aus einem Stringgrid auszulese, miteinander zu addieren.
vieleicht rall ich das blos nich ganz so wie du es meinst
_________________ Wir könnten ja, wenn wir wollten aber wir wollen ja nicht.
It´s not a bug, it´s a feature.
|
|
FaTaLGuiLLoTiNe
      
Beiträge: 200
Erhaltene Danke: 5
Windows 7, Windows 8.1
Delphi XE
|
Verfasst: Mi 02.06.04 11:05
Was meinst du denn mit der "Nummer des Items"? Den Index ? Den bekommst du mit ComboBox.ItemIndex.
Oder willst du den Inhalt, aber als Ganzzahl? Das erreichst du mit StrToInt(ComboBox.Items[ComboBox.ItemIndex]).
_________________ << FaTaLGuiLLoTiNe >>
Rhinoceroses don't play games!
|
|
Barret 
      
Beiträge: 156
Erhaltene Danke: 1
Win XP
D7 Ent
|
Verfasst: Mi 02.06.04 13:36
mit ComboBox.ItemIndex kann ich nur den ganzen Index auslesen, da mein Prog den Wert aber als Zahl braucht bekomm ich dort immer String und Integer sind inkompatible typen
Delphi-Quelltext 1:
| StrToInt(ComboBox.Items[ComboBox.ItemIndex]) |
schlägt auch fehl
dort kann ich der Zeile wohl einen Wert zuweisen aberich kan dem keine Variable geben
ich schreib mal meinen Text(natürlich ein bissel abgewandelt damit ihr die Objekte erkennen könnt):
Delphi-Quelltext 1: 2: 3: 4: 5:
| if (ComboBox.ItemIndex >= 2) then begin StrToInt(ComboBox.Items[ComboBox.ItemIndex]) := u; Wert := Wert * StrToInt(Form2.StringGrid.Cells[u, 5]); end; |
vieleicht weis einer von euch ja was
Moderiert von Peter Lustig: Code- durch Delphi-Tags ersetzt.
_________________ Wir könnten ja, wenn wir wollten aber wir wollen ja nicht.
It´s not a bug, it´s a feature.
|
|
FaTaLGuiLLoTiNe
      
Beiträge: 200
Erhaltene Danke: 5
Windows 7, Windows 8.1
Delphi XE
|
Verfasst: Mi 02.06.04 13:49
Also ich hab' ja vorher schon nicht verstanden was Du so genau vorhast aber jetzt, nachdem Du den Quelltext gepostet hast, hört's bei mir ganz auf.
Was genau möchtest Du denn nun mit dem Wert aus dem StringGrid multiplizieren? Den Index oder den Inhalt des aktuellen ComboBox - Items?
Und wo genau möchtest Du das Ergebnis dann hinhaben?
Was soll diese Zeile: Zitat: |
StrToInt(ComboBox.Items[ComboBox.ItemIndex]) := u;
|
Man kann StrToInt nichts zuweisen. Die Funktion ist nur dazu da, einen String in einen Integer zu wandeln. Überhaupt, was ist u?
_________________ << FaTaLGuiLLoTiNe >>
Rhinoceroses don't play games!
|
|
Barret 
      
Beiträge: 156
Erhaltene Danke: 1
Win XP
D7 Ent
|
Verfasst: Mi 02.06.04 13:57
ich hab Comboboxen in denen Wörter drinstehen die aus einem StringGrid gelesen werden.
zu diesem Wort (Einheit: Milli, Pico, ...) steht in der selben zeile noch die entsprechende Zahl
(0,001; 0,000001; usw.). und ich muss jetzt den Index der ChomboBox haben um die entsprechende Zeile des StringGrid anzusprechen. da ich einen Eingabewert habe der mit der Zahl(die sich hinter dem ComboBox eintrag verbirgt) die im StringGrid steht, multipliziert werden muss.
mit Case-Anweisungen kann ich das nicht realisieren, da man später das StringGrid noch editieren kann
u ist ein Integer der die Zeile des StringGrid ansprechen soll
_________________ Wir könnten ja, wenn wir wollten aber wir wollen ja nicht.
It´s not a bug, it´s a feature.
|
|
FaTaLGuiLLoTiNe
      
Beiträge: 200
Erhaltene Danke: 5
Windows 7, Windows 8.1
Delphi XE
|
Verfasst: Mi 02.06.04 14:06
Meinst Du sowas?
Delphi-Quelltext 1:
| Ergebnis := Eingabewert * StrToFloat(StringGrid.Cells[Spaltennr, ComboBox.ItemIndex]); |
Wobei Spaltennr halt die Spalte in Deinem StringGrid wäre, in dem die zu multiplizierenden Werte stehen.
_________________ << FaTaLGuiLLoTiNe >>
Rhinoceroses don't play games!
|
|
Barret 
      
Beiträge: 156
Erhaltene Danke: 1
Win XP
D7 Ent
|
Verfasst: Mi 02.06.04 14:27
also jetzt hab ich das so gemacht:
Quelltext 1: 2: 3: 4:
| if (CSpannung.ItemIndex >= 2) then begin Spannung := Spannung * StrToFloat(FKondensatorVoreinheiten.SGVoreinheiten.Cells[5, CSpannung.ItemIndex]); end; |
CSpannung = ComboBox
Spannung = Eingabewert
FKondensatorVoreinheiten = Form
SGVoreinheiten = StringGrid
weil er das nur ausführen soll wenn wenigstens der zweite Index angesprochen wird
ich bekomm aber noch eine Debugger Exception Notiflication
_________________ Wir könnten ja, wenn wir wollten aber wir wollen ja nicht.
It´s not a bug, it´s a feature.
|
|
Barret 
      
Beiträge: 156
Erhaltene Danke: 1
Win XP
D7 Ent
|
Verfasst: Mi 02.06.04 15:17
funtzt jetzt alles *freu
ich hab verkackt und die Spalte zu groß gesetzt *lol
is halt immer son ding mit nichtvorhandennen Spalten
_________________ Wir könnten ja, wenn wir wollten aber wir wollen ja nicht.
It´s not a bug, it´s a feature.
|
|