Hallöchen,
abgesehen davon, dass sich mir der Sinn für dein Konstrukt nicht erschliesst und ich glaube, das du dich da in etwas verrannt hast, was du eventuell noch überdenken müsstest... um es ans Laufen zu bekommen, sind folgende Änderungen nötig:
Da der Timer in der
unit FormRem nicht benutzt wird, fehlt er zur Laufzeit und muss daher mit RegisterClass registriert werden.
Delphi-Quellcode:
unit FormRem;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls;
type
TfrmRem =
class(TForm)
// ...
private
fTiPostpone: TTimer;
public
end;
implementation
{$R *.dfm}
{ TTfrmRem }
{...}
initialization
RegisterClass(TTimer);
end.
Der Kram mit dem MethodPointer etc... unnötig kompliziert, kann vereinfacht werden.
Delphi-Quellcode:
unit DataModuleMain;
interface
uses
SysUtils, Classes, ExtCtrls, FormRem;
type
TdmMain =
class(TDataModule)
procedure DataModuleCreate(Sender: TObject);
private
{ Private-Deklarationen }
public
frmRem: TfrmRem;
procedure OnTimerTimeOut(Sender: TObject);
end;
var
dmMain: TdmMain;
gTiPostpone: TTimer;
implementation
{$R *.dfm}
//type
// TMethodePionter = packed record
// pMethod: Pointer;
// pObject: TObject;
// end;
procedure TdmMain.DataModuleCreate(Sender: TObject);
//var
// mp: TMethodePionter;
begin
gTiPostpone := TTimer.Create(self);
gTiPostpone.Enabled := false;
// mp.pMethod := @OnTimerTimeOut;
// mp.pObject := nil;
gTiPostpone.OnTimer := OnTimerTimeOut;
// TNotifyEvent(mp);
frmRem := TfrmRem.Create(self);
frmRem.PostPoneTimer := gTiPostpone;
frmRem.Show();
end;
procedure TdmMain.OnTimerTimeOut(Sender: TObject);
begin
gTiPostpone.Enabled := false;
if not Assigned(frmRem)
then
frmRem := TfrmRem.Create(self);
// <--- TfrmRem.Create !!!
frmRem.PostPoneTimer := gTiPostpone;
frmRem.Show();
end;
end.
So müsste es jetzt funktionieren... Viel Spaß damit!
MfG
Wormid
Debuggers don't remove Bugs, they only show them in Slow-Motion.