Autor Beitrag
jjturbo
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 516

Win2000 prof., WinXP prof.
D4 Stand., D5 Prof, D7 Prof, D2007 Prof.
BeitragVerfasst: Fr 18.12.09 08:45 
Moin Forum,

ich möchte eine Funktion, die mir mit der gleichen Syntax wie bei TTable Werte zurückliefern kann:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
function TMeineKlasse.FieldByName(const FieldName: WideString): TField;
begin
  MyField.SetFieldType(ftString);
  MyField.AsString := 'Hallo';
  Result           := MyField;
end;




Die Klasse:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
Type
  TMeineKlasse= class(TPanel)
  private
    MyField :TField;
  protected
  public
    function FieldByName(const FieldName: WideString): TField;
  published
  end;



constructor TMeineKlasse.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  MyField := TField.Create(Self);
end;




destructor TMeineKlasse.Destroy;
begin
  MyField.Free;
  inherited Destroy;
end;




Aber wenn ich die Funktion aufrufe bekomme ich immer eine Fehlermeldung:
EDataBaseError, "Feld" kann nicht als Typ String angesprochen werden.

Was mache ich denn falsch?
Funktioniert das denn nur in Verbindung mit einer Datenmenge, also einer Tabelle?

_________________
Windows XP: Für die einen nur ein Betriebssystem - für die anderen der längste Virus der Welt...
jjturbo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 516

Win2000 prof., WinXP prof.
D4 Stand., D5 Prof, D7 Prof, D2007 Prof.
BeitragVerfasst: Fr 18.12.09 10:44 
Habe es so hinbekommen:

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
Type
  TMyField = class(TPanel)
  private
    Wert     :Variant;
    FeldName :String;
    procedure SetAsString(const Value: string);
    function GetAsString:string;
  protected
  public
    constructor Create(AOwner: TComponent);
    destructor Destroy; override;
    property AsString: string read GetAsString write SetAsString;
  published
  end;


Type
  TMeineKlasse= class(TPanel)
  private
    MyField :Array of TMyField;
  protected
  public
...





function TMyField.GetAsString:String;
begin
  Result := Wert;
end;





procedure TMyField.SetAsString(const Value: string);
begin
  Wert := Value;
end;



Gruß jjturbo

_________________
Windows XP: Für die einen nur ein Betriebssystem - für die anderen der längste Virus der Welt...