Einzelnen Beitrag anzeigen

Ares

Registriert seit: 5. Dez 2002
269 Beiträge
 

Eigene Komponente: Problem mit Property Lines: TStrings...

  Alt 1. Dez 2005, 16:53
Hallo!

In meinem anderen Beitrag suche ich nach einem Label, das mehr als 255 Zeichen aufnehmen kann (http://www.delphipraxis.net/internal...=465683#465683). Da keine wirkliche Lösung in Sicht ist, wollte ich es einfach mal mit einer eigenen Komponente versuchen. Ich wollte von einem TLabel ableiten, eine Eigenschaft Lines vom Typ TStrings hinzufügen. Die Unit sieht bis jetzt so aus:

Delphi-Quellcode:
unit MyLabelUnit;

interface

uses Windows, Messages, SysUtils, Classes, Controls, ExtCtrls, Graphics;

type
   TMyLabel = class(TLabel)
   private
     FLines : TStrings;
   protected
     procedure setLines(newLines: TStrings);
   public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
   published
     property Lines : TStrings read FLines write setLines;
   end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Eigene', [TMyLabel]);
end;

constructor TMyLabel.Create(AOwner: TComponent);
begin
  FLines := TStringList.Create;
  inherited Create(AOwner);
end;

destructor TMyLabel.Destroy;
begin
  FLines.Free;
  inherited;
end;

procedure TMyLabel.setLines(newLines: TStrings);
begin
  FLines := newLines;
  self.caption := FLines.GetText;
end;
Wenn ich die Komponente auf einem Form platziere kann ich im Objektinspektor den Eigenschaftseditor für Lines aufrufen und einen Text eingeben. Der Text (beliebig lang) wird auch in das Label "gemalt".

Wenn ich den Eigenschaftseditor von Lines nochmal aufrufen oder das Projekt compilieren will, bekomme ich allerdings folgede Fehlermeldung und Delphi stürzt total ab (muss beendet werden):

Zitat:
---------------------------
Fehler
---------------------------
Zugriffsverletzung bei Adresse 40005982 in Modul 'rtl60.bpl'. Lesen von Adresse 00000026.
---------------------------
OK
---------------------------
Was mache ich hier falsch???


Besten Dank
Ares
  Mit Zitat antworten Zitat