Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Eigene Kompo sträubt sich (https://www.delphipraxis.net/95366-eigene-kompo-straeubt-sich.html)

DGL-luke 5. Jul 2007 16:02


Eigene Kompo sträubt sich
 
Hallo,

hab ne Kompo gebaut. Sieht so aus:

Delphi-Quellcode:
unit StringStorage;

interface

uses Classes;

type
  TStringStorage = class(TComponent)
  private
    FStrings: TStrings;
    procedure SetStrings(const Value: TStrings);
  public
    constructor Create(AOwner: TComponent); override;
  published
    property AllStrings: TStrings read FStrings write SetStrings;
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('BMS Translation',[TStringStorage]);
end;

{ TStringStorage }

constructor TStringStorage.Create(AOwner: TComponent);
begin
  inherited;

  FStrings := TStringList.Create;
end;

procedure TStringStorage.SetStrings(const Value: TStrings);
begin
  FStrings.Assign(Value);
end;

end.
Eigentlcih nix großartiges. In n Package gepackt und installiert.

aber folgendes passiert:

- kompo auf form ziehen
- im OI auf AllStrings doppelklicken -> Strings-Editopr
- irgendwas eingeben -> schließen
- editor wieder öffnen: Leer!
- wieder eingeben, udn schließen
- editor wieder öffnen: Ungültige zeigeroperation, AV, sonstiges.

warum?!

cruiser 5. Jul 2007 16:34

Re: Eigene Kompo sträubt sich
 
Habs eben nachgestellt und es klappt problemlos.

Der Destructor fehlt übrigens ;) aber eigentlich solltes daran nicht scheitern... :gruebel:

DGL-luke 6. Jul 2007 11:58

Re: Eigene Kompo sträubt sich
 
:gruebel:

Ich werds nochmal mit nem ganz neuen Projekt versuche, sprich die bpl entfernen und den Code kopieren. Mal sehen, vielleicht klappts dann.

EDIT: Jop, tuts. :gruebel:

SirThornberry 6. Jul 2007 13:01

Re: Eigene Kompo sträubt sich
 
du solltest noch darauf eingehen das auf AllString nil zugewiesen wird. Und wie bereits erwähnt unbedingt den destructor überschreiben und den reservierten speicher darin auch wieder frei geben.

DGL-luke 6. Jul 2007 13:13

Re: Eigene Kompo sträubt sich
 
Jop.

DGL-luke 6. Jul 2007 17:01

Re: Eigene Kompo sträubt sich
 
Ein Problem hab ich jetzt noch.

In der DFM wird die strings-property (umbenannt in Strings) als "Strings.Strings" gespeichert:

Delphi-Quellcode:
object StringStorage1: TStringStorage
    Strings.Strings = (
      'abcdef'
      'def')
    Left = 296
    Top = 112
  end
Und die Frage ist wie üblich: Warum?

EDIT: Ich sehe gerade. beim memo ist das auch so(da heißts Lines.Strings). okay, dann muss ich da selbst was machen.

DeddyH 6. Jul 2007 17:07

Re: Eigene Kompo sträubt sich
 
Weil Strings eine Eigenschaft von TStrings ist.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:43 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