Einzelnen Beitrag anzeigen

Sunshine21

Registriert seit: 26. Jun 2008
27 Beiträge
 
#1

Klasse soll Anwendung nur bei best. Änderung benachrichtigen

  Alt 26. Jun 2008, 10:35
Hallo Deutschland (3:2) )

Ich glaube ich brauch professionelle Hilfe.

Ich habe hier ein Klasse die ich in einer extra Unit gespeichert habe. Sämtliche Funktionen und Prozeduren (auch ein Timer ist dabei) funktionieren soweit ganz gut. Ich rufe sie in meiner Anwendung auf und kann dann auf freigegebene Variablen je nach Berechtigung zugreifen.

Jetzt würde ich aber aus dieser Klasse gerne eine Art Komponente entwickeln, welche permanent alles im Hintergrund abwickelt und nur bei bestimmten Änderungen von Statusvariablen eine Nachricht an meine Anwendung sendet. Momentan wird die Klasse nur per Timer in der Anwendung aufgerufen.

Was mir absolut unklar ist, ist wie ich die Verbindung zwischen Klasse und Hauptanwendung hinbekommen soll, damit die Klasse selbst von alleine den Zustand überprüft und die Hauptanwendung nur dann einen Bescheid bekommt, wenn sich in der Klasse auch wirklich etwas geändert hat.

Ich habe der besseren Übersicht mal eine einfache Klasse erstellt, in der ein Timer jeweils den Rückgabewert einer Funktion für zwei Typen prüft. Jetzt sollte eine Nachricht an die Anwendung geschickt werden, sobald sich einer der beiden Status ändert.

Ich hoffe, dass ich mich einigermaßen verständlich ausgedrückt habe und natürlich auch, dass ihr mir helfen könnt


Delphi-Quellcode:
unit Unit2;

interface

uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Forms, Dialogs,
    StdCtrls, ExtCtrls;

type
    TType = (type1, type2);
    TMyClass = class(TObject)

    private
    FTimer : TTimer;
    FStatus : Boolean;

    function getAvailable(t: TType): Boolean;
    procedure testTimer(Sender : TObject);

    public
    constructor Create;
    destructor destroy; override;

    property Available [t : TType] : Boolean read GetAvailable;
    property Timer : TTimer read FTimer write FTimer;
end;

implementation

constructor TMyClass.Create;
begin
inherited;
    FTimer := TTimer.Create(nil);
    FTimer.enabled := false;
    FTimer.Interval := 1000;
    FTimer.OnTimer := testTimer;
end;

destructor TMyClass.Destroy;
begin
    FTimer.Free;
    inherited;
end;

function TMyClass.GetAvailable(t: TType): Boolean;
begin
  if FStatus = true then
  result := true
  else
  result := false
end;

procedure TMyClass.testTimer(Sender:TObject);
begin
    GetAvailable(type1);
    GetAvailable(type2);
end;

end.
Einen lieben Gruß

Sunshine
  Mit Zitat antworten Zitat