AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Combobox mit Objekten

Ein Thema von Mike_on_Tour · begonnen am 27. Feb 2008 · letzter Beitrag vom 27. Feb 2008
Antwort Antwort
Seite 1 von 2  1 2      
Mike_on_Tour

Registriert seit: 16. Aug 2007
195 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Combobox mit Objekten

  Alt 27. Feb 2008, 11:06
Hallo zusammen,

ich möchte eine Ländertabelle in eine Combobox eintragen und später nach einem Eintrag suchen.

Die Ländertabelle besteht aus dem Namen und der Abkürzung des Landes, also z.B.:

Deutschland - DEU
Italien - ITA
Frankreich - FRA

Der Eintrag in die ComboBox erfolgt so:

Delphi-Quellcode:
  ComboBox.Items.Clear;
Table.First;
while (not Table.EOF) do begin
  Combobox.Items.AddObject (Table.FieldByName('Landname').AsString,
                            TObject(Table.FieldByName('LandKurz').AsString));
  Table.Next;
end;
In der Combobox wird auch nur der Names des Landes angezeigt.

Wenn ich jetzt einen Listeneintrag auswähle, möchte ich gern die Abkürzung des Landes ermitteln.

LandKurz := String (ComboBox.Items.Objects[ComboBox.ItemIndex]); Das funktioniert aber nicht.

Auch die Positionierung auf ein Land über die Abkürzung klappt nicht:

Delphi-Quellcode:
sLand := 'DEU';
ComboBox.ItemIndex := ComboBox.Items.IndexOfObject (TObject (sLand));
Kann mir jemand auf die Sprünge helfen ?

Mike
Programmieren ist wie das Wandeln auf dem schmalen Pfad zwischen Wahnsinn und Intelligenz.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Combobox mit Objekten

  Alt 27. Feb 2008, 11:10
Kommt ein Fehler?
Markus Kinzler
  Mit Zitat antworten Zitat
Mike_on_Tour

Registriert seit: 16. Aug 2007
195 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

Re: Combobox mit Objekten

  Alt 27. Feb 2008, 11:31
Nein, es kommt kein Fehler.

BeiLandKurz := String (ComboBox.Items.Objects[ComboBox.ItemIndex]); kam z.B. ein Textfragment "age", wenn ich Deutschland selektiere.

Und bei
Delphi-Quellcode:
sLand := 'DEU';
ComboBox.ItemIndex := ComboBox.Items.IndexOfObject (TObject (sLand));
ist das Ergebnis -1.

Und ich weiß nicht warum.
Programmieren ist wie das Wandeln auf dem schmalen Pfad zwischen Wahnsinn und Intelligenz.
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.487 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Combobox mit Objekten

  Alt 27. Feb 2008, 11:41
Was soll dabei rauskommen wenn Du einen String in ein TObject umwandelst? So gehts from Prinzip her:
Delphi-Quellcode:
var
   s : Pointer;
   sl : TStringList;
begin
   sl := TStringList.Create;
   s := StrNew(PChar('Hallo'));
   sl.AddObject('Eins', s);
   ShowMessage(PChar(sl.Objects[0])); // --> 'Hallo'
StrDispose(PChar(sl.Objects[0]));
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Combobox mit Objekten

  Alt 27. Feb 2008, 11:41
.Objects verwaltet nur Zeiger. Du musst die eigentlich Objekte selber verwalten. Das Objekt, welches du adressierst besteht dann ja nicht mehr, bzw. hat dann einen anderen Inhalt.
Markus Kinzler
  Mit Zitat antworten Zitat
peterlepan

Registriert seit: 5. Jun 2006
Ort: Nordhausen
37 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

Re: Combobox mit Objekten

  Alt 27. Feb 2008, 11:46
Hi!

Kann es sein, dass die Objekte in der Combo leer sind?
Ich habe gerade versucht den Quelltext auf meiner Maschine laufen zu lassen, nur mit festen Strings statt Strings aus einer Datenbanktabelle. Das Ergebnis war eine Fehlermeldung vom Compiler, dass dieses Typecasting (auf TObject) nicht funktioniert.

Wenn ich nil-Werte auf TObject gecastet habe, läuft zumindest das Füllen der Combo, allerdings sind die Objekte dann leer.

Das Casten eines String auf ein TObject erinnert an das Boxing unter .NET, Du schriebst aber in der Überschrift etwas von Win32.

Wenn ich Objekte an eine TStringList oder eine TComboBox anhänge, schreibe ich mir dazu eine Mini-Klasse, die die erforderlichen Felder beinhaltet. Ist sicher für ein Feld erst einmal ein ziemlicher Aufwand, geht aber aus meiner Sicht nicht anders.

Gruß

Peter
Peter Tabatt
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.487 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Combobox mit Objekten

  Alt 27. Feb 2008, 11:49
Zitat von eterlepan:
geht aber aus meiner Sicht nicht anders
Hast Du meinen Beitrag gelesen? Natürlich kann man sich auch einen Mini StringKlasse für sowas schreiben, aber für einmaligen Einsatz zu aufwänding.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
peterlepan

Registriert seit: 5. Jun 2006
Ort: Nordhausen
37 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#8

Re: Combobox mit Objekten

  Alt 27. Feb 2008, 12:08
Hallo Union!

Deine Lösung habe ich erst nach dem Posten gesehen, für den String ist das natürlich eleganter.
Mit einer Klasse hat man die Möglichkeit zusätzliche Infos mit im Objekt unterzubringen.

Peter
Peter Tabatt
  Mit Zitat antworten Zitat
Mike_on_Tour

Registriert seit: 16. Aug 2007
195 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#9

Re: Combobox mit Objekten

  Alt 27. Feb 2008, 12:09
@peterlepan:
Zitat:
Das Casten eines String auf ein TObject erinnert an das Boxing unter .NET, Du schriebst aber in der Überschrift etwas von Win32.
Es ist Win32.

Die kleine Miniklasse wollte ich mir eben ersparen. Wenn es keine andere Lösung gibt, werde ich es so machen. Aber vielleicht gibt es ja doch noch eine Lösung.
Programmieren ist wie das Wandeln auf dem schmalen Pfad zwischen Wahnsinn und Intelligenz.
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.487 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: Combobox mit Objekten

  Alt 27. Feb 2008, 12:12
Zitat:
Wenn es keine andere Lösung gibt, werde ich es so machen. Aber vielleicht gibt es ja doch noch eine Lösung
Noch einer der die Beiträge nicht liest
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:35 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz