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