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