![]() |
Frage zur property Lines
hi :dp:
ich bin kein großer experte(eher anfänger) wenns um das erstellen einer klasse/komponente geht! kann mir hier jemand helfen?
Delphi-Quellcode:
beim kompilieren erhalte ich folgende fehler:
type
TTextfield = class(Twincontrol) private { Private-Deklarationen } fLines: TStringlist; protected { Protected-Deklarationen } public { Public-Deklarationen } constructor Create (AOwner: TComponent); override; published { Published-Deklarationen } property Lines read: fLines; write: fLines; end;
alle in der zeile property lines ... vielen dank im vorraus |
Re: Frage zur property Lines
Hi,
Du hast bei der Property den Typ vergessen. So muss es sein:
Delphi-Quellcode:
Edit: Stimmt, die doppelpunkte hatte ich gar nicht bemerkt...
property Lines: TStringlist read fLines write fLines;
|
Re: Frage zur property Lines
Und entferne mal die Doppelpunkte nach read und write...
Bist du sicher, daß beim write die Instanz von FLines ersetzt werden soll? Normalerweise wird der Schreibzugriff auf so eine Property über FLines.Assign geregelt. |
Re: Frage zur property Lines
Zitat:
Delphi-Quellcode:
type
TTextfield = class(Twincontrol) private { Private-Deklarationen } fLines: TStringlist; protected procedure SetLines(Value: TStringList); public { Public-Deklarationen } constructor Create (AOwner: TComponent); override; published { Published-Deklarationen } property Lines:TStringList read fLines write SetLines; end; ... procedure TTextfield.SetLines(Value: TStringList); begin FLines.assign(Value); end; |
Re: Frage zur property Lines
Man sollte TStringList an den richtigen Stellen durch TStrings ersetzen - das macht das Property kompatibel zu allen anderen Klassen, die von TStrings abgeleitet sind.
Delphi-Quellcode:
type
TTextfield = class(Twincontrol) private { Private-Deklarationen } fLines: TStrings; protected procedure SetLines(Value: TStrings); public { Public-Deklarationen } constructor Create(AOwner: TComponent); override; published { Published-Deklarationen } property Lines:TStrings read fLines write SetLines; end; ... constructor TTextfield.Create(AOwner: TComponent); begin inherited; fLines := TStringList.Create; // die einzigste Stelle, an der TStringList geschrieben wird end; procedure TTextfield.SetLines(Value: TStrings); begin FLines.assign(Value); end; |
Re: Frage zur property Lines
Super!
Wie gesagt bin ich ein Anfänger im erstellen von Komponenten, also wie mache ich, dass der Inhalt von lines angezeigt wird?(Also zur Laufzeit oder Erstellungszeit auf dem Form) |
Re: Frage zur property Lines
Weiß das keiner?
Ich hab momentan nur ein graues Rechteck! :( |
Re: Frage zur property Lines
Das soll aussehen wie z.B. ein Memo? Dann würde ich die Paint-Methode überschreiben und selber zeichnen.
|
Re: Frage zur property Lines
das soll so sein wie trichedit mit
Delphi-Quellcode:
edit:
color := clbtnface;
borderstyle := bsnone; Readonly := true; create sieht so aus:
Delphi-Quellcode:
inherited Create (AOwner);
flines := tstringlist.Create; Color := clbtnface; SetBounds (0,0,150,300); lines.Text := 'Textfield'; |
Re: Frage zur property Lines
Dann überschreib doch mal Paint und gib dort den Text aus. Alternativ könntest Du doch auch etwas tiefer ansetzen und etwa von TMemo/TCustomMemo ableiten, das spart eine Menge Arbeit.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:54 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