unit unit1; {$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls, raetselunit, StdCtrls, Messages, LCLType; type { tForm1 } tForm1 = class(tForm) procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure FormShow(Sender: TObject); private { private declarations } procedure WMGetDlgCode(var msg: tMessage); message WM_GETDLGCODE; procedure onSetCaption(c: string); public { public declarations } raetsel: tRaetsel; end; var Form1: TForm1; implementation {$R *.lfm} uses unit2; // tForm1 ********************************************************************** procedure tForm1.WMGetDlgCode(var msg: tMessage);// message WM_GETDLGCODE; begin inherited; msg.result := msg.result or DLGC_WANTARROWS; end; procedure tForm1.formCreate(sender: tObject); begin application.createForm(tForm2, form2); case form2.showmodal of mrBuchstabenraetsel: raetsel:=tBuchstabenRaetsel.create(form1); mrHochhausraetsel: raetsel:=tHochhausRaetsel.create(form1); else begin raetsel:=nil; application.terminate; end; end; raetsel.onSetCaption:=@onSetCaption; end; procedure tForm1.onSetCaption(c: string); begin form1.caption:=c; end; procedure tForm1.FormDestroy(Sender: TObject); begin raetsel.free; end; procedure tForm1.FormShow(Sender: TObject); begin if assigned(raetsel) then raetsel.zeichnen; end; end.