Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - ComboBox Zahl zuweisen???
Barret - Mi 02.06.04 07:26
Titel: ComboBox Zahl zuweisen???
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
smiegel - Mi 02.06.04 07: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; |
Barret - Mi 02.06.04 10: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 :P
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
FaTaLGuiLLoTiNe - Mi 02.06.04 10: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]).
Barret - Mi 02.06.04 12: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.
FaTaLGuiLLoTiNe - Mi 02.06.04 12: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?
Barret - Mi 02.06.04 12: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
FaTaLGuiLLoTiNe - Mi 02.06.04 13: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.
Barret - Mi 02.06.04 13: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
Barret - Mi 02.06.04 14:17
funtzt jetzt alles *freu
ich hab verkackt und die Spalte zu groß gesetzt *lol
is halt immer son ding mit nichtvorhandennen Spalten
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!