Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

AW: TListBox.Items.Add overloaden

  Alt 2. Mai 2021, 11:21
Erstmal ist dein Vererbung falsch.
TStrings ist nur der öffentliche Typ, aber Intern ist es ein TListBoxStrings.

Delphi-Quellcode:
type
  TLogStrings = class(TListBoxStrings)
  public
    function Add(const S: string): Integer; virtual;
  end;
Und genauso, wie beim TMemo/TMemoStrings, bist du hier total am Arsch, denn du kannst das nicht ableiten, weil jemand auf die saudämliche Idee kam und diesen Typen nur im Implementation der Vcl.StdCtrls (Delphi 7 ohne Vcl.) deklariert hat, wo du nicht ran kommst.


In der LitBox gibt es irgendwo das TListBoxStrings.Create für diese TStrings. (hier direkt im Contructor)
Da müsstest du schauen, ob es virtuel ist und du dort stattdessen deine Klasse erstellen kannst.


Aber mach es dir doch einfach.
Und löse dein Probleme mir einem Class-Helper.

Delphi-Quellcode:
type
  TLogStrings = class helper for TStrings
  public
    function Add(const S: string): Integer;
  end;
Da in der TListBox öffentlich TStrings definiert ist und kein "eigener" Typ, hängt dieser Helper zwar nun "überall", an allen TStrings (sobald deine Unit mit dem Helper im Uses steht), aber wenn dich das nicht stört, dann ist es die einfache Lösung.
Natürlich kannst den Helper auch nur lokal in diese eine Unit, in Interface oder Implementation deklarieren und nur dort an allen TStrings benutzen.

[edit]
Mit Delphi 7 bist du geliefert, da hast du keine Möglichkeit. (die Class-Helper gibt es dort noch nicht)
Tipp: Community-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 ( 2. Mai 2021 um 11:29 Uhr)
  Mit Zitat antworten Zitat