![]() |
Re: Klasse soll Anwendung nur bei best. Änderung benachricht
Dafür sorgfältiger :)
|
Re: Klasse soll Anwendung nur bei best. Änderung benachricht
Denek ich bin jetzt schon näher dran allerdings bekomme ich momentan die Fehlermeldung "Liste der Parameter ist unterschiedlich". Was mich (unter sehr viel anderem) noch stutzig macht ist in der Klasse am Anfang
Delphi-Quellcode:
kommt da nicht noch was in die Klammer?
OnChange_Proc = procedure() of object;
Hab hier nochmal beides Formular:
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Menus; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; procedure FormCreate(Sender: TObject); procedure DoChange(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation uses TestClass; var myClass : TMyclass; //Programmstart procedure TForm1.FormCreate(Sender: TObject); begin myClass := TMyclass.Create; myClass.OnChange_Func := DoChange; end; procedure TForm1.DoChange; begin ShowMessage('Status geändert'); end; procedure TForm1.Button1Click(Sender: TObject); begin myClass.Timer.enabled := NOT myClass.Timer.enabled; end; procedure TForm1.Button2Click(Sender: TObject); begin myClass.Status := NOT myClass.Status end; end. Klasse:
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); procedure setStatus(value: Boolean); public constructor Create; destructor destroy; override; property OnChange_Func : TOnChange_Proc read FOnChange write FOnChange; property Status : Boolean read FStatus write setStatus; 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.setStatus(value: Boolean); begin FStatus := value; if Assigned(FOnChange) then FOnChange; end; procedure TMyClass.testTimer(Sender:TObject); begin GetAvailable; onchange; end; function TMyClass.GetAvailable: Boolean; begin if FStatus = true then result := true else result := false end; end. |
Re: Klasse soll Anwendung nur bei best. Änderung benachricht
Zitat:
Grund: Im Hauptform wurde Sender als Parameter übergeben, aber vom OnChange gar nicht angefordert. Mal in normalem deutsch ausgedrückt... |
Re: Klasse soll Anwendung nur bei best. Änderung benachricht
Hi spaxxn, also irgendwas ist scheinbar immer noch faul denn jetzt kann das Formular nicht mehr erstellt werden.
Zitat:
Hab im Hauptform
Delphi-Quellcode:
und in der Klasse
procedure TForm1.FormCreate(Sender: TObject);
begin myClass := TMyclass.Create; myClass.OnChange_Func := DoChange; end;
Delphi-Quellcode:
type
TOnChange_Proc = procedure of object; |
Re: Klasse soll Anwendung nur bei best. Änderung benachricht
Moment :)
Zitat:
Delphi-Quellcode:
dies bindet die Formular Resourcen ein. Warum das bei dir fehlt, kann ich dir nicht sagen.
{$R *.dfm}
Zitat:
|
Re: Klasse soll Anwendung nur bei best. Änderung benachricht
Zitat:
Ups wie ist das denn schon wieder passiert? :) Aber es nimmt kein Ende ... es ist zum Mäuse melken. Jetzt geht mein Timer auf einmal nicht mehr und ich finde einfach nicht heraus woran es liegt. Ich glaube ich muss eine Pause machen und später nocheinmal schaun denn mir qualmt der Schädel. Ich melde mich aber auf jeden Fall nochmal um zu berichten ob das TestEvent auch wirklich läuft. |
Re: Klasse soll Anwendung nur bei best. Änderung benachricht
Was macht denn der Timer bzw. was macht er nicht? Woran machst du fest, das er nicht mehr geht?
Quellcodetechnisch würde ich sagen, dass der rennen müsste. |
Re: Klasse soll Anwendung nur bei best. Änderung benachricht
Also ich hab ja den Button 1 mit dem ich ihn starte. Mit FTimer.OnTimer := testTimer; rufe ich ja dann zyklisch testTimer auf und da hab ich mal ne showmessage zum testen eingebaut. Das ging heute auch schon mal :) Nur jetzt kommt da nix mehr geschweige denn die gewünschte Eventmeldung. Hm, aber wenn du schon nix siehst... kompiliert hast du es aber noch nicht oder?
|
Re: Klasse soll Anwendung nur bei best. Änderung benachricht
Ich schnapp mir mal kurz den Quelltext.
Edit: Bei mir geht es! Da die dfm nicht eingebunden war, guck mal bitte nach, ob OnClick bei den beiden Buttons überhaupt noch gebunden ist. |
Re: Klasse soll Anwendung nur bei best. Änderung benachricht
Juhu! Jetzt geht es bei mir auch. Endlich gehts weiter! :) Mal schaun ob ich den Rest alleine hinbekomme.
Jedenfalls hast du mir den Tag gerettet, 1001 Dank! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:06 Uhr. |
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