Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Bei jedem Klick einen Text für bestimmte Zeit auf die Form setzten (https://www.delphipraxis.net/177625-bei-jedem-klick-einen-text-fuer-bestimmte-zeit-auf-die-form-setzten.html)

Der schöne Günther 17. Nov 2013 21:05

AW: Bei jedem Klick einen Text für bestimmte Zeit auf die Form setzten
 
Ignoriert mich

Sir Rufo 17. Nov 2013 21:55

AW: Bei jedem Klick einen Text für bestimmte Zeit auf die Form setzten
 
Das ist ein Hinweis darauf, dass LaserList auf keine gültige Instanz verweist.

Astobix 17. Nov 2013 22:00

AW: Bei jedem Klick einen Text für bestimmte Zeit auf die Form setzten
 
Inwiefern kann die denn ungültig sein? Bzw, was muss ich machen, damit sie gültig wird? Ich steh grad total auf dem Schlauch :oops:

Hier nochmal der komplette Code, vielleicht habe ich ja irgendwas total blöder vergessen :oops:

Code:
unit USpace;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Stdctrls, ActnList, ExtCtrls, contnrs, jpeg;

type
  TForm1 = class(TForm)
    PlayerIMG: TImage;
    LaserTimer: TTimer;
    Label1: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
    procedure ErzeugeLaser(const Picture: String);
    procedure LaserTimerTimer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  LaserList: TObjectList;

implementation

{$R *.dfm}

procedure TForm1.ErzeugeLaser(const Picture: String);
var
 ILaser:TImage;
begin
 ILaser := TImage.Create( nil );
 ILaser.Picture.LoadFromFile(Picture);
 ILaser.Width:=8;
 ILaser.Height:=16;
 ILaser.Left:=PlayerIMG.Left+12;
 ILaser.Top:=PlayerIMG.Top-32;
 ILaser.Parent:=Self;
 ILaser.Tag:=10;


 LaserList.Add(ILaser);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 PlayerIMG.Picture.LoadFromFile('.\gfx\Schiff.jpg');
end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState
  );
begin
 case Key of
  37: PlayerIMG.Left:=PlayerIMG.Left-10;
  39: PlayerIMG.Left:=PlayerIMG.Left+10;
  $20: ErzeugeLaser('.\gfx\Laser.jpg');
 end;
end;

procedure TForm1.LaserTimerTimer(Sender: TObject);
var
 i: Integer;
 ILaser: TImage;
begin
 i := 0;
 while i < LaserList.Count do
 begin
  ILaser := LaserList.Items[i] as TImage;
  if ILaser.Top = 0 then
   begin
    LaserList.Delete(i);
   end
  else
   begin
    ILaser.Top:=ILaser.Top - 5;
    Inc(i);
   end;
 end;
end;





end.

Bummi 17. Nov 2013 22:45

AW: Bei jedem Klick einen Text für bestimmte Zeit auf die Form setzten
 
Die Liste wird nirgendwo erzeugt/freigegeben. z.B.:

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  LaserList := TObjectList.Create;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  LaserList.Free;
end;

Astobix 18. Nov 2013 13:19

AW: Bei jedem Klick einen Text für bestimmte Zeit auf die Form setzten
 
Vielen Dank! Wusst ich doch, dass es so ein simpler Fehler war :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:31 Uhr.
Seite 2 von 2     12   

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