Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Vergleich von zwei zur Laufzeit erstellten Objekten


Grafix - Do 29.04.10 13:55
Titel: Vergleich von zwei zur Laufzeit erstellten Objekten
Moin,

ich habe mehrere zur Laufzeit erzeugte Panel, angeordnet wie ein Feld X * Y.
Ich möchte jetzt den Wert des Panels neben dem, welches ich angeklickt habe. Die Panel.Tags sind durchnummeriert, die Namen ebenfalls, jedoch nach dem Format "PanelXY".

Ich kann nun herausfinden, welcher Tag das Feld neben (hier nur links) dem angeklickten hat, mit:


Delphi-Quelltext
1:
if ((Sender as TPanel).Caption = (Sender as TPanel).Tag - 1then                    


Aber wie frage ich jetzt noch den Wert des Panels links neben ab, bzw. vergleiche ihn mit einem bestimmten Wert??
Danke für Eure Mühe,

lg Grafix


Gausi - Do 29.04.10 14:06

Ich würde die Panels in einem 2D-Array of TPanel verwalten. Über den durchnummerierten Tag des angeklickten Panels kannst du die X-Y-Koordinate in diesem Array ausrechnen, und dann einfach im Array das Panel links/rechts/drüber/drunter des angeklickten nehmen.

Deine Codezeile wird aber nicht funktionieren - Tag ist Integer und Caption ein String. Das kann man so nicht direkt vergleichen. ;-)


ffgorcky - Sa 01.05.10 19:25

Kommt drauf an, wenn Du alle Panels normal durchnummerierst, dann kannst Du doch einfach nach dem Panel mit der nächstkleineren Nummer suchen.
Die Nummer bekommst Du dann so in etwa raus:

Delphi-Quelltext
1:
2:
panelName:=TPanel(Sender).Name;
nummer:=StrToInt(copy(panelName,6,length(panelName)-6))