AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ZUfälliges Panel aufleuchten lassen

Ein Thema von Scorp · begonnen am 13. Jan 2008 · letzter Beitrag vom 22. Jan 2008
Antwort Antwort
Seite 1 von 2  1 2      
Scorp

Registriert seit: 13. Jan 2008
5 Beiträge
 
#1

ZUfälliges Panel aufleuchten lassen

  Alt 13. Jan 2008, 17:20
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
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.767 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Problem (für mich groß)

  Alt 13. Jan 2008, 17:24
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
Klaus
  Mit Zitat antworten Zitat
Bastler

Registriert seit: 15. Aug 2006
153 Beiträge
 
Delphi 7 Personal
 
#3

Re: Problem (für mich groß)

  Alt 13. Jan 2008, 17:26
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"!
Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit, aber beim Universum bin ich mir noch nicht ganz sicher
(A. Einstein)
  Mit Zitat antworten Zitat
13. Jan 2008, 17:28
Dieses Thema wurde von "Matze" von "Die Delphi-IDE" nach "Sonstige Fragen zu Delphi" verschoben.
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#5

Re: Problem (für mich groß)

  Alt 13. Jan 2008, 17:32
Hallo, Willkommen in der 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.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Scorp

Registriert seit: 13. Jan 2008
5 Beiträge
 
#6

Re: ZUfälliges Panel aufleuchten lassen

  Alt 14. Jan 2008, 14:41
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)
  Mit Zitat antworten Zitat
Relicted

Registriert seit: 24. Jan 2006
Ort: Iserlohn
646 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: ZUfälliges Panel aufleuchten lassen

  Alt 14. Jan 2008, 14:53
Delphi-Quellcode:
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;
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


gruß
reli

edit:

oder mit ( findcomponent( 'Panel'+IntToStr(Random(15)+1)) as TPanel ).Color := clBrabelschneck; versuchen... syntax habe ich gerade nicht im kopf ... aber zum selber arbeiten sollte es reichen
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#8

Re: ZUfälliges Panel aufleuchten lassen

  Alt 14. Jan 2008, 14:56
Wenn Du die Namen der Panels nicht geändert hast und diese also Panel1 - Panel16 heißen, versuch mal Folgendes: TPanel(FindComponent('Panel' + inttostr(Random(16) + 1))).Color := clRed; Vorher einmalig z.B. im OnCreate Randomize aufrufen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Scorp

Registriert seit: 13. Jan 2008
5 Beiträge
 
#9

Re: ZUfälliges Panel aufleuchten lassen

  Alt 19. Jan 2008, 22:44
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
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#10

Re: ZUfälliges Panel aufleuchten lassen

  Alt 19. Jan 2008, 23:45
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:
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;
Des Weiteren lässt sich nur sagen:
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
Bernhard
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 06:39 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