anstatt nur für Sender für alle machen
spacer
Autor Nachricht
th3Thr1ll3r
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starhalf offtopic starofftopic star
Beiträge: 31

Win XP Prof
Delphi 6 Pers.
BeitragVerfasst: Mi 14.02.07 00:32 
Hallo

ich habe mal wieder eine Frage...

Also ich wurde von einem Freund gefragt, ob ich ihm vlt. helfen könnte!

Er möchte ein Programm schreiben, bei dem es Panels gibt, jede Sekunde ein neues, und wenn man auf die klickt sollen die verschwinden. Gestartet wird mit 5 Panels, nach einer Sekunde sind es dann 6 usw.

Alles funktioniert soweit ganz gut, die Panels werden zufällig angeordnet und beim klick werden sie mit Hide versteckt.

Das Problem ist folgendes, die Panels sollen nun auch ihre Position jede Sekunde ändern. Wie kriegt man das realisiert??

bei type ist folgendes dazu gekommen:

ausblenden Delphi-Quelltext markieren
1:
2:
3:
  private
    { Private-Deklarationen }
    Panel: TPanel;


und wenn man nun auf ein Panel klickt, dann wird mit der Prozedur "Panelweg" das Panel mit folgendem Code versteckt.

ausblenden Delphi-Quelltext markieren
1:
2:
3:
4:
procedure TFangspiel.Panelweg (Sender:TObject);
begin
        TPanel(Sender).Hide;
end;


das brachte mich nun auf die Idee, das man eventuell anstatt des Senders für alle TPanels etwas ausführen kann, also nicht nur für das eine, von dem die Anweisung ja kam...
allerdings haben meine kläglichen Versuche von wegen TPanel(all) etc. nicht funktioniert?

Die Frage: Gibt es eine Möglichkeit die mit jeder verstreichenen Sekunde (Timer ist vorhanden) für alle vorhandenen Panels die Postion zu ändern??
von mir auch für jedes einzelne Panel und das man das dann in ne Schleife oder so setzen kann??

Ich würde mich über hilfreiche Antworten sehr freuen

MfG

das_thriller
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
Werbung ausblenden? Dann registriere Dich kostenlos. Weitere Gründe für eine Registrierung.


Werbung ausblenden? Dann registriere Dich kostenlos. Weitere Gründe für eine Registrierung.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 15841
Erhaltene Danke: 741

XP, W7 x64 (Chrome, IE9, FF), Debian, (OSX 10.7)
RAD XE 2, Java (NB), C++, C# (VS 2010), JS/HTML, PHP, Lazarus
BeitragVerfasst: Mi 14.02.07 00:35 
ausblenden Delphi-Quelltext markieren
1:
2:
3:
for i := 0 to ComponentCount - 1 do
  if Components[i] is TPanel then
    TPanel(Components[i])...
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
th3Thr1ll3r Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starhalf offtopic starofftopic star
Beiträge: 31

Win XP Prof
Delphi 6 Pers.
BeitragVerfasst: Mi 14.02.07 00:44 
super, funktioniert einwandfrei :) :)

DANKE!

MfG

das_thriller
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
Juggy D
Hält's aus hier
Beiträge: 1



BeitragVerfasst: Fr 19.10.07 14:36 
Hallo, bin grad dabei dasselbe Programm zu erstellen, aber bei mir bewegen sich die Panels nicht bzw. sie werden nicht neu positioniert. Hier mal der Auszug aus dem Quelltext, der Timer ist enabled:

ausblenden Delphi-Quelltext markieren
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
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 TPanel then begin
     TPanel(Components[i]).Left:= Random(ShSpiel.Width-25);
     break;
     TPanel(Components[i]).Top:= Random(ShSpiel.Height-25);
     break;
     end;
    //Panel:=Components[i] as TPanel;
    //Panel.Left:= Random(ShSpiel.Width)-25;
    //Panel.Top:= Random(ShSpiel.Height)-25;
  end;
end;


Jemand ne Ahnung, wieso es bei mir nicht klappt?

Wäre euch sehr dankbar für eine Antwort.

EDIT: Es geht. hatte nen falschen Owner angegeben.
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 15841
Erhaltene Danke: 741

XP, W7 x64 (Chrome, IE9, FF), Debian, (OSX 10.7)
RAD XE 2, Java (NB), C++, C# (VS 2010), JS/HTML, PHP, Lazarus
BeitragVerfasst: Sa 20.10.07 18:03 
Mit dem Break beendest du die Schleife. Warum soll Top nie zugewiesen werden?
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
dominikkv2
Hält's aus hier
Beiträge: 8


Turbo Delphi
BeitragVerfasst: Do 01.11.07 21:42 
hm.. es wäre doch viel leichter die panels dynamisch zu erzeugen, dann kann man die ganz beqeum mit nem array verwalten und ist auch noch unabhängig von der anzahl
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
home home