![]() |
ZUfälliges Panel aufleuchten lassen
Hallo leute
ich habe ein irgentwie großes problem das aber wahrscheinlich für euch keins ist ;-) ehm ja dann fange ich mal an also ich will nen reaktiontest programieren und naja so mit 16 feldern (panel) und sagen wir mal alle 3 sek oder so soll eins zufällig aufleuchten und wenn man es anklickt geht es aus nebenbei soll eine weitere uhr mitlaufen was muss ich jetzt alles für diesen wahrscheinlich sehr einfachen vorgang machen bitte wenn es geht von a-z beschreiben was ich wo machen muss sorry und danke im vorraus |
Re: Problem (für mich groß)
Guten Abend,
um eine zufällige Zahl zu ermitteln lohnt es sich random und randomize anzuschauen. Um zeitgesteuerte Sachen zu machen, dazu kannst Du dir einmal TTimer anschauen. Um eine Komponente über eine Zahl anzusprechen z.B. Edit1.text, Edit2.text dabei hilft dann FindComponent. Oder Du packst Dir Deine Panel in eine Array, dazu mußt Du sie dann aber dynamisch erzeugen. Grüße Klaus |
Re: Problem (für mich groß)
Darf ich mal raten?
Du hast Monatg (also morgen) Informatik und musst noch Hausaufgaben machen; bei Google hast du diese Forum gefunden und hoffst jetz' das wir dir helfen... 1) Willkommen bei uns in der DP! 2) Wir sind nicht dazu da, deine Hausaufgaben zu machen, falls ich Recht habe, etwas eigeninitiative musst du schon mitbringen. Aber ich will ja auch mal nicht so sein... Panel haben eine Eigenschaft Color, damit kannst du sie "Blinken" lassen, desweiteren solltest du dir Sachen wie TTimer und Timespan angucken... oder auch SecoundsBetween, aus den DateUtils, wenn ich mich nicht irre. By the Way... das ganze past wesentlich besser in Sonstige "Fragen zu Delphi" doer "Projekte"! |
DP-Maintenance
Dieses Thema wurde von "Matze" von "Die Delphi-IDE" nach "Sonstige Fragen zu Delphi" verschoben.
|
Re: Problem (für mich groß)
Hallo, Willkommen in der DP :dp:
Tust Du uns zunächst 2 Gefallen? Ändere bitte den Titel des Threads, so dass man gleich erkennen kann, worum es geht. Und beachte bitte die Regeln der Rechtschreibung und Interpunktion, dann ist Dein Beitrag auch leichter zu lesen ;) Wie kann man Dein Problem nun angehen? Nun, in meinen Augen wirst Du zunächst einen Zufallsgenerator brauchen, den Du einmalig mit Randomize initialisierst. Des Weiteren könnte eine Timer-Komponente auch nicht schaden. Diese bekommt ein zufälliges Intervall innerhalb einer gewissen Grenze verpasst. Wenn der Timer feuert, ermittelst Du ein zufälliges Panel und färbst dies z.B. rot (PanelX.Color := clRed). Gleichzeitig ermittelst Du die aktuelle Zeit mit now() und speicherst sie in einer Varaiblen ab. Wird dies Panel nun angeklickt, ermittelst Du wieder die Zeit und subtrahierst die eben gemerkte Zeit. Nun weißt Du, wie lange der Anwender gebraucht hat. Diese Angabe ist in Tagen, aber durch Multiplikation mit 86400 (=> 24 * 60 * 60) hast Du sie dann in Sekunden. Nun bekommt der Timer wieder ein anderes zufälliges Intervall. Die einzelnen ermittelten Reaktionszeiten kannst Du aufaddieren und durch die Anzahl der Durchläufe dividieren, damit Du die durchschnittliche Reaktionszeit bekommst. Ich hoffe, das hilft Dir erstmal weiter. |
Re: ZUfälliges Panel aufleuchten lassen
Wie man es theoretisch macht weiß ich jetzt in etwa, nur wie kann ich alle Panels (16 Stück) gleichzeitig zusammenfassen und Randomize drüberlaufen kann?
Kann man vieleicht alle Panels zusammen fassen deklarieren oder so? Ist das möglich (ps: Es sind keine hausaufgaben, wir sollen uns selbst ein Projekt ausdenken und das probieren zu verwirklichen) |
Re: ZUfälliges Panel aufleuchten lassen
Delphi-Quellcode:
ist mal ungetestet mal eben nebenher... vielleicht auch fehlerbehaftet aber damit könnte man etwas anfangen. lesen, verstehen, testen... Achtung: nicht zum copy pasten geeignet sondern nur ein denkansatz
randomize;
zahl := random( 15 ) + 1; for i := 0 to ComponentCount - 1 do begin if Components[i] is TPanel then begin if zahl > 1 then dec( zahl ) else begin (Components[i] as TPanel).Color := clRed; Sleep(1000); (Components[i] as TPanel).Color := clGreen; end; end; end; gruß reli edit: oder mit
Delphi-Quellcode:
versuchen... syntax habe ich gerade nicht im kopf ... aber zum selber arbeiten sollte es reichen
( findcomponent( 'Panel'+IntToStr(Random(15)+1)) as TPanel ).Color := clBrabelschneck;
|
Re: ZUfälliges Panel aufleuchten lassen
Wenn Du die Namen der Panels nicht geändert hast und diese also Panel1 - Panel16 heißen, versuch mal Folgendes:
Delphi-Quellcode:
Vorher einmalig z.B. im OnCreate Randomize aufrufen.
TPanel(FindComponent('Panel' + inttostr(Random(16) + 1))).Color := clRed;
|
Re: ZUfälliges Panel aufleuchten lassen
Hallo leutet könnt ihr mir zufällig sagen was diese if anwendung bewirkt?
if y - radius < Leinwand.ClipRect.Top then begin y := Leinwand.ClipRect.Top + radius; dy := -dy; end; if y + radius >= Leinwand.ClipRect.Bottom then begin y := Leinwand.ClipRect.Bottom - 1 - radius; dy := -dy; end; if x - radius < Leinwand.ClipRect.Left then begin x := Leinwand.ClipRect.left + radius; dx := -dx; end; if x + radius >= Leinwand.ClipRect.Right then begin x := Leinwand.ClipRect.right - radius; dx := -dx; Das wäre echt nett danke euch im vorraus ;-) |
Re: ZUfälliges Panel aufleuchten lassen
also ich sag mal so:
wenn der Code in Delphi-Tags stünde und/oder ordentlich formatiert wäre, wäre er einfacher zu lesen das ganze sieht dann so aus.
Delphi-Quellcode:
Des Weiteren lässt sich nur sagen:
if y - radius < Leinwand.ClipRect.Top then
begin y := Leinwand.ClipRect.Top + radius; dy := -dy; end; if y + radius >= Leinwand.ClipRect.Bottom then begin y := Leinwand.ClipRect.Bottom - 1 - radius; dy := -dy; end; if x - radius < Leinwand.ClipRect.Left then begin x := Leinwand.ClipRect.left + radius; dx := -dx; end; if x + radius >= Leinwand.ClipRect.Right then begin x := Leinwand.ClipRect.right - radius; dx := -dx; end; radius, dx: Integer; Auf jeden Fall ne Zahl im pos. und neg. Bereich Leinwand: TCanvas; bin mir aber nicht ganz sicher Für weitere Aussagen ist der Code-Schnipsel zu klein rollstuhlfahrer |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:41 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