![]() |
Comboboxen Summieren bei onChange
Hallo zusammen,
ich habe folgendes vor: Ich habe eine Form mit 4 Comboboxen und einem TEdit Feld wo die Summe angezeigt werden sollt. So nun sind diverse Einträge in den Comboboxen wie z.B.
Delphi-Quellcode:
Das eben für 4 Boxen mit unterschiedlichen werden in den Klammern.
Dieser Beitrag ist interessant (10)
Dieser Beitrag ist weniger interessant (20) Nun sollt man von oben nach unten die ComboBoxen auswählen und nach jeder auswahl der ComboBox wird im TEdit Feld das Summiert. Ich gehe mal davon aus das das ganze mit onChange auf dem Combobox Feld geht ?! Nur wie lade ich zur Laufzeit die Zahlen in den Klammern aus (10), (20) wie auch immer ... Die Feldinhalte werden von einer Datenbank gesetzt. Es soll natürlich auch so sein das wenn ich ein Feld in der Datenbank z.B. von (20) auf (30) ändere, nicht das Programm neu Compilieren muss Vielen dank für eure Vorschläge schonmal ... |
Re: Comboboxen Summieren bei onChange
Du könntest die Zahlen als Objekte in den Items der Comboboxen hinterlegen und jeder Combobox dasselbe OnChange-Ereignis zuweisen. Schnelles Beispiel (DoOnChange ist die Ereignisbehandlungsroutine aller Comboboxen):
Delphi-Quellcode:
//wird im OnChange der Comboboxen ausgeführt
procedure TFormBla.DoOnChange(Sender: TObject); var Summe: integer; begin Summe := 0; if ComboBox1.ItemIndex > -1 then Summe := Summe + integer(ComboBox1.Items.Objects[ComboBox1.ItemIndex]); if ComboBox2.ItemIndex > -1 then Summe := Summe + integer(ComboBox2.Items.Objects[ComboBox2.ItemIndex]); if ComboBox3.ItemIndex > -1 then Summe := Summe + integer(ComboBox3.Items.Objects[ComboBox3.ItemIndex]); if ComboBox4.ItemIndex > -1 then Summe := Summe + integer(ComboBox4.Items.Objects[ComboBox4.ItemIndex]); Edit1.Text := inttostr(Summe); end; procedure TFormBla.FormCreate(Sender: TObject); var i: integer; begin //Zahlen als Objekte in den Items speichern for i := 1 to 4 do begin ComboBox1.Items.AddObject(Format('%d',[i * 10]),TObject(i*10)); ComboBox2.Items.AddObject(Format('%d',[i * 10]),TObject(i*10)); ComboBox3.Items.AddObject(Format('%d',[i * 10]),TObject(i*10)); ComboBox4.Items.AddObject(Format('%d',[i * 10]),TObject(i*10)); end; end; |
Re: Comboboxen Summieren bei onChange
Wenn du die Daten eh aus einer Datenbank liest, dann könntest du dir für jede Combobox ein array definieren, in dem die Werte gespeichert werden, z.B. so:
Delphi-Quellcode:
Wobei die Länge jedes Arrays natürlich der Anzahl der verschiedenen Werte entsprechen muss (kann sich die Anzahl verändern, müsstest du auf dynamische Arrays zurückgreifen). Beim Lesen aus der Datenbank musst du dann halt neben den strings für für die Comboboxen auch die Werte in den Arrays setzen.
Werte1 : array[0..3] of integer;
Werte2 : array[0..3] of integer; //... Beim OnChange-Ereignis der Comboboxen machst du dann noch folgendes:
Delphi-Quellcode:
mfg
Edit.Text := Werte1[ComboBox1.ItemIndex] + Werte2[ComboBox2.ItemIndex] + //...
|
Re: Comboboxen Summieren bei onChange
Danke euch schonmal.
Problem dabei ist nur das ich NUR die Feldwerte in Laufzeit sprich mit Combobox1.Text auslesen kann und nicht manipulieren oder setzte kann. Das ist ein SDK mit dem ich arbeite von dem Programm was verändert werden muss. Also hier nochmal kurz: Ich sezt in einer art Verwaltungskonsole die Feldwerde, diese werden in der Datenbank gespeichert. Öffnet man die Form werden diese dagestellt. Ich habe nur die MKöglichkeit dort den Feldwert wie oben gesagt mit xxx.Text auszulesen und dort dann nach '(' zu suchen die kommenden 2 Zahlen zu nehmen und zu summieren. Etwas schwierig damit so .... |
Re: Comboboxen Summieren bei onChange
Dann solltest du dir mal die Funktion
![]() |
Re: Comboboxen Summieren bei onChange
öhm ist zwar gerade dumm aber ich bekomme nen Fehler wenn ich auf
Delphi-Quellcode:
gehe
strg := combobox1.text
hier der Code ....
Delphi-Quellcode:
procedure TForm1.ComboBox1Change(Sender: TObject);
var Pos1 :string; SubStr :string; Summe: integer; Str: integer; begin Str := combobox1.Text; Pos1 := Pos('(',Str); SubStr := Copy(combobox1.Text,Pos1,2); ShowMessage(SubStr); end; |
Re: Comboboxen Summieren bei onChange
Zitat:
![]() Ich finde es auch ein wenig ungeschickt eine Integervariable str zu nennen. Grüße Klaus |
Re: Comboboxen Summieren bei onChange
Wobei TryStrToInt() oder StrToIntDef() vorzuziehen wären
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:34 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz