AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Array of TObject - Bei Ereignis abfragen der Position
Thema durchsuchen
Ansicht
Themen-Optionen

Array of TObject - Bei Ereignis abfragen der Position

Ein Thema von Hallo_Thomas · begonnen am 31. Mai 2010 · letzter Beitrag vom 1. Jun 2010
 
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, 00: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
 


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 15:06 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