AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Ansprechen von während Laufzeit erzeugter Komponenten
Thema durchsuchen
Ansicht
Themen-Optionen

Ansprechen von während Laufzeit erzeugter Komponenten

Offene Frage von "TiGü"
Ein Thema von Kurt Wallander · begonnen am 7. Mär 2022 · letzter Beitrag vom 10. Mär 2022
Antwort Antwort
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.435 Beiträge
 
Delphi 10.4 Sydney
 
#1

AW: Ansprechen von während Laufzeit erzeugter Komponenten

  Alt 8. Mär 2022, 08:51
- 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;
  Mit Zitat antworten Zitat
Antwort Antwort

 

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 05:55 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