Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi DelphiX: Timer löst kein ereignis aus, warum ? (https://www.delphipraxis.net/20905-delphix-timer-loest-kein-ereignis-aus-warum.html)

mimi 25. Apr 2004 06:35


DelphiX: Timer löst kein ereignis aus, warum ?
 
Hallo,
ich habe ein problem, mit dem erstellen von componenten in einer eigenen classe:

Sourcecode:
Delphi-Quellcode:
procedure TGame.Create_Component(F1:TForm);
begin
  Draw:=TDXDraw.Create(F1);
  Draw.AutoInitialize:=True;
  Draw.Height:=480; Draw.Width:=640; Draw.Left:=0; Draw.Top:=0;
  Draw.Parent:=F1;

  ListImage:=TDXImageList.Create(ListImage);
  ListImage.DXDraw:=Draw;  

// Das ist das Problem, das ereignis wird leider nicht ausgeführt, warum weiß ich nicht
  Zeitgeber:=TDXTimer.Create(Zeitgeber);
  Zeitgeber.OnTimer:=DXTimerTimer; Zeitgeber.Interval:=0;
end;

constructor TGame.Create(F:TForm);
begin
  Create_Component(f); // erstellt die standart classen
end;

warum geht dieser code nicht....

Sourcecode:
Delphi-Quellcode:
 


  Autor: Michael Springwald
  Erstellt am: 19.04.2004 
  Upgedatet am: 19.04.2004 


unit gameunit;

interface
  uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
    DXDraws, DXClass, StdCtrls, AppEvnts, jpeg, ExtCtrls;

type
  TGame = class(TComponent)
    Zeitgeber: TDXTimer;    
    ListImage:TDXImageList;
    Draw:TDXDraw;
         
    constructor Create(F:TForm);
    procedure Create_Component(F1:TForm);
    procedure DXTimerTimer(Sender: TObject; LagCount: Integer);  
  public
     
//    procedure DrawGame;

  end;

implementation

procedure TGame.Create_Component(F1:TForm);
begin
  Draw:=TDXDraw.Create(F1);
  Draw.AutoInitialize:=True;
  Draw.Height:=480; Draw.Width:=640; Draw.Left:=0; Draw.Top:=0;
  Draw.Parent:=F1; //Draw.C

  ListImage:=TDXImageList.Create(ListImage);
  ListImage.DXDraw:=Draw;  

  Zeitgeber:=TDXTimer.Create(Zeitgeber);
  Zeitgeber.OnTimer:=DXTimerTimer; Zeitgeber.Interval:=0;
 // Zeitgeber.TimerRun;
end;

constructor TGame.Create(F:TForm);
begin
  Create_Component(f); // erstellt die standart classen
end;

procedure TGame.DXTimerTimer(Sender: TObject; LagCount: Integer);
begin

// Showmessage('TEST');
//  if Draw.CanDraw = True then begin
    Draw.Surface.Fill(clYellow);
    Draw.Flip;
//  end;
end;


end.

///////////////////////////////die form unit////////////////////////////////////////// 

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, DXDraws, DXClass,gameunit;

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    procedure FormActivate(Sender: TObject);
  private
    { Private-Deklarationen } 
  public
    { Public-Deklarationen } 
  end;

var
  Form1: TForm1;
  Game:TGame;
implementation


{$R *.dfm} 

procedure TForm1.FormActivate(Sender: TObject);
begin
  Game:=TGame.Create(form1);
end;

end.
ich habe schon im delphiforum gepostet vor einigen tagen:
http://www.delphi-forum.de/viewtopic.php?t=24680

aber noch kein ergbnis bekommen damit es läuft....

[edit=Sharky]Über 200 Beiträge und trotzdem keine Delphi-Tags! :stupid: Mfg, Sharky[/edit]

Dagon 25. Apr 2004 07:46

Re: DelphiX: Timer löst kein ereignis aus, warum ?
 
Hallo

Es geht nicht, weil du dem DXTimer zu erst noch das DXDraw zuordnen musst (über Zeitgeber.Screen := Draw (oder so ähnlich)).

mimi 25. Apr 2004 08:06

Re: DelphiX: Timer löst kein ereignis aus, warum ?
 
das währe mir neu, wenn man dieß müsste, unter VCL habe ich das auch nicht gemacht, also als ich einfach die drei komponenten einfach ins form geklickte hatte hatte alles funktioniert !!!
und sobalt ich sie zurlaufzeit erstelle geht garnichts mehr...

Dagon 25. Apr 2004 08:40

Re: DelphiX: Timer löst kein ereignis aus, warum ?
 
Zitat:

Zitat von mimi
das währe mir neu, wenn man dieß müsste, unter VCL habe ich das auch nicht gemacht, also als ich einfach die drei komponenten einfach ins form geklickte hatte hatte alles funktioniert !!!
und sobalt ich sie zurlaufzeit erstelle geht garnichts mehr...

Sorry, da habe ich mich wirklich geirrt (ich habe die Komponenten bei mir nicht mehr drauf und darum war ich mir da nich so ganz sicher :oops: ).
Versuchs mal so: ordne den Komponenten als Parent das Formular zu.

mimi 25. Apr 2004 08:55

Re: DelphiX: Timer löst kein ereignis aus, warum ?
 
das habe ich bereits gemacht !!!

Dagon 25. Apr 2004 09:03

Re: DelphiX: Timer löst kein ereignis aus, warum ?
 
Stimmt, das habe ich übersehen.
Ist der Timer per Dafault enabled oder disabled?

Noch etwas:
Delphi-Quellcode:
ListImage:=TDXImageList.Create(ListImage);
Da sollte stehen:
Delphi-Quellcode:
ListImage:=TDXImageList.Create(F1);

mimi 25. Apr 2004 10:40

Re: DelphiX: Timer löst kein ereignis aus, warum ?
 
habe den fehler gefunden, ist scheint daran zu liegen, das ich es gleich beim starten installisieren wollte, aber die anwendung muss schon gestartet sein, bevor der timer funktioniert.... aber jetzt habe ich einen neuen fehler: wenn ich einen blauen hintergrund haben möchte bekomme ich ein clblack hintergrund, und wenn ich clred haben möcte bekomme ich eine clBlue hintergrund...

Delphi-Quellcode:
 
  DXDraw1.Surface.Fill(clRed);
  DXDraw1.Flip;


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:38 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