Für Fragen von Einsteigern und Programmieranfängern...
RUB
Beiträge: 15 Registriert: Do 5. Nov 2009, 13:02
Beitrag
von RUB » Mi 21. Dez 2011, 19:41
Hallo,
ist es möglich ein array property mit einem TIEdit zu verbinden?
Code: Alles auswählen
private
FList: TObjectList;
...
public
...
property Kom[Index: Integer] :String read GetKom write SetKom;
property Operand[Index: Integer] :TOperand read GetOperand write SetOperand;
...
mit freundlichen Grüßen
Bernd
u-boot
Beiträge: 308 Registriert: Do 9. Apr 2009, 10:10
OS, Lazarus, FPC: Ubuntu 9.10 (L 0.9.28 FPC 2.2.4)
CPU-Target: 32Bit
Wohnort: 785..
Beitrag
von u-boot » Mi 21. Dez 2011, 19:54
Die Frage ist eben, was du unter "verbinden" verstehst. Ich würde sagen probier es in einem Beispielprojekt aus und wenn Problemchen auftauchen meldest dich wieder.
Ubuntu 9.10 (L 0.9.28 FPC 2.4.x)
RUB
Beiträge: 15 Registriert: Do 5. Nov 2009, 13:02
Beitrag
von RUB » Do 22. Dez 2011, 07:39
ich meine mit verbinden den "Link"
so das ich mich nicht selbst um die Übername der Änderungen kümmern muss.
Ich werde mal Heute Abend ein kleines Beispiel-Projekt machen.
RUB
Beiträge: 15 Registriert: Do 5. Nov 2009, 13:02
Beitrag
von RUB » Do 22. Dez 2011, 20:58
Code: Alles auswählen
type
TMyDaten = class (TPersistent)
private
FKom:String;
published
property Kom:String read FKom write FKom;
end;
TMyDatenListe =class(TPersistent)
private
FListe:TObjectList;
function GetItems(Index: Integer): TMyDaten;
function GetKom(Index: Integer): String;
procedure SetKom(Index: Integer; const AValue: String);
public
constructor Create;
destructor Destroy; override;
procedure Add;
property Kom[Index:Integer]:String read GetKom write SetKom;
property Items[Index:Integer]:TMyDaten read GetItems;
end;
{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
begin
FDatenListe:=TMyDatenListe.Create;
FDatenListe.Add;
FDatenListe.Add;
Edit1.Text:=FDatenListe.Kom[0];
Edit2.Text:=FDatenListe.Kom[1];
// Direkter zugriff auf TMyDaten-Objekt
// Daten werden an den Listen- Objekt vorbei geschrieben
TIEdit1.Link.SetObjectAndProperty(FDatenListe.Items[0],'Kom');
TIEdit2.Link.SetObjectAndProperty(FDatenListe.Items[1],'Kom');
// Zugriff über FDatenListe nicht möglich
//TIEdit3.Link.SetObjectAndProperty(FDatenListe.Kom[0],'Kom',);
end;
Dateianhänge
TestListe.zip
(189.48 KiB) 78-mal heruntergeladen
mschnell
Beiträge: 3444 Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld
Beitrag
von mschnell » Do 22. Dez 2011, 22:59
RUB hat geschrieben: ist es möglich ein array property mit einem TIEdit zu verbinden?
Willst Du sozusagen ein property Array mit String als Index ?
Das müsste gehen, indem Du einen Array-Typ mit einem enumerierten Type als Index definierst und dann eine Property damit definierst.
In den set und get Funktionen kannst Du dann den Argument-String mit den per RTTI gefundenen Ausprägungen des enumerierten Typs vergleichen und den gefundenen Index dann verwenden.
-Michael
RUB
Beiträge: 15 Registriert: Do 5. Nov 2009, 13:02
Beitrag
von RUB » Sa 24. Dez 2011, 13:58
Hallo,
ich habe es jetzt mit einem Observer und interface gelöst und den Ansatz mit RTTI verworfen.
Dateianhänge
TestListe_1.zip
(190.67 KiB) 71-mal heruntergeladen