AGB  ·  Datenschutz  ·  Impressum  







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

Frage zur property Lines

Ein Thema von Super_Chemiker · begonnen am 23. Nov 2008 · letzter Beitrag vom 9. Dez 2008
Antwort Antwort
Super_Chemiker

Registriert seit: 16. Nov 2008
111 Beiträge
 
Delphi 2009 Professional
 
#1

Frage zur property Lines

  Alt 23. Nov 2008, 14:09
hi
ich bin kein großer experte(eher anfänger) wenns um das erstellen einer klasse/komponente geht!
kann mir hier jemand helfen?
Delphi-Quellcode:
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;
beim kompilieren erhalte ich folgende fehler:
  • Eigenschaft Lines existiert nicht in Basisklasse
  • , oder : erwartet aber ; gefunden
  • das published feld write ist weder vom typ class noch interface

alle in der zeile property lines ...

vielen dank im vorraus
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

Re: Frage zur property Lines

  Alt 23. Nov 2008, 14:30
Hi,

Du hast bei der Property den Typ vergessen.
So muss es sein:

property Lines: TStringlist read fLines write fLines; Edit: Stimmt, die doppelpunkte hatte ich gar nicht bemerkt...
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.442 Beiträge
 
Delphi 12 Athens
 
#3

Re: Frage zur property Lines

  Alt 23. Nov 2008, 14:31
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.
Uwe Raabe
  Mit Zitat antworten Zitat
Andreas L.
(Gast)

n/a Beiträge
 
#4

Re: Frage zur property Lines

  Alt 23. Nov 2008, 14:41
Zitat von Uwe Raabe:
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.
Soll heißen das du dir eine Setter-Method erstellen sollst:

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;
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Frage zur property Lines

  Alt 23. Nov 2008, 14:55
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;
  Mit Zitat antworten Zitat
Super_Chemiker

Registriert seit: 16. Nov 2008
111 Beiträge
 
Delphi 2009 Professional
 
#6

Re: Frage zur property Lines

  Alt 8. Dez 2008, 12:17
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)
  Mit Zitat antworten Zitat
Super_Chemiker

Registriert seit: 16. Nov 2008
111 Beiträge
 
Delphi 2009 Professional
 
#7

Re: Frage zur property Lines

  Alt 9. Dez 2008, 16:30
Weiß das keiner?
Ich hab momentan nur ein graues Rechteck!
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#8

Re: Frage zur property Lines

  Alt 9. Dez 2008, 16:31
Das soll aussehen wie z.B. ein Memo? Dann würde ich die Paint-Methode überschreiben und selber zeichnen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Super_Chemiker

Registriert seit: 16. Nov 2008
111 Beiträge
 
Delphi 2009 Professional
 
#9

Re: Frage zur property Lines

  Alt 9. Dez 2008, 16:33
das soll so sein wie trichedit mit
Delphi-Quellcode:
color := clbtnface;
borderstyle := bsnone;
Readonly := true;
edit:
create sieht so aus:
Delphi-Quellcode:
inherited Create (AOwner);
     flines := tstringlist.Create;
     Color := clbtnface;
     SetBounds (0,0,150,300);
     lines.Text := 'Textfield';
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#10

Re: Frage zur property Lines

  Alt 9. Dez 2008, 16:36
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.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  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 08:09 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