![]() |
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:
ich habe schon im delphiforum gepostet vor einigen tagen:{ 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. ![]() aber noch kein ergbnis bekommen damit es läuft.... [edit=Sharky]Über 200 Beiträge und trotzdem keine Delphi-Tags! :stupid: Mfg, Sharky[/edit] |
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)). |
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... |
Re: DelphiX: Timer löst kein ereignis aus, warum ?
Zitat:
Versuchs mal so: ordne den Komponenten als Parent das Formular zu. |
Re: DelphiX: Timer löst kein ereignis aus, warum ?
das habe ich bereits gemacht !!!
|
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:
Da sollte stehen:
ListImage:=TDXImageList.Create(ListImage);
Delphi-Quellcode:
ListImage:=TDXImageList.Create(F1);
|
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 20:47 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