AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Eigene Komponente (Timer) - kein OnTimer?

Ein Thema von ManuMF · begonnen am 1. Jan 2006 · letzter Beitrag vom 2. Jan 2006
Antwort Antwort
Benutzerbild von ManuMF
ManuMF

Registriert seit: 11. Jul 2005
1.016 Beiträge
 
Delphi 6 Personal
 
#1

Eigene Komponente (Timer) - kein OnTimer?

  Alt 1. Jan 2006, 17:45
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:
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.
Woran könnte das liegen?

Danke,
ManuMF
Gruß,
ManuMF

Endlich hab ich was Positives an Vista entdeckt: Das mitgelieferte Mahjongg
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#2

Re: Eigene Komponente (Timer) - kein OnTimer?

  Alt 1. Jan 2006, 22:35
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:
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.
Mit folgendem Programm geht das einwandfrei :

Delphi-Quellcode:
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.
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.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von ManuMF
ManuMF

Registriert seit: 11. Jul 2005
1.016 Beiträge
 
Delphi 6 Personal
 
#3

Re: Eigene Komponente (Timer) - kein OnTimer?

  Alt 2. Jan 2006, 12:23
Hallo,
danke erst mal.

Hmm, ich habe jetzt auch mal die Inervall-Sachen weggelassen, und dann funktioniert es... komisch...

Ich versuche jetzt mal, das zu überarbeiten, und schreibe dann, ob es funktioniert hat.

Gruß,
ManuMF
Gruß,
ManuMF

Endlich hab ich was Positives an Vista entdeckt: Das mitgelieferte Mahjongg
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:53 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz