// Getestet mit D4 und D7 unter XP

// Wenn man in einem Formular in "OnShow" Dinge wie z.B. "Draw"
// ausführen möchte, hat das keinen Erfolg, da das Fenster noch
// nicht zu sehen ist. Deshalb hier 3 Varianten, die in der Regel
// das Gewünschte erreichen.
 

// Das Folgende führt nicht zum Erfolg:

var 
  bm: TBitmap; 
 
procedure TForm1.FormCreate(Sender: TObject); 
begin 
  bm := TBitmap.Create; 
  bm.LoadFromFile('C:\19.2.12.bmp'); 
end; 
 
procedure TForm1.FormDestroy(Sender: TObject); 
begin 
  bm.Free; 
end; 
 
procedure TForm1.FormShow(Sender: TObject); 
begin 
  Canvas.Draw(10, 10, bm); 
end; 
 
//--------------------------------------------------------- 

// Hier 3 Varianten, die zum Erfolg führen:

// Variante 1
 
const
  ShowWM = WM_USER + 111;
 
type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure FormShow(Sender: TObject);
  private
    procedure
      MyMSG(var Msg: TMessage); message ShowWM;
  public
    { Public-Deklarationen }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
var
  bm: TBitmap;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  bm := TBitmap.Create;
  bm.LoadFromFile('C:\19.2.12.bmp');
end;
 
procedure TForm1.FormDestroy(Sender: TObject);
begin
  bm.Free;
end;
 
procedure TForm1.FormShow(Sender: TObject);
begin
  PostMessage(Self.Handle, ShowWM, 0, 0);
end;
 
procedure TForm1.MyMSG(var Msg: TMessage);
begin
  Canvas.Draw(10, 10, bm);
end;
 
//----------------------------------------------------

//
Variante 2
 
var
  bm: TBitmap;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  bm := TBitmap.Create;
  bm.LoadFromFile('C:\19.2.12.bmp');
end;
 
procedure TForm1.FormDestroy(Sender: TObject);
begin
  bm.Free;
end;
 
procedure TForm1.FormShow(Sender: TObject);
begin
  SetWindowPos(handle, HWND_TOP, 0, 0, 0, 0,
    SWP_NOMOVE or SWP_NOSIZE or SWP_SHOWWINDOW);
  Canvas.Draw(10, 10, bm);
end;
 
//----------------------------------------------------

// Variante
3
 
var
  bm: TBitmap;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  bm := TBitmap.Create;
  bm.LoadFromFile('C:\19.2.12.bmp');
end;
 
procedure TForm1.FormDestroy(Sender: TObject);
begin
  bm.Free;
end;
 
procedure TForm1.FormShow(Sender: TObject);
begin
  showwindow(handle, SW_SHOW);
  Canvas.Draw(10, 10, bm);
end;
 



 

Zugriffe seit 6.9.2001 auf Delphi-Ecke