AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Prism Panel Spiel => Panel automatisch erzeugen?
Thema durchsuchen
Ansicht
Themen-Optionen

Panel Spiel => Panel automatisch erzeugen?

Ein Thema von Juggy D · begonnen am 18. Okt 2007 · letzter Beitrag vom 27. Okt 2007
Antwort Antwort
Seite 2 von 4     12 34      
Benutzerbild von nachti1505
nachti1505

Registriert seit: 7. Apr 2007
188 Beiträge
 
Delphi 7 Enterprise
 
#11

Re: Panel Spiel => Panel automatisch erzeugen?

  Alt 19. Okt 2007, 01:04
Hinter der IF-Abfrage begin und end setzen...

Sonst wird der zweite TypCast nach TPanel für jede Komponente ausgeführt... müsste ne AV geben....

Delphi-Quellcode:
for i:=0 to ComponentCount-1 do begin
  if Components[i] is TPanel then begin
     TPanel(Components[i]).Left:= Random(ShSpiel.Width)-25;
     TPanel(Components[i]).Top:= Random(ShSpiel.Height)-25;
  end;
Für den Fall, dass deine lustigen Panels immer noch über den linken und oberen Rand gucken aus

TPanel(Components[i]).Left:= Random(ShSpiel.Width)-25; wird

TPanel(Components[i]).Left:= Random(ShSpiel.Width - 25); Müsste eigentlich nun gehen....
  Mit Zitat antworten Zitat
Juggy D

Registriert seit: 18. Okt 2007
29 Beiträge
 
#12

Re: Panel Spiel => Panel automatisch erzeugen?

  Alt 19. Okt 2007, 11:39
Hi, erstmal danke für deine Hilfe. Die Panels gucken nun nicht mehr drüber, wie du sagtest, mussten die -25 in die Klammer mit rein und danach noch +30, damit die nun unten nicht mehr drüber stehen.

Das mit dem Timer läuft aber immer noch nicht.

Ich hab oben die Variable angegeben:
Delphi-Quellcode:
var
  FPanel1: TFPanel1;
dann kommt bei dem Timer nun folgender Code:
Delphi-Quellcode:
procedure TFPanel1.Timer1Timer(Sender: TObject);
var i: integer;
begin
for i:=0 to ComponentCount-1 do begin
  if Components[i] is TFPanel1 then begin
     TFPanel1(Components[i]).Left:= Random(ShSpiel.Width-25);
     TFPanel1(Components[i]).Top:= Random(ShSpiel.Height-25);
     end;
  end;
end;
bewegen tut sich aber immer noch nix
  Mit Zitat antworten Zitat
Benutzerbild von nachti1505
nachti1505

Registriert seit: 7. Apr 2007
188 Beiträge
 
Delphi 7 Enterprise
 
#13

Re: Panel Spiel => Panel automatisch erzeugen?

  Alt 19. Okt 2007, 12:24
1.) ???
Timer.Enabled := true; 2.) ???
Im Form.Create Zufallsgenerator initialisiert?
  randomize;
  Mit Zitat antworten Zitat
Juggy D

Registriert seit: 18. Okt 2007
29 Beiträge
 
#14

Re: Panel Spiel => Panel automatisch erzeugen?

  Alt 19. Okt 2007, 13:14
Hi,

hab nun auch randomize eingegeben, es tut sich aber immer noch nichts... Es ist bestimmt nur irgendwo ein klitzekleiner Fehler.. Aber ich find ihn nicht..

Delphi-Quellcode:
procedure TFPanel1.FormCreate(Sender: TObject);
begin
randomize;
end;

procedure TFPanel1.Timer1Timer(Sender: TObject);
var i: integer;
begin
Timer1.Enabled:= True;
for i:=0 to ComponentCount-1 do begin
  if Components[i] is TFPanel1 then begin
     TFPanel1(Components[i]).Left:= Random(ShSpiel.Width-25);
     TFPanel1(Components[i]).Top:= Random(ShSpiel.Height-25);
     end;
  end;
end;
  Mit Zitat antworten Zitat
Benutzerbild von _frank_
_frank_

Registriert seit: 21. Feb 2003
Ort: Plauen / Bamberg
922 Beiträge
 
Delphi 3 Professional
 
#15

Re: Panel Spiel => Panel automatisch erzeugen?

  Alt 19. Okt 2007, 13:18
setz doch mal breakpoints auf die top/left-zeilen und ggf. weiter oben. so weist zumindest wie weit der code durchläuft...

Gruß Frank
  Mit Zitat antworten Zitat
Benutzerbild von nachti1505
nachti1505

Registriert seit: 7. Apr 2007
188 Beiträge
 
Delphi 7 Enterprise
 
#16

Re: Panel Spiel => Panel automatisch erzeugen?

  Alt 19. Okt 2007, 13:20
Kann du evt. mal den ganzen Quellcode reinstellen... vllt. auch als Anhang...

Ach so, ich gehe mal davon dass dein Timer Enabled war....... (Schau mal im OI nach). Weil ein Enablen im Aufruf bringt gar nüscht. Ohne Enabled kein Aufruf und ohne Aufruf wird er nicht auf Enabled gesetzt --> ein Paradoxon...
  Mit Zitat antworten Zitat
Juggy D

Registriert seit: 18. Okt 2007
29 Beiträge
 
#17

Re: Panel Spiel => Panel automatisch erzeugen?

  Alt 19. Okt 2007, 13:26
break; hat auch nichts gebracht... Ich hab mal nen Screenshot gemacht, vllt gebe ich ja nur irgendwo das falsche Formular oder so an.. TFPanel1 ist schon richtig ind er IF Abfrage, oder?

http://img524.imageshack.us/img524/5229/screen1yb8.jpg
  Mit Zitat antworten Zitat
Juggy D

Registriert seit: 18. Okt 2007
29 Beiträge
 
#18

Re: Panel Spiel => Panel automatisch erzeugen?

  Alt 19. Okt 2007, 13:28
Ja Timer ist auch im OI enabled.

hier der Quelltext
Delphi-Quellcode:
unit UFang1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls;

type
  TFPanel1 = class(TForm)
    BStart: TButton;
    ShSpiel: TShape;
    Panel: TPanel;
    Timer1: TTimer;
    procedure BStartClick(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure PanelWeg(Sender:TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  FPanel1: TFPanel1;

implementation

uses UPunkte;


{$R *.dfm}

procedure TFPanel1.BStartClick(Sender: TObject);
var i: integer;
begin
for i:= 0 to 4 do begin
  Panel:= TPanel.Create (ShSpiel);
  Panel.Color:= clYellow;
  Panel.Caption:= 'F';
  Panel.Width:= 49;
  Panel.Height:= 33;
  Panel.Left:= Random(ShSpiel.Width-60)+30;
  Panel.Top:= Random(ShSpiel.Height-50)+30;
  Panel.Parent:= FPanel1;
  Panel.OnClick:= PanelWeg;

end;


//FPunkte:=TFPunkte.Create(self);
//FPunkte.showModal;
end;

procedure TFPanel1.FormCreate(Sender: TObject);
begin
randomize;
end;

procedure TFPanel1.Timer1Timer(Sender: TObject);
var i: integer;
begin
Timer1.Enabled:= True;
for i:=0 to ComponentCount-1 do begin
  if Components[i] is TFPanel1 then begin
     TFPanel1(Components[i]).Left:= Random(ShSpiel.Width-25);
     TFPanel1(Components[i]).Top:= Random(ShSpiel.Height-25);
     end;
  end;
end;

procedure TFPanel1.PanelWeg(Sender:TObject);
begin
  TPanel(Sender).Hide;
end;

end.
  Mit Zitat antworten Zitat
Benutzerbild von nachti1505
nachti1505

Registriert seit: 7. Apr 2007
188 Beiträge
 
Delphi 7 Enterprise
 
#19

Re: Panel Spiel => Panel automatisch erzeugen?

  Alt 19. Okt 2007, 13:34
Sieht doch gut aus....

Du erstellst hier
  Panel:= TPanel.Create (ShSpiel); TPANEL und versuchst sie dann hier hier nach

Components[i] is TFPanel1 TFPanel1 zu casten.

Im Timer1Timer sämtliche Vorkommen von TFPanel1 durch TPanel ersetzen.
  Mit Zitat antworten Zitat
Juggy D

Registriert seit: 18. Okt 2007
29 Beiträge
 
#20

Re: Panel Spiel => Panel automatisch erzeugen?

  Alt 19. Okt 2007, 13:39
hab im Timer1Timer nun TPanel eingesetzt, es geht aber immer noch nicht.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 4     12 34      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:55 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz