![]() |
AW: Minesweeper
Ich glaube Du hast da etwas falsch verstanden...
MEIN Beispiel war doch so wie Dein Source... |
AW: Minesweeper
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; |
AW: Minesweeper
Die Zuweisung der Prozedur zum Ereignis erfolgt ohne Klammern und ohne Parameter, also nur der Prozedurname.
Delphi-Quellcode:
Panel.OnMouseDown := PanelMatrixMouseDown;
|
AW: Minesweeper
Zitat:
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 |
AW: Minesweeper
Danke BadenPower und Mavarik.
Mal sehen wie weit ich komme :) |
AW: Minesweeper
Ich wollte mit
Delphi-Quellcode:
(falls das funktioniert hätte) A aus dem Namen des Panels bestimmen,
A:=StrToInt(Panel.Name[3]);
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? |
AW: Minesweeper
Für was brauchst Du das A?
Auf das auslösende Panel kannst Du in der Event-Prozedure mit
Delphi-Quellcode:
zugreifen.
DiesesPanel := TPanel(Sender);
|
AW: Minesweeper
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 :stupid: |
AW: Minesweeper
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? |
AW: Minesweeper
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; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:29 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