Einzelnen Beitrag anzeigen

HeZa

Registriert seit: 4. Nov 2004
Ort: Dortmund
182 Beiträge
 
Delphi 10 Seattle Professional
 
#7

Re: Array of TObject - Bei Ereignis abfragen der Position

  Alt 1. Jun 2010, 01:29
Zitat von Hallo_Thomas:
Geht das wirklich nicht eleganter?
Warum brauchst du das eleganter? Was verstehst du unter eleganter?

Es fallen einem leicht 5 und mehr Wege ein dieses Problem zu lösen, die Frage ist, wofür brauchst du das?

Ob eine Lösung elegant ist, ist von der Problemstellung abhängig (die wir noch nicht kennen). Vielleicht ist schon das array of array of TButton unelegant? Vielleicht musst du nur deine Buttons in der Form btn001x001 benennen? Vielleicht ist es sinnvoll einene eigne Button-Klasse mit X und Y Eigenschaft zu entwickeln? Oder es reich doch X und Y in der Tag Eigenschaft zu codieren.

Ausgehend von dem was ich bisher über das Problem weiß, würde ich zu Schleifen-Methode tendieren. Das Array of Array of TButton enthält bereits die benötigte Information, wozu also noch ein Tag in Abhängigkeit davon setzen. Da du hier von Button-Clicks sprichst sollte das ganze auch nicht zeitkritsch sein. Aber ob es elegant ist...?

Delphi-Quellcode:
function TForm1.TrySenderToXY(Sender: TObject; var X, Y: Integer): Boolean;
var
  i, j: Integer;
  btn: TButton;
begin
  Result := False;

  if not (Sender is TButton) then
    Exit;

  btn := TButton(Sender);

  for i := Low(xyButtons) to High(xyButtons) do
    for j := Low(xyButtons[i]) to High(xyButtons[i]) do
      if xyButtons[i, j] = btn then
      begin
        X := i;
        Y := j;
        Result := True;
        Break;
      end;
end;

procedure TForm1.ButtonClick(Sender: TObject);
var
  x, y: Integer;
begin
  if TrySenderToXY(Sender, X, Y) then
    Caption := Format('Clicked at %d x %d', [x, y])
  else
    Caption := 'Unknown clicked';
end;
  Mit Zitat antworten Zitat