rtti array property TIEdit

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
RUB
Beiträge: 15
Registriert: Do 5. Nov 2009, 13:02

rtti array property TIEdit

Beitrag von RUB »

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..

Re: rtti array property TIEdit

Beitrag von u-boot »

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

Re: rtti array property TIEdit

Beitrag von RUB »

ich meine mit verbinden den "Link"

Code: Alles auswählen

TIEdit1.Link.SetObjectAndProperty(DB,'Kom');
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

Re: rtti array property TIEdit

Beitrag von RUB »

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

Re: rtti array property TIEdit

Beitrag von mschnell »

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

Observer

Beitrag von RUB »

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

Antworten