Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Random Tshape! (https://www.delphipraxis.net/84579-random-tshape.html)

Counter909 18. Jan 2007 19:01


Random Tshape!
 
moin


ich habe eine Frage:

ich habe eine Oberfläche mit mehreren Tshapes, die habe ich genommen, weil ich verschiedene Formen wollte (viereck,kreis,...), die ich alle jeweils auf ".visible:=false" gesetzt habe.
Nun möchte ich diese shapes durch einen Timer zufällig erscheinen lassen und wenn man darauf klickt, anschließend der nächste: aber alls zufällig, keine bestimmte reinfolge.

bis jetzt bekomme ich das eben nur so hin, dass nach einiger zeit EIN shape erscheint, klickt man drauf kommt der wieder. aber das liegt eben nur an dem random, was ich aber nicht inbekommen weil es ja heißt random(integer) und kein shape oder sonstiges und wenn ich shape als integer definiere, dann gibt es trotzdem immer ein konflikt


mfg
counter

zecke 18. Jan 2007 19:03

Re: Random Tshape!
 
:hi:

ich würde das mit "case .. of" lösen, per random eine zahl 'ziehen' und jeder zahl eine form zum erscheinen zuordnen (case of).

hoffe es hilft :hi:

dominikkv 18. Jan 2007 19:27

Re: Random Tshape!
 
oder vllt:
Delphi-Quellcode:
(FindComponent('Shape'+IntToStr(Random(9)+1)) as TShape).Visible := true;

Counter909 18. Jan 2007 20:20

Re: Random Tshape!
 
Zitat:

Zitat von zecke
und jeder zahl eine form zum erscheinen zuordnen (case of).




hmmm. jeder zahl eine form zuordnen....genau so hab ich mir das vorgestellt
aber ich weiß net so genau wie ich das umsetzen soll..kommt am ende immer ein
konflikt wegen tshape und integer !!!


mfg
counter

zecke 18. Jan 2007 22:28

Re: Random Tshape!
 
:hi:

Angenommen Du hast ein Shape TKreis und eins TStrich. Dann könntest Du beim case .. of 2 fälle setzen. Wenn bei random ne 1 rauskommt, setzt du einen booleanwert true, den anderen false. Danach brauchst Du nur noch fragen, welcher true ist und das jeweilge shape anzeigen.

denke, das ist nicht elegant, aber es funktioniert und das zählt bei mir immer :D

edit: ich hänge mal meine idee in code-form an.

als 1. im form.oncreate ein 'randomize;' hinein.

habe ich als globale variablen:
Delphi-Quellcode:
  kreis,strich : boolean;
  i : integer;
dann eine prozedur:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
i := random(2);
Case i of
  0 : kreis := true;
  1 : strich := true;
End;
If Kreis=true then
begin
// dein kreis shape
end else
If strich=true then
begin
// dein strich shape
end;
end;
entschuldige, wenn es nicht schön formatiert ist. wenn du eins gezeichnet hast, dann nicht vergessen die werte wieder auf false zu setzen, glaub ich :stupid:

hoffe es hilft :mrgreen:

bitsetter 18. Jan 2007 22:42

Re: Random Tshape!
 
In den aufgeführten Beispiel von dominikkv müssen die Namen von TShape Shape1, Shape2, Shape3 usw. lauten, da FindComponent nach den Namen der Komponenten suchen tut. Z.B. mit Random(4) kannst du dann aber auch nur mit max 4 TSharpes arbeiten! Also die Namen Shape1, Shape2, Shape3 und Shape4.

Counter909 19. Jan 2007 14:49

Re: Random Tshape!
 
ja ich denke deine antwort hat mir geholfen...

[das mit findcomponent werde ich sonst später versuchen]



aber zu dem case of: hab ich das dann richtig verstanden dass bei dir dann per zufall
der strich oder der Kreis ausgewählt wird ??? weil ich jetzt ja vor habe, einen von den 10 shapes
(die ja noch invisible sind) aufzurufen bzw visible zu machen.....nun hab ich es so gemacht :


Delphi-Quellcode:
begin
i := random(10);
Case i of
  0 : kreis1 := true;
  1 : kreis2 := true;
  2 : kreis3 := true;
  3 : kreis4 := true;
  4 : kreis5 := true;
  5 : kreis6 := true;
  6 : kreis7 := true;
  7 : kreis8 := true;
  8 : kreis9 := true;
  9 : kreis10 := true;
  10 : kreis11 := true;
  end;
 
If Kreis1=true then
begin
  shape1.Visible:=true;
end else
If kreis2=true then
begin
  shape2.Visible:=true;
end else
....

nun hab ich aber das problem, dass jedes mal nur der Kreis1 sichtbar wird...also das mit dem zufall klappt
noch net ganz...da muss also i.wie eine kleiner fehler drin liegen oder ??


mfg
counter

bitsetter 19. Jan 2007 17:55

Re: Random Tshape!
 
Bevor du Random aufrufen tust musst du randomize aufrufen!
Delphi-Quellcode:
begin
  randomize;//den Random Generator inizialisieren!
  i := random(10);
    Case i of
    0 : shape1.Visible:= true;
    1 : shape2.Visible:= true;
    2 : shape3.Visible:= true;
    3 : shape4.Visible:= true;
    4 : shape5.Visible:= true;
    5 : shape6.Visible:= true;
    6 : shape7.Visible:= true;
    7 : shape8.Visible:= true;
    8 : shape9.Visible:= true;
    9 : shape10.Visible:= true;
  end;
end;

Namenloser 19. Jan 2007 18:42

Re: Random Tshape!
 
Zitat:

Zitat von bitsetter
Bevor du Random aufrufen tust musst du randomize aufrufen!
Delphi-Quellcode:
  randomize;//den Random Generator inizialisieren!

randomize besser ins oncreate der form packen

edit: 200 beitrag :D

Counter909 20. Jan 2007 13:43

Re: Random Tshape!
 
jopp das funzt jetzt :-) vielen dank dafür


kleine frage noch zum schluss :-)
was ist denn die beste möglichkeit von einer prozedure zur anderen zu springen ?


mfg
counter


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:42 Uhr.
Seite 1 von 2  1 2      

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