AGB  ·  Datenschutz  ·  Impressum  







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

Minesweeper

Ein Thema von saii · begonnen am 21. Mär 2015 · letzter Beitrag vom 29. Mär 2015
Antwort Antwort
Seite 3 von 14     123 4513     Letzte »    
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.144 Beiträge
 
Delphi 10.3 Rio
 
#21

AW: Minesweeper

  Alt 23. Mär 2015, 23:52
Ich glaube Du hast da etwas falsch verstanden...

MEIN Beispiel war doch so wie Dein Source...
  Mit Zitat antworten Zitat
saii

Registriert seit: 20. Feb 2015
22 Beiträge
 
#22

AW: Minesweeper

  Alt 24. Mär 2015, 16:13
Vielen Dank für die Kritik und Berichtigungen.
Manche Sachen die hier genannt werden probier ich halt aus, aber als quasi-Anfänger komm ich dann auch schnell nicht weiter.

Ich hab mich jetzt jedenfalls entschieden ein PanelArray zu generieren.
Meine Frage: Wie erstelle ich die Prozedur für das OnMouseDown-Ereignis?
Delphi-Quellcode:
begin
      Panel := TPanel.Create(Self);
      Panel.Parent := Self;
      Panel.Name := 'P_' + IntToStr(x) + '_' + IntToStr(y);
      Panel.Width := WH;
      Panel.Height := WH;
      Panel.Caption := '';
      Panel.Left := x1 + (x * WH);
      Panel.Top := y1 + (y * WH);
      Panel.OnMouseDown := PanelMatrixMouseDown( {?} );
    end;
  Mit Zitat antworten Zitat
BadenPower

Registriert seit: 17. Jun 2009
616 Beiträge
 
#23

AW: Minesweeper

  Alt 24. Mär 2015, 16:35
Die Zuweisung der Prozedur zum Ereignis erfolgt ohne Klammern und ohne Parameter, also nur der Prozedurname.

Panel.OnMouseDown := PanelMatrixMouseDown;
Programmieren ist die Kunst aus Nullen und Einsen etwas sinnvollen zu gestalten.
Der bessere Künstler ist allerdings der Anwender, denn dieser findet Fehler, welche sich der Programmierer nicht vorstellen konnte.
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.144 Beiträge
 
Delphi 10.3 Rio
 
#24

AW: Minesweeper

  Alt 24. Mär 2015, 18:20
Meine Frage: Wie erstelle ich die Prozedur für das OnMouseDown-Ereignis?
Ich mach das immer so:

Nimm ein Panel und mach da Click auf Mousedown oder auf OnClick

geh in den Source... Kopieren die Procedure von oben in den Privat teil und drücke Speichern, damit das Form die Procedure "vergißt"...

Schon hast Du die Procedure mit den richtigen Parametern.

Mavarik
  Mit Zitat antworten Zitat
saii

Registriert seit: 20. Feb 2015
22 Beiträge
 
#25

AW: Minesweeper

  Alt 24. Mär 2015, 18:40
Danke BadenPower und Mavarik.
Mal sehen wie weit ich komme
  Mit Zitat antworten Zitat
saii

Registriert seit: 20. Feb 2015
22 Beiträge
 
#26

AW: Minesweeper

  Alt 24. Mär 2015, 19:11
Ich wollte mit
A:=StrToInt(Panel.Name[3]); (falls das funktioniert hätte) A aus dem Namen des Panels bestimmen,
aber das Problem ist, dass der Name des Panels an der Stelle (zB P_4_7) auch zweistellig sein kann. (P_10_13)

Wenn ihr wisst was ich meine.. wie löse ich das Problem? oder gibt es eh einen besseren Weg?
  Mit Zitat antworten Zitat
BadenPower

Registriert seit: 17. Jun 2009
616 Beiträge
 
#27

AW: Minesweeper

  Alt 24. Mär 2015, 19:20
Für was brauchst Du das A?

Auf das auslösende Panel kannst Du in der Event-Prozedure mit DiesesPanel := TPanel(Sender); zugreifen.
Programmieren ist die Kunst aus Nullen und Einsen etwas sinnvollen zu gestalten.
Der bessere Künstler ist allerdings der Anwender, denn dieser findet Fehler, welche sich der Programmierer nicht vorstellen konnte.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#28

AW: Minesweeper

  Alt 24. Mär 2015, 19:25
Und anstatt du Dinger nachträglich zu suchen, hätte man die auch automatisch erstellen können, dabei einem zweidimensionalem Array zugewiesen und hätte den ganze Quatsch mit den Namen auch lassen können.

PS: Man kann Zahlen auch immer zweistellig schreiben. 01
$2B or not $2B
  Mit Zitat antworten Zitat
saii

Registriert seit: 20. Feb 2015
22 Beiträge
 
#29

AW: Minesweeper

  Alt 24. Mär 2015, 19:40
Ich nutze jetzt zusätzlich zum PanelArray ein weiteres IntegerArray weil ich die einzelnen Panels einen Wert von 0 bis 9 zuweise und Ich nicht weiß wie ich das mit einem PanelArray anstellen soll.

Ich brauche A, um aus dem TPanel die Koordinaten zu entnehmen.

DAs geht bestimmt einfacher, oder?
  Mit Zitat antworten Zitat
saii

Registriert seit: 20. Feb 2015
22 Beiträge
 
#30

AW: Minesweeper

  Alt 24. Mär 2015, 20:00
Himitsu, ich erstelle die Panels automatisch und benenne sie (warum weiß ich auch nicht, wie ich gerade bemerke)

Von daher weiß ich auch nicht, wie ich die zweistellig benennen soll.
Delphi-Quellcode:
procedure TForm1.CreatePanelMatrix(x1, y1: Integer);
var
  x,y:integer;
begin
  for x := 0 to 14 do
    for y := 0 to 14 do
    begin
      Panel := TPanel.Create(Self);
      Panel.Parent := Self;
      Panel.Name := 'P_' + IntToStr(x) + '_' + IntToStr(y);
      Panel.Width := 30;
      Panel.Height := 30;
      Panel.Caption := '';
      Panel.Left := x1 + (x * 30);
      Panel.Top := y1 + (y * 30);
      Panel.OnMouseDown := PanelMatrixMouseDown;
    end;
end;
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 14     123 4513     Letzte »    


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 10:24 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