Definieren und Implementieren der bindbaren Objekte
Nach oben zu Tutorial: Programmgesteuerte Verwendung von LiveBinding
- Achtung: Die hier beschriebene programmseitige Methode zum Implementieren von Bindungsausdrücken stellt NICHT das Standardverfahren dar. Normalerweise würden Sie beim Entwurf den Objektinspektor verwenden. Wahrscheinlich werden Sie die programmseitige Methode zum Erstellen von Bindungsausdrücken nie benötigen. In diesem Tutorial wird jedoch gezeigt, dass es möglich ist, solche Ausdrücke manuell zu erstellen.
- Beispiele für das Standardverfahren bei der Verwendung von LiveBindings finden Sie unter:
Nun müssen Sie zwei bindbare Objekte definieren, die aneinander gebunden werden sollen. Nennen Sie diese Objekte z. B. TMyObject1 und TMyObject2. Diese Objekte werden, wie nachfolgend gezeigt, als zwei Klassen implementiert. Jede Klasse hat zwei Eigenschaften – eine ist ein String und die andere ein Integer.
Definition des ersten Objekts
type
TMyObject1 = class(TObject)
private
FIntegerValue: Integer;
FStringValue: String;
public
property IntegerValue: Integer read FIntegerValue write FIntegerValue;
property StringValue: String read FStringValue write FStringValue;
end;
class TMyObject1 : public TObject {
private:
Integer FIntegerValue;
String FStringValue;
public:
__property Integer IntegerValue = {
read = FIntegerValue, write = FIntegerValue};
__property String StringValue = {read = FStringValue, write = FStringValue};
};
Definition des zweiten Objekts
type
TMyObject2 = class(TObject)
private
FIntegerValue: Integer;
FStringValue: String;
public
property IntegerValue: Integer read FIntegerValue write FIntegerValue;
property StringValue: String read FStringValue write FStringValue;
end;
class TMyObject2 : public TObject {
private:
Integer FIntegerValue;
String FStringValue;
public:
__property Integer IntegerValue = {
read = FIntegerValue, write = FIntegerValue};
__property String StringValue = {read = FStringValue, write = FStringValue};
};
Der Einfachheit halber wurden beide Objekte auf exakt dieselbe Weise deklariert. Da diese Objekte keine Methoden enthalten, ist keine Implementierung erforderlich. Der Konstruktor und der Destruktor sind von System.TObject geerbt, und Sie können die Objekte einfach instantiieren und freigeben.
Instantiierung und Freigabe der Objekte
var
MyObject1: TMyObject1;
MyObject2: TMyObject2;
begin
MyObject1 := TMyObject1.Create;
MyObject2 := TMyObject2.Create;
try
{ various binding operations - see next topic / step }
finally
MyObject1.Free;
MyObject2.Free;
end;
end;
int _tmain(int argc, _TCHAR* argv[]) {
TMyObject1 *MyObject1 = new TMyObject1();
TMyObject2 *MyObject2 = new TMyObject2();
try
{
// various binding operations - see next topic / step
}
__finally {
delete MyObject1;
delete MyObject2;
delete MyResultObject;
}
return 0;
}
Ein drittes Objekt, MyResultObject, muss deklariert werden. Es enthält die gebundenen Daten der beiden zuvor definierten Objekte.
type
TMyResultObject = class(TObject)
private
FIntegerValue: Integer;
FStringValue: String;
public
property IntegerValue: Integer read FIntegerValue write FIntegerValue;
property StringValue: String read FStringValue write FStringValue;
end;
class TMyResultObject : public TObject {
private:
Integer FIntegerValue;
String FStringValue;
public:
__property Integer IntegerValue = {
read = FIntegerValue, write = FIntegerValue};
__property String StringValue = {read = FStringValue, write = FStringValue};
};
Aus Konsistenzgründen entspricht das dritte Objekt den beiden anderen.