AGB  ·  Datenschutz  ·  Impressum  







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

ComboBox mit mehreren Spalten?

Ein Thema von Stefan H. · begonnen am 29. Mai 2004 · letzter Beitrag vom 15. Dez 2014
Antwort Antwort
Gremlin

Registriert seit: 18. Apr 2006
Ort: Im Süden
178 Beiträge
 
Delphi 7 Enterprise
 
#1

Re: ComboBox mit mehreren Spalten?

  Alt 31. Mai 2007, 22:06
Hi Carsten,


jo, kannst du auch über die Combo machen, es gibt doch mehrere Lösungen.
Nur solltest du dir überlegen, ob es sinnvoll ist, die Werte von der Tabelle2 in die Combo zu schreiben und beim Scrollen von Tabelle1 in der Combo zu suchen, anstatt über einen Query beide Tabellen auf einmal zu kombinieren. Ich kann das für dich nicht entscheiden.

Fang doch einfach mal mit einer ersten Lösung an und wenn sie dir nicht gefällt machst du es eben anders. Wenn dann noch Fragen auftauchen melde dich einfach nochmal.

Viel Erfolg.
Gruss Gremlin
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
856 Beiträge
 
Delphi 12 Athens
 
#2

AW: ComboBox mit mehreren Spalten?

  Alt 15. Dez 2014, 17:12
Hallo Zusammen,

der Threat ist zwar schon älter, aber vielleicht kann mir trotzdem jemand einen Tip geben.

Ich habe es folgendermaßen umgesetzt:
Delphi-Quellcode:
while not Query.Eof do begin
      if not Query.FieldByName(Spalte_sichtbar).IsNull then begin
         Wert:=Query.FieldByName(Spalte_Unsichtbar).AsString;
         ComboBox.Items.AddObject(Query.FieldByName(Spalte_sichtbar).AsString, TObject(Wert));
      end;
      Query.Next;
   end;
Im OnChange Procedure wollte ich den Wert dann in ein Editfeld schreiben und habe es so versucht:

Edit_Abteilung_ID.Text:=String(Combo_Abteilung.Items.Objects[Combo_Abteilung.ItemIndex]);

Leider wird dann nur so ein komisches Zeichen in das Editfeld geschrieben (wie ein L falschherung, Schenkel zeigt nach links).

Wenn ich es debuggere, dann bekomme ich immer den Wert #4.

Kann mir jemand sagen, was ich falsch mache?

Vielen Dank
Patrick
Patrick
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.233 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: ComboBox mit mehreren Spalten?

  Alt 15. Dez 2014, 17:48
Du kannst nicht einen String als TObject interpretieren um ihn entsprechend anzuhängen.
Bei Strings gibt es automatische Referenzzählung. Wenn zur Laufzeit gemeint wird das der String nicht mehr verwendet wird, wird er aufgeräumt.
Und nach einiger Zeit ist an dieser Speicheradresse irgendwas zu finden.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
856 Beiträge
 
Delphi 12 Athens
 
#4

AW: ComboBox mit mehreren Spalten?

  Alt 15. Dez 2014, 19:18
Das verstehe ich nicht. Habe ich diesen Thread falsch verstanden? Ich dachte es ginge genau darum, einem String eine Zusatz-Info mitzugeben, die ich dann später wieder abrufen kann.
Wenn das so nicht geht, hast Du eine andere Idee, wie ich das lösen kann?

Vielen Dank
Patrick
Patrick
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: ComboBox mit mehreren Spalten?

  Alt 15. Dez 2014, 20:44
Ja, da hast etwas völlig falsch verstanden.

Diese "tolle" Lösung (mehr ein Gewurschtel oder auch Krücke) misbraucht den Objekt-Parameter um einen Integer Wert dort abzulegen. Das funktioniert irgendwie, ist aber nicht der Sack der Zwerge.

Wenn du eine Information dort ablegen willst, dann lege dort auch eine Information ab.

Nehmen wir an, dort soll eine Person abgelegt werden mit einem string ID Wert, dann mach das dich richtig:
Delphi-Quellcode:
TPerson = class
public
  constructor Create( const ID, FirstName, LastName : string );
  function ToString : string; override;
  property ID : string read FID;
  property FirstName : string read FFirstName;
  property LastName : string read FLastName;
end;

function TPerson.ToString: string;
begin
  Result := FLastName + ', ' + FFirstName;
end;
Aus der Abfrage erzeugst du dir die Instanzen und fügst diese dann zu den ComboBox Items hinzu
Delphi-Quellcode:
LPerson := TPerson.Create( ... );
ComboBox.Items.AddObject( LPerson.ToString, LPerson );
Du musst jetzt nur wegen der Freigabe schauen, ob die ComboBox Items das OwnsObjects unterstützen.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Antwort Antwort


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 15:32 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