Thema: Delphi Welcher Timer

Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#16

Re: Welcher Timer

  Alt 6. Apr 2004, 15:35
Es geht in diesem Fall auch mit nur einer Variable, da es sich hier nur um einen Zeiger auf den mit TTimer.Create(Form1) erstellten Timer.

OK, wenn du später drauf zugreifen willst, dann sollte natürlich das Array für die Timer Global definiert sein, oder du greifst nicht über die Zeiger in einem Timer-Array zu, sondern läßt dir den entsprechenden Timer suchen.

Das mit der INI: Wenn du es so gelernt hast, dann mach es halt so - Delphi ist ja flexiebel und es gibt ja mehrere Möglichkeiten, die nicht unbedingt Falsch sind ^^


Über ein Timer-Array:
Delphi-Quellcode:
Type TForm1 = Class(TForm)
    ...
  Private
    Procedure TimerEvent(Sender: TObject);
  End;

Var Timer: Array of TTimer;


Procedure TForm1.CreateTimers(Sender: TObject);
  Var frconfig: TIniFile;
    i, j: Integer;

  Begin
    frconfig := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'frconfig.ini');
      i := frconfig.ReadInteger('Counter', 'Foren', 0);
      SetLength(Timer, i);
      For j := 1 to i do Begin
        Timer[i - 1] := TTimer.Create(Form1);
        Timer[i - 1].Interval := frconfig.ReadInteger('Foren', 'Timer' + IntToStr(j), 0);
        Timer[i - 1].Tag := j;
        Timer[i - 1].Enabled := True;
        Timer[i - 1].OnTimer := TimerEvent;
      End;
    frconfig.Free;
  End;

Procedure TForm1.TimerEvent(Sender: TObject);
  Begin
    ShowMessage('Ich bin Timer: ' + IntToStr(TTimer(Sender).Tag));
  End;

Procedure ...
  Begin
    Timer[0].Enabled := False; // Timer1
    Timer[1].Enabled := False; // Timer2
  End;
Ohne Timer-Array:
Delphi-Quellcode:
Type TForm1 = Class(TForm)
    ...
  Private
    Procedure TimerEvent(Sender: TObject);
  End;


Procedure TForm1.CreateTimers(Sender: TObject);
  Var frconfig: TIniFile;
    Timer: TTimer;
    i, j: Integer;

  Begin
    frconfig := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'frconfig.ini');
      i := frconfig.ReadInteger('Counter', 'Foren', 0);
      SetLength(Timer, i);
      For j := 1 to i do Begin
        Timer := TTimer.Create(Form1);
        Timer.Name := 'Timer' + IntToStr(j);
        Timer.Interval := frconfig.ReadInteger('Foren', 'Timer' + IntToStr(j), 0);
        Timer.Tag := j;
        Timer.Enabled := True;
        Timer.OnTimer := TimerEvent;
      End;
    frconfig.Free;
  End;

Procedure TForm1.TimerEvent(Sender: TObject);
  Begin
    ShowMessage('Ich bin Timer: ' + IntToStr(TTimer(Sender).Tag));
  End;

Procedure ...
  Var Timer: TTimer;

  Begin
    Timer := TTimer(Form1.FindComponent('Timer' + IntToStr(1)));
    Timer.Enabled := False; // Timer1
    {oder}
    TTimer(Form1.FindComponent('Timer' + IntToStr(2))).Enabled := False; // Timer2
  End;
Ohne Timer-Variable:
Delphi-Quellcode:
Type TForm1 = Class(TForm)
    ...
  Private
    Procedure TimerEvent(Sender: TObject);
  End;


Procedure TForm1.CreateTimers(Sender: TObject);
  Var frconfig: TIniFile;
    i, j: Integer;

  Begin
    frconfig := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'frconfig.ini');
      i := frconfig.ReadInteger('Counter', 'Foren', 0);
      SetLength(Timer, i);
      For j := 1 to i do
        With TTimer.Create(Form1) do Begin
          Name := 'Timer' + IntToStr(j);
          Interval := frconfig.ReadInteger('Foren', 'Timer' + IntToStr(j), 0);
          Tag := j;
          Enabled := True;
          OnTimer := TimerEvent;
        End;
    frconfig.Free;
  End;

Procedure TForm1.TimerEvent(Sender: TObject);
  Begin
    ShowMessage('Ich bin Timer: ' + IntToStr(TTimer(Sender).Tag));
  End;

Procedure ...
  Var Timer: TTimer;

  Begin
    Timer := TTimer(Form1.FindComponent('Timer' + IntToStr(1)));
    Timer.Enabled := False; // Timer1
    {oder}
    TTimer(Form1.FindComponent('Timer' + IntToStr(2))).Enabled := False; // Timer2
  End;
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat