![]() |
Panels....
Hi Leute....
also ich hab jetzt vier Panels auf meiner oberfläche, und will darauf jetzt jeweils nen Kreis mit farbe setzen...wie mache ich das!? Ich habe sechs Farben zur auswahl, und das programm soll mir von den sechsen vier auswählen, und sie in die vier kreise setzten! Es darf aber keine Farbe zweimal vorkommen! Kann mit dabei vielleicht jemand helfen?? :oops: Wäre für jeden tipp dankbar... :) :hi: |
Re: Panels....
Moin Vale,
ich hab' gerade in einem Thread ein Beispiel geschrieben, wie man ![]() Das könnte Dir schon mal weiterhelfen. |
Re: Panels....
Hallo Vale,
aber bei Master Mind dürfen die Farben auch mehrfach vorkommen. 8) |
Re: Panels....
Moin Spockie,
man kann auch die Variante ohne doppelte Farben spielen. Ist natürlich leichter zu erraten, aber vorgesehen ist es ;-) |
Re: Panels....
Hi....
ja klar...man kann es auch mit doppelt spielen, aber ich bin froh wenn mein programm erst mal so geht! :) Danke für den link, chris! Werd mich da mal probieren reinzuhängen! :coder: :hi: |
Re: Panels....
Zitat:
Die verbrauchen besonders viele Resourcen. Zeichne lieber direkt auf das Form oder wenn du mouse ereignisse haben willst benutze 4 Paintboxen. Wie man Kreise zeichnet weisst du doch oder? |
Re: Panels....
Zitat:
ich muss später die Farben ansprechen können, zum vergleichen mit den eingegeben Farben! Die eingabe erfolgt ja per Hardware...deshalb brauch ich auch keine MausEreignisse. Kann mir niemand sagen wie ich ein kreis auf ein panel bekomm?? Ihr wisst das doch bestimmt :cry: Des geht irgendwie mit Brush... :roll: Danke... :) |
Re: Panels....
Moin Vale,
so könntest Du einen roten Kreis mit 50 Pixel Durchmesser auf ein Panel bekommen (hier in die linke obere Ecke)
Delphi-Quellcode:
Ich halte es allerdings für sinnvoller, wenn Du kein Panel, sondern eine Paintbox, oder einen Shape nimmst.
procedure TForm1.Button1Click(Sender: TObject);
var hDC : DWORD; hBrush : DWORD; hBrushOld : DWORD; begin hDC := GetDC(Panel1.Handle); try hBrush := CreateSolidBrush(RGB(255,0,0)); hBrushOld := SelectObject(hDC,hBrush); try Ellipse(hDC,0,0,50,50); finally DeleteObject(hBrush); SelectObject(hDC,hBrushOld); end; finally ReleaseDC(Panel1.Handle,hDC); end; end; Um flexibler in der Darstellung zu sein, könntest Du es auch mit TImage machen. Dazu könntest Du dann die Bilder z.B. aus Bitmaps laden. |
Re: Panels....
Hi Chris...
vielen vielen Dank....jetzt gehts!! :hello: Mein nächstes problem is...ich habe ja vier Kreise, und alle vier kreise müssen unterschiedliche farben haben. Zur auswahl hab ich davor sechs farben definiert, und das er mit randomize mir eine farbe per zufall holt.
Delphi-Quellcode:
und dann beim aufruf:
Randomize; //Zufall für Farben!!
x := random(6); case x of 0: Farbe := clred; 1: Farbe := cllime; 2: Farbe := clblue; 3: Farbe := clyellow; 4: Farbe := clfuchsia; 5: Farbe := clteal; end;
Delphi-Quellcode:
Deinen Quelltext hab ich dann für alle vier panels genommen, bloß is es
hBrush := CreateSolidBrush(Farbe);
jetzt so ...das er mir in alle vier kreise die gleiche farbe macht! Hab scho probiert dazwischen die farben wieder mischen...aber ich hab einfach zu wenig ahnung :wall: Wie bekomm ich des hin...das erstmal unterschiedliche Farben in meinen vier kreisen erscheinen...und dann noch das keine doppelt vorkommt. Kann mir dabei vielleicht jemand helfen?! :oops: :hi: |
Re: Panels....
Moin Vale,
wenn Du die Kreise in der genannten Weise zeichnest, brauchst Du schon mal keine Panel. Du musst nur das Handle der Komponente angeben, auf der gezeichnet werden soll (statt Panel1.Handle, kann es auch Form1.Handle sein). Die Position an der die Kreise gezeichnet werden sollen wird in den Paramtern von Ellipse angegeben. Zweiter und dritter Parameter geben die X- und die Y-Koordinate der linken oberen Ecke, die nächsten der rechten unteren Ecke des Rechteckes an, das den Kreis umschliesst. Damit kannst Du dann die Kreise beliebig positionieren. Experimentiere doch einfach mal mit den den Parametern von Ellipse. Mach Dir doch aus der Zeichenroutine eine Prozedur, der die Farbe, und die Koordinaten (z.B. X-Kreismittelpunkt, Y-Kreismittelpunkt) als Parameter übergeben werden. Den Durchmesser wirst Du ja wohl eh' festlegen. Um jetzt eine Auswahl zu treffen, schau Dir bitte mal den Thread mit den Lottozahlen an, den ich oben schon genannt habe. Die erste Seite müsste für Deine Anwendung genügen. Wichtig ist: Du ziehst hier 4 aus 6 statt 6 aus 49, und in der Liste musst Du statt der integer die Farben (TColor) speichern. Im Gegensatz zu dem dort genannten Problem, brauchst Du noch nicht einmal zu sortieren, bzw. Du darfst es gar nicht. Das entfällt bei Dir also sowieso. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:13 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 by Thomas Breitkreuz