![]() |
Eigene Komponente (Timer) - kein OnTimer?
Hallo,
ich habe wollte auch mal probieren, eine eigene Komponente zu erstellen. Also habe ich einen Timer entwickelt, der u.a. auch die Methoden Start und Stopp kennt. Aber er führt das onTimer-Ergeignis nicht aus. Hier der Code:
Delphi-Quellcode:
Woran könnte das liegen?
unit AdvTimer;
interface uses Classes, ExtCtrls; type TAdvTimer = class(TTimer) private { Interne Sachen } procedure SetIVSekunden(bValue : Cardinal); function GetIVSekunden : Cardinal; procedure SetIVMinuten(bValue : Cardinal); function GetIVMinuten : Cardinal; procedure SetIVStunden(bValue : Cardinal); function GetIVStunden : Cardinal; protected { Methoden & Props } public { Laufzeit } procedure Start; procedure Stopp; published { Desing und Laufzeit } property IVSekunden : Cardinal read GetIVSekunden write SetIVSekunden; property IVMinuten : Cardinal read GetIVMinuten write SetIVMinuten; property IVStunden : Cardinal read GetIVStunden write SetIVStunden; end; procedure Register; implementation procedure Register; begin RegisterComponents('Zusätzlich', [TAdvTimer]); end; procedure TAdvTimer.Start; begin Enabled := true; end; procedure TAdvTimer.Stopp; begin Enabled := false; end; procedure TAdvTimer.SetIVSekunden(bValue : Cardinal); begin Interval := bValue * 1000; end; function TAdvTimer.GetIVSekunden : Cardinal; begin If (Interval mod 1000 <> 0) then result := 0 else result := Interval DIV 1000; end; procedure TAdvTimer.SetIVMinuten(bValue : Cardinal); begin Interval := bValue * 60000; end; function TAdvTimer.GetIVMinuten : Cardinal; begin If (Interval mod 60000 <> 0) then result := 0 else result := Interval DIV 60000; end; procedure TAdvTimer.SetIVStunden(bValue : Cardinal); begin Interval := bValue * 3600000; end; function TAdvTimer.GetIVStunden : Cardinal; begin If (Interval mod 3600000 <> 0) then result := 0 else result := Interval DIV 3600000; end; end. Danke, ManuMF |
Re: Eigene Komponente (Timer) - kein OnTimer?
Ist echt schon schlimm, daß sich um Komponentenentwicklung immer noch keiner kümmert. 8) Dabei ist das ziemlich einfach. Ich habe aber nur das nötigste gemacht und den Kram mit den Sekunden usw. außer Acht gelassen. Wahrscheinlich ist da ein Fehler drin. Ich habe also nur die beiden public-procedures.
Delphi-Quellcode:
Mit folgendem Programm geht das einwandfrei :
unit TestTimer;
interface uses Classes, ExtCtrls; type TAdvTimer = class(TTimer) private public { Laufzeit } procedure Start; procedure Stopp; published { Design und Laufzeit } end; procedure Register; implementation procedure Register; begin RegisterComponents('Zusätzlich', [TAdvTimer]); end; procedure TAdvTimer.Start; begin Enabled := true; end; procedure TAdvTimer.Stopp; begin Enabled := false; end; end.
Delphi-Quellcode:
Das Timer-Intervall steht auf 5000 und alle Sekunden wird ein neues i angezeigt. Solange bis der Button gedrückt wird. Dann kommt noch die eine showmessage und Schluß ist.
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, TestTimer; type TForm1 = class(TForm) AdvTimer1: TAdvTimer; Button1: TButton; procedure AdvTimer1Timer(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private-Deklarationen } i : integer; public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.AdvTimer1Timer(Sender: TObject); begin ShowMessage (IntToStr (i)); i := i + 1; end; procedure TForm1.FormCreate(Sender: TObject); begin i := 0; end; procedure TForm1.Button1Click(Sender: TObject); begin AdvTimer1.Stopp; showmessage ('Timer disabled !'); end; end. |
Re: Eigene Komponente (Timer) - kein OnTimer?
Hallo,
danke erst mal. Hmm, ich habe jetzt auch mal die Inervall-Sachen weggelassen, und dann funktioniert es... komisch... :gruebel: Ich versuche jetzt mal, das zu überarbeiten, und schreibe dann, ob es funktioniert hat. Gruß, ManuMF |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:25 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