Announcement

Collapse
No announcement yet.

Component as interface?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Component as interface?

    Hallo

    ich hab folgendes Problem:
    ich habe mehrere abgeleitete Komponenten die ein interface haben:
    IMeinInterface = interface
    function GetNameInterface: string;
    end;
    TMyCheckBox = class(TCheckBox, IMeinInterface)
    ...
    Eine andere Komponente soll in der Applikation alle komponenten mit diesem interface finden:

    Rekursiv für alle Komponenten (mit ComponentCount, Components[i])
    if a is IMeinInterface
    then if (a as IMeinInterface).GetNameInterface:=SuchName
    then ...
    (a: TComponent)

    Das geht aber nicht. Geht das irgendwie andes?

  • #2
    Hallo,

    habe eine Möglichkeit gefunden:
    if a.GetInterfaceEntry(IMeinInterface)<>nil then ...

    zur Info: Ist für einen Manager der mit Observer Patterns-Technik funktioniert und das Verhalten von Componenten und Aktionen per Script steuern kann.

    Comment


    • #3
      Morgen Matthias,

      falls es noch interessant für Dich ist:

      var
      MyInt: IMeinInterface;
      a: TComponent;
      begin
      // rekursion über components ==> a := Components[i]
      if Supports(a, IMeinInterface, MyInt) then
      begin
      if MyInt.GetNameInterface = SuchName then
      // do anything
      end;
      end;

      Code nicht getestet!

      Comment

      Working...
      X