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 Componente und Speichern der Eigenschaft ???? (https://www.delphipraxis.net/40691-eigene-componente-und-speichern-der-eigenschaft.html)

THE MATRIX 19. Feb 2005 14:39


Eigene Componente und Speichern der Eigenschaft ????
 
HI @ll

ich habe mir eine Componente erstellt mit folgender property
Delphi-Quellcode:
TSRC = class(TComponent) <---- die COMPONENTE
...
Public
 fString: TStrings;
...
published
 property source2: TStrings read fString write fString;
...

im constructor create hab ich dann
 inherited create(AOwner);
  fstring := TStringList.Create;
dem property source habe ich dann mein eigenen Editor zugewiesen , das sieht wie folgt aus

So registriert
Delphi-Quellcode:
RegisterPropertyEditor(TypeInfo(TStrings), nil, 'EDIT', TSourceEdit);
und das ist mein TSourceEdit

Delphi-Quellcode:
TSourceEdit = class(TPropertyEditor)
  public
    procedure Edit; override;
    function GetValue: string; override;
    function GetAttributes: TPropertyAttributes; override;
  end;

....


procedure TSourceEdit.Edit;
var
srcE: TfrmSourceEdit;
tmp: TComponent;
begin
    tmp := TComponent ( GetComponent(0) );
    srcE := TfrmSourceEdit.Create(Application);
    srcE.SrcEDit.Lines.Text := TSRC(tmp).fSource.Text;
    srcE.ShowModal;
    TSrc(tmp).fSource.Text := srcE.SrcEDit.Lines.Text;

end;

function TSourceEdit.GetValue: string;
begin
  FmtStr(Result, '(%s)', ['EDIT']);
end;


function TSourceEdit.GetAttributes: TPropertyAttributes;
begin
  Result := [paMultiSelect,paDialog];
end;
So klick ich nun in meiner Delphi IDE auf das
source | (EDIT) ... <--- halt im Objectinpector
erscheint mein EIGENER EDITOR und ich kann Editieren, schließ ich MEIN Editor und öffe erneut ist
der Text auch noch da!

Speicher ich Jedoch die Form und lad sie neu , ist es NICHT DA , in der DFM wird das auch NICHT gespeichert. :'(

Wo und WIE stell ich das an, dass er mir den source.strings in die dfm mitspeichert ? Registrier ich nicht meine Komponente sondern nehme die von Delphi gehts ....

hoffe ihr könnt mir helfen

BiG THX schonmal für JEDEN Tipp

arbu man 19. Feb 2005 14:41

Re: Eigene Componente und Speichern der Eigenschaft ????
 
füg erst mal Delphi Tags ein [ delphi ] [ /delphi ]
ohne leer zeichen

maximov 19. Feb 2005 15:20

Re: Eigene Componente und Speichern der Eigenschaft ????
 
versuch mal die eigenschaft readonly zu machen. etwa so:

Delphi-Quellcode:
property source2: TStrings read fString;
//oder
property source2: TStrings read fString write fString stored true;

PS: und editier deinen beitrag und mach da mal delphi-tags rein!

THE MATRIX 19. Feb 2005 17:03

Re: Eigene Componente und Speichern der Eigenschaft ????
 
OK DELPHI-TAGS drin :D


Zitat:

Delphi-Quellcode:
property source2: TStrings read fString;
//oder
property source2: TStrings read fString write fString stored true;

das funktioniert nicht und readonly soll ja nicht.

Ich möchte ja ,dass delphi wenn ich die Unit speicher mein eingegebenen Editor Text mitspeichert...


Hoffe ihr habt da noch ne gute idee :)

Wie ist das denn bei nem Memo aufgebaut für Lines ... macht man eine Componente reicht ja

Delphi-Quellcode:
property Lines
P.s. nehm ich meinen Registrierten Editor raus, so dass delphi den Eigenen nimmt, und ich dort Text Eingebe, gibts eine Fehlermeldung in adresse .... also fehlt da wohl noch ne "Line" ?
bei einem Memo steht im Editor Form1.Memo1.Lines bei mir steht da Form1.Src1.source2 muss dsa nicht
source2.lines heißen ? Wenn ja wie bekomm ich das hin ? Hat da vl jemand ne Componente in dem das funzt das ich mir das da mal angucken kann :)

THE MATRIX 19. Feb 2005 19:10

Re: Eigene Componente und Speichern der Eigenschaft ????
 
OK HABS GESCHAFFT :D *FREU*

und zwar


Delphi-Quellcode:
...
 procedure SetFString(Value: TStrings);
 ...
 property source2: TStrings read fString write SetFString;
und dann im SetFString

Delphi-Quellcode:
procedure TENIGMASRC.SetFString(Value: TStrings);
begin
 fString.Assign ( Value );
end;
er Speichert mein Editor wird benutzt und die welt ist wieder OK :)


THX @LL die sich tortzdem gedanken gemacht haben


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