Autor Beitrag
Tetsuya1
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 21



BeitragVerfasst: Mo 02.02.09 12:15 
Wenn dies der falsche Bereich sein sollte, bitte verschieben.

Ich habe vor, als Abschlussprojekt der 13 ein Sudoku Ersteller mit Delphi 7 zu programmieren.
Nun hatte ich vor, ein vorgefertigtes Image als Hintergrund zu benutzen, welches die Spalten/Zeilen beinhaltet und evtl auch schon die Buttons (Würde so besser aussehen).
Nun ist meine Frage, ob es möglich ist, Ein Kästchen so auszuwählen, dass dort die Zahl rein passt (Habe vor, dies per Drag & Drop zu machen. Zahlenleiste soll vorhanden sein. Sprich man klickt auf eine Zahl und klickt danach aufs Feld. Fertig).
Jedoch weiß ich nicht, wie man dies in Delphi realisiert, da die Zahlen ja auch übergeben werden müssten, für das jeweilige Feld.
FinnO
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1331
Erhaltene Danke: 123

Mac OSX, Arch
TypeScript (Webstorm), Kotlin, Clojure (IDEA), Golang (VSCode)
BeitragVerfasst: Mo 02.02.09 13:50 
ich würde alle Zahlen in ne 9x9 Array speichern...

ausblenden Delphi-Quelltext
1:
2:
var 
  Sudoku : Array[1..9,1..9] of Byte;


und dann in einer ZeichenRoutine alle Zahlen Zeichnen also mit ner For- Schleife alle Felder des Arrays abgehen und jeweils die Zahl aufs Feld (optimalerweise ne Paintbox) zeichnen.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 02.02.09 14:59 
Hallo und :welcome: :D

Bei den Buttons müsstest du dann bei einem Mausklick schauen, ob der über dem Bild des Buttons passiert ist, und ggf. darauf reagieren.
Wenn du möchtest, kannst du natürlich auch in MouseMove schauen, ob die Maus drüber ist und den Button reagieren lassen (Hovereffekt).

Vielleicht möchtest du dir was die Speicherung der Zahlen angeht ein Programm von mir zu dem Thema anschauen, das löst und erstellt Sudokus:
www.delphi-forum.de/viewtopic.php?p=291436

Und zur Zeichnung gibts hier etwas:
www.michael-puff.de/...ffScreenBitmap.shtml
Tetsuya1 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 21



BeitragVerfasst: Mo 02.02.09 17:14 
Danke für die regen-Antworten.

@FinnO
Die Sache mit dem Array hatte ich zwar auch vor, leider habe ich dort ein Problem. Die Sache mit der For-do Schleife ist sehr gut zum überprüfen, ob die Zahl vertikal/horizontal bereits verwendet wurde.
Nur wie mache ich dies für die Unterquadrate?
Soll ich da 9 Funktionen (pro Unterquadrat) erstellen zum prüfen, ob die Zahl nur einmal vorkommt?


@jaenicke
Bezieht sich dein 2. Link auf das überschreiben des vorgegebenen Bildes?
Wird dies dann über die PaintBox realisiert?
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 02.02.09 19:49 
user profile iconTetsuya1 hat folgendes geschrieben Zum zitierten Posting springen:
Die Sache mit der For-do Schleife ist sehr gut zum überprüfen, ob die Zahl vertikal/horizontal bereits verwendet wurde.
Nur wie mache ich dies für die Unterquadrate?
Soll ich da 9 Funktionen (pro Unterquadrat) erstellen zum prüfen, ob die Zahl nur einmal vorkommt?
Du kannst dir ja anschauen wie ich das gelöst habe, das sind bei mir alles Schleifen. ;-)

user profile iconTetsuya1 hat folgendes geschrieben Zum zitierten Posting springen:
Bezieht sich dein 2. Link auf das überschreiben des vorgegebenen Bildes?
Wird dies dann über die PaintBox realisiert?
Auf das gesamte Zeichnen. In deinem Fall hast du einmal ein Hintergrundbild und dann die Zahlen und ggf. die Buttons. Alles das zeichnest du dann auf das Hintergrundbild und kopierst das ganze fertige Bild dann nur noch in die PaintBox.

Ich selbst mache das meistens so, dass ich dabei bei den Veränderungen an sich nur die relevanten Ausschnitte kopiere, und nur in OnPaint alles. Aber wenn du das genau wie in dem Beispiel machst, dann flackerts höchstens mal etwas, funktionieren tut es aber sehr gut.