Einzelnen Beitrag anzeigen

SMO

Registriert seit: 20. Jul 2005
178 Beiträge
 
Delphi XE6 Professional
 
#3

Re: Elemente in Abfrage zusammenfassen

  Alt 23. Jul 2005, 13:03
Mir fallen dazu folgende Möglichkeiten ein:

1) Wenn deine Drop-Prozedur nur von Shapes benutzt wird, deren Name die Form 'ShapeXX' hat, dann kannst du XX als Integer folgendermaßen erhalten (wobei i eine Integer-Variable ist):
i := StrToInt(Copy((Sender as TShape).Name, 6, 2)); Dieser Code nimmt an, dass der Sender ein TShape (oder Nachkomme davon) ist und wandelt die Zeichen 6 und 7 des Namens in einen Integer um.


2) Stattdessen könntest du auch gleich das "Tag"-Feld benutzen, das jede Komponenteninstanz zur freien Verfügung bereitstellt. Mit dem Objektinspektor kannst du für jede deiner Shapes den Tag setzen, auf 1 für Shape01, auf 2 für Shape02 usw.
Deine Drop-Prozedur kann die Werte dann so ganz einfach auslesen:
i := (Sender as TShape).Tag; Wenn es dir zu mühselig ist, alle Tags mit dem Objektinspektor zu setzen (bei >20 Shapes durchaus verständlich), kannst du die Tags auch durch folgenden Code setzen lassen, der beispielsweise in FormCreate platziert wird:
Delphi-Quellcode:
var
  i: Integer;
  c: TComponent;
//...
  i := 1;
  repeat
    c := FindComponent(Format('Shape%.2d', [i]));
    if c is TShape then
      TShape(c).Tag := i;
    Inc(i);
  until c = nil;

Egal ob du Methode 1) oder 2) benutzt, wenn du erst mal deine Shapes "zu Integer konvertiert" hast, dann lassen sich deine if-Abfragen einfach gestalten:
if (i >= 1) and (i <= 10) then // if (Sender = Shape01 ... 10) then Ich hoffe das hilft dir weiter.
  Mit Zitat antworten Zitat