Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Combobox auswerten?!? (https://www.delphipraxis.net/36726-combobox-auswerten.html)

plautzer 24. Dez 2004 14:12


Combobox auswerten?!?
 
Hi,

ich habe in einer Combobox zwei Felder einer tabelle (ID +''+ Bezeichnung), damit eine genau selektion möglich ist. Ich stehe jetzt vor dem problem ich das ich sie nicht auswerten kann. ICh bräuchte den wert der ID in einer Variable.
Die beiden werte sind per leerzeichen getrennt.. kann man das nutzen und die ID bis zum leerzeichen definieren?

Noch zum verständnis: Per Comboboxselect sollen dann die dazugehörigen daten in EDits eingetragen werden!

Danke euch,

Plautzer

glkgereon 24. Dez 2004 14:25

Re: Combobox auswerten?!?
 
die gewählte zeile der ComboBox kriegst du mit ItemIndex raus, die Strings stehen in Items, oder du nimmst doie eigenschaft SelText

Du kannst mit Pos(' ',t); die position des ersten leereichens in einem string t rausfinden

mit t2:=copy(t,1,5) kopierst du die ersten 5 zeichen aus t in t2

mit tint:=strtoint(tstring) machst du aus dem string tstring einen integer tint

wenn du das alles richtig zusammenschmeisst sollte es klappen....

plautzer 24. Dez 2004 15:54

Re: Combobox auswerten?!?
 
HI,

ich bekomme bei f:=Pos('',t); immer nur 0 raus?

So schaut mein input code aus:
Delphi-Quellcode:
CB_haus.Items.Add(D_haus.Fields[1].Asstring+ ' ' + D_haus.Fields[2].asstring);
Herausfinde der Position:

Delphi-Quellcode:
CB_haus.Focused;
i:=CB_haus.ItemIndex;
a:=CB_haus.Text;
f:=Pos('',t);
Verstehe net warum das nicht geht.

Plautzer

Ultimator 24. Dez 2004 16:29

Re: Combobox auswerten?!?
 
Ich vermute mal, dass du zwischen ID und Bezeichnung ein Leerzeichen gesetzt hast, oder?
Dann wäre das hier falsch:
Delphi-Quellcode:
f:=Pos('',t);
Das hier jedoch richtig:
Delphi-Quellcode:
f:=Pos(' ',t);
Ich hoffe, ich habe das richtig verstanden ;-)

glkgereon 24. Dez 2004 23:31

Re: Combobox auswerten?!?
 
jup, ultimator hat wahrscheinlich recht

du setzt statt eines blank ' ' einen leeren string ''....

plautzer 25. Dez 2004 01:23

Re: Combobox auswerten?!?
 
Jepp... es funzt jez.

Ich hatte gedacht, dass da '' schon als leerstring gilt.

Thx leute,

Plautzer

Luckie 25. Dez 2004 01:37

Re: Combobox auswerten?!?
 
Ich würde ie Methode Delphi-Referenz durchsuchenAddObject nehmen und die ID zusätzlich als Zeiger auf eine Datenstruktur mit dem Item selner ablegen. Dann sparst du dir das Gefrickel mit pos und copy. Desweiteren halte ich es für die elegantere Lösung - aber auch eben programmiertechnisch etwas anspruchsvoller. ;)

plautzer 31. Dez 2004 15:19

Re: Combobox auswerten?!?
 
HI,

it addobject komme ich garnet zu recht, da weiß ich gar nicht wie anfangen sollte.

@ultimator

Wie ermittle ich den 2ten wert?
z.B.

1 2 3 4

wie kann ich das auslesen und wenn möglich in variabelen speichern?

Ich habs so probiert:

Delphi-Quellcode:
edit1.Focused;
a:=edit1.Text;
f1:=0;
while f1 < edit1.GetTextLen do
begin
f2:=Pos(' ',a);    // ich vermute hier den fehler (beim 2ten durchlauf um eins zu klein)
a2:=copy(a,f1,f2-1);
n:=strtoint(a2);
f1:=f2+1;
Funzt aber nicht ganz. Einen durchlauf macht er aber dann kommt die fehlermeldung *' ' ist keine gültiger integer * ;

Wie bekomme ich die schleife zum laufen?
Wo gibts noch einen besseren weg?

THx,

Plautzer

Ultimator 31. Dez 2004 16:31

Re: Combobox auswerten?!?
 
Angenommen, du hast 4 Werte, 1 2 3 4, jeweils durch ein Leerzeichen getrennt.
Delphi-Quellcode:
var zahl1, zahl2, zahl3, zahl4, zahlaktuell:byte; //Positionen der Zahlen
  zahlen:string;
...
begin
zahlen:='1 2 3 4';
zahlaktuell:=pos('1',zahlen); //Position der 1. Zahl
zahl1:=strtoint(copy(zahlen,zahlaktuell,1)); //Die erste Zahl in die Variable Zahl1 zur Weiterverarbeitung kopieren
zahlaktuell:=pos('2',zahlen); //Position der 2. Zahl
zahl2:=strtoint(copy(zahlen,zahlaktuell,1));
zahlaktuell:=pos('3',zahlen); //Position der 3. Zahl
zahl3:=strtoint(copy(zahlen,zahlaktuell,1));
zahlaktuell:=pos('4',zahlen); //Position der 4. Zahl
zahl4:=strtoint(copy(zahlen,zahlaktuell,1));
ShowMessage('Zahl 1 ist '+inttostr(zahl1)+#10#13+'Zahl 2 ist '+inttostr(zahl2)+#10#13+'Zahl 3 ist '+inttostr(zahl3)+#10#13+'Zahl 4 ist '+inttostr(zahl4));
end;
Wenns mehr Zahlen sind, köntest dus evtl. in ne Schleife packen, aber das solltest du schon schaffen ;-)

plautzer 31. Dez 2004 17:31

Re: Combobox auswerten?!?
 
Ja, das ganze ist einfach wenn man die Zahlen kennt.
Das ganze ist aber dynamisch, zb 2 45 567 2 4563, wie liest mann so etwas aus?

Ich habe mir ja schon überlegt die position gleich in eine variable überzugeben und nicht erst in edit. Das beste wäre in ein array : a[1]:=zahl1, a[2]:=zahl2 etc.

Das könnte man dann wunderbar an die speicherprocedure übergeben und in einer schleife abarbeiten.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:46 Uhr.
Seite 1 von 2  1 2      

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 by Thomas Breitkreuz