Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.016 Beiträge
 
Delphi 12 Athens
 
#2

AW: ComboBox mit Integer-IDs

  Alt 9. Sep 2022, 13:46
Wozu das Self im AddObject? (und auch noch unnötig nach TObject gekastet)

Die Windows-Komponente kennt eh keine Objekte ... dort ist das "Objekt" eigentlich "Data" und das ist ein dummer Pointer/Integer.

Fazit:
* Caste einfach deinen Integer nach TObject (nimm besser gleich NativeInt anstatt Integer, damit es eventuell irgendann unter 64 Bit nicht rumzickt)
* beim Lesen einfach den Integer wieder aus Objects lesen
* * also quasi ganz einfach nur AddIdItem zu Items.AddObject und ID[] zu Items.Objects casten/weiterleiten
* und das Ganze Zeugs mit der zusätzlichen Liste sein lassen.

Alternativ ein DataObjekt erstellen, das an Objects übergeben (und nicht vergessen das wieder freizugeben, denn da es in Wirklichkeit keine Objekt-Zeiger sind und Delphi/VCL diese "Objekte" auch nicht aufräumt ... mußt du das machen)


Ansonsten hast Spaß eben, wenn du Items löschst, verschiebst/sortierst, was Insertest usw.,
weil du nicht auf das OnChange reagierst und deine interne Liste damit abgleichst.



TComboBox und TListBox sind das Selbe. (ich glaub TRadioGroupBox auch)
Achtung, bei TMemo gibt es auch ein Objekts, aber das wird intern nirgendwo gespeichert (und natürlich hat Delphi/VCL vergessen dort eine Exception einzubauen, falls man es dennoch versucht)


Delphi 6?
Wenn aktueller, dann kannst dir die Ableitung/Registrierung sparen,
erstellst einfach einen ClassHelper und hast das Verhalten direkt an jeder normalen TComboBox verfügbar.
(in D6 kann man aber auch "gleichnamig" ableiten und muß nicht registrieren, da der Speicher der Klasse unverändert bleibt)
Bei Google suchencommunity edition
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 9. Sep 2022 um 14:31 Uhr)
  Mit Zitat antworten Zitat