Einzelnen Beitrag anzeigen

Sunshine21

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

Re: Klasse soll Anwendung nur bei best. Änderung benachricht

  Alt 26. Jun 2008, 12:37
Sorry aber ich komme da nicht mit. Ich weiß jetzt ungefähr was ich in meine Klasse alles schreiben soll allerdings wars das auch schon. Meine Hauptverständnisschwierikeiten liegen noch immer in der Verbindung der Klasse mit der Anwendung.

Sprich: "Wie kommuniziert die Klasse mit der Anwendung?"

Vielleicht kannst du deine Codezeilen kurz kommentieren. Habe mal versucht die BeispielKlasse von mir so weit es geht abzuändern jedoch fehlt da noch Grundlegendes. Es soll wenn sich FStatus ändert in der Anwendung gemeldet werden.

Testen würde ich das Ganze erstmal über ein Formular indem ich über einen Button FStatus ändere und auf eine Meldung warte (wo wir wieder bei meinem Verständnisproblem wären). Davon schein ich allerdings noch meilenweit entfernt zu sein

Delphi-Quellcode:
 type
    TOnChange_Proc = procedure() of object;
Fehlt hier nicht noch was?

Delphi-Quellcode:
unit Testclass;

interface

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

type
    TOnChange_Proc = procedure() of object;
    TMyClass = class(TObject)

    private
    FTimer : TTimer;
    FStatus : Boolean;
    FOnChange : TOnChange_Proc;

    procedure OnChange;
    function getAvailable: Boolean;
    procedure testTimer(Sender : TObject);

    public
    constructor Create;
    destructor destroy; override;
    property OnChange_Func : TOnChange_Proc read FOnChange write FOnChange;
    property Status : Boolean read FStatus write FStatus;
    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;
    FOnChange := nil;
end;

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

procedure TMyClass.OnChange;
begin
  if Assigned(FOnChange) then
    FOnChange;
end;

procedure TMyClass.testTimer(Sender:TObject);
begin
    GetAvailable;
    ShowMessage('Timer läuft auch')
end;

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

end.
  Mit Zitat antworten Zitat