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 user profile iconTino: 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 >= 2then
    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 user profile iconPeter 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