Definieren und Implementieren der bindbaren Objekte

Aus Appmethod Topics
Wechseln zu: Navigation, Suche

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.


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

Object Pascal:
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;
C++:
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

Object Pascal:
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;
C++:
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

Object Pascal:
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;
C++:
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.

Object Pascal:
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;
C++:
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.

Weiter

Zurück