Delphi-PRAXiS
Seite 2 von 6     12 34     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Klasse soll Anwendung nur bei best. Änderung benachrichtigen (https://www.delphipraxis.net/116277-klasse-soll-anwendung-nur-bei-best-aenderung-benachrichtigen.html)

DeddyH 26. Jun 2008 12:47

Re: Klasse soll Anwendung nur bei best. Änderung benachricht
 
Das OnChange-Ereignis soll ausgelöst werden, wenn Status geändert wird?

spaxxn 26. Jun 2008 12:49

Re: Klasse soll Anwendung nur bei best. Änderung benachricht
 
Hihi, du löst den Event auch gar nicht aus :P


Hast du dem OnChange eine Procedure zugewiesen?

Zitat:

Zitat von Sunshine21
Delphi-Quellcode:
 procedure TMyClass.OnChange;
begin
  if Assigned(FOnChange) then
    FOnChange;
end;

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

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

end.


Sunshine21 26. Jun 2008 12:51

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

Zitat von spaxxn
Hihi, du löst den Event auch gar nicht aus :P

Eigentlich doch ich wollte das machen indem ich über einen Button FStatus ändere? Aber das kann ich ja noch nicht machen da die Klasse so wie ich sie gepostet habe wohl noch nicht läuft wie sie sollte.... denke ich.

spaxxn 26. Jun 2008 12:53

Re: Klasse soll Anwendung nur bei best. Änderung benachricht
 
Ja ne, du musst OnChange in der Funktion/Prozedur von der du die Mitteilung über eine Änderung erhalten möchtest auch aufrufen.

DeddyH 26. Jun 2008 12:55

Re: Klasse soll Anwendung nur bei best. Änderung benachricht
 
Du brauchst eine Setter-Methode.
Delphi-Quellcode:
type Tmyclass = class
  ...
private
  procedure SetStatus(value: Boolean);
  ...
public
  property Status : Boolean read FStatus write SetStatus;
  ...
end;

procedure Tmyclass.SetStatus(value: Boolean);
begin
  FStatus := value;
  if Assigned(FOnChange) then
    FOnChange;
end;

spaxxn 26. Jun 2008 13:00

Re: Klasse soll Anwendung nur bei best. Änderung benachricht
 
Und denke dran, dass in deinem Hauptformular(z.B.) auch eine Methode deklariert und dem OnChange zugewiesen wird.

DeddyH 26. Jun 2008 13:01

Re: Klasse soll Anwendung nur bei best. Änderung benachricht
 
Jepp, sonst kommt wieder nichts an :lol:

Sunshine21 26. Jun 2008 13:08

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

Zitat von spaxxn
Und denke dran, dass in deinem Hauptformular(z.B.) auch eine Methode deklariert und dem OnChange zugewiesen wird.

Bingo, das wäre dann wohl die "Schnittstelle" zwischen den beiden die ich suche. Bloß wie mache ich das denn? Eine einfache Instanz mit der die Prozedur Onchange aufgerufen wird reicht ja nicht, oder?

Wenn ich das hinbekommen habe könnte ich nämlich alles mit austesten :)

spaxxn 26. Jun 2008 13:13

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

Delphi-Quellcode:
type
  TMeinFormular= Class(TForm)
  private
    procedure EineFunktion(Sender:TObject);
  end;
im Create dann noch
Delphi-Quellcode:
  MyClassInstance.OnChange_Func := EineFunktion;

DeddyH 26. Jun 2008 13:13

Re: Klasse soll Anwendung nur bei best. Änderung benachricht
 
Delphi-Quellcode:
type TMyForm = class(TForm)
  ...
private
  procedure DoChange; //eine Methode mit identischer Signatur wie in der Klasse
...
end;

...

procedure TMyForm.DoChange;
begin
  ShowMessage('Status geändert');
end;

procedure TMyForm.Wuppdi;
begin
  MyClass := TMyClass.Create;
  ...
  MyClass.OnChange_Func := DoChange; //Zuweisung der Routine
  ...
end;
[edit] Einen Tick zu spät [/edit]


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:00 Uhr.
Seite 2 von 6     12 34     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz