![]() |
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 |
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: |
Re: Random Tshape!
oder vllt:
Delphi-Quellcode:
(FindComponent('Shape'+IntToStr(Random(9)+1)) as TShape).Visible := true;
|
Re: Random Tshape!
Zitat:
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 |
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:
dann eine prozedur:
kreis,strich : boolean;
i : integer;
Delphi-Quellcode:
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:
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; hoffe es hilft :mrgreen: |
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.
|
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 |
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; |
Re: Random Tshape!
Zitat:
edit: 200 beitrag :D |
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. |
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