- Label.ParentColor := False // = eigene Farbe verwenden
- Konstanten machen den Code verständlicher und wartbarer
- For-Schleifen sind für eine vorher bekannte Anzahl von Durchläufen besser geeignet
- Koordinaten werden normalerweise mit x, y, ... bezeichnet
- Variablen sollten nicht mit A.. beginnen, das ist eigentlich Parametern vorbehalten (ALabel)
Delphi-Quellcode:
{Konstanten die an mehreren Stellen berücksichtigt werden}
const
xmin = 1;
xmax = 9;
ymin = 1;
ymax = 9;
type
TForm1 = class(TForm)
{...}
procedure PanelClick(Sender: TObject);
private
FMyIntegerArr: array[xMin..xMax, yMin..yMax] of Integer;
FMyLabelArr: array[xMin..xMax, yMin..yMax] of TLabel;
procedure InitMyLabel;
function GetMyLabelPos(ALabel: TLabel): TPoint;
end;
implementation
procedure TForm1.InitMyLabel;
var
x, y: Integer;
L: TLabel;
begin
for y := ymin to ymax do
begin
for x := xmin to xmax do
begin
L := TLabel.Create(Self);
L.Left := left_M - 5 + (x - xmin) * sw;
L.Top := top_m - 5 + (y - ymin) * sw;
L.Width := sw - 12;
L.Height := sw - 12;
L.Name := 'Feld' + IntToStr(y) + IntToStr(x);
L.Caption := L.Name;
l.ParentColor := False;
L.Color := clSilver;
L.Transparent := False;
L.Parent := GroupBox1;
L.OnClick := PanelClick;
FMyLabelArr[x, y] := L;
end;
end;
end;
function TForm1.GetMyLabelPos(ALabel: TLabel): TPoint;
var
x, y: Integer;
begin
for y := ymin to ymax do
begin
for x := xmin to xmax do
begin
if FMyLabelArr[x, y] = ALabel then
begin
Result := TPoint(x, y);
Exit;
end;
end;
end;
{nicht gefunden}
Result := TPoint(-1, -1);
end;
procedure TForm1.PanelClick(Sender: TObject);
var
P: TPoint;
i: Integer;
begin
P := GetMyLabelPos(Sender as TLabel);
i := FMyIntegerArr[P.x, P.y];
{...}
end;