AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Elemente in Abfrage zusammenfassen

Ein Thema von Opa Knack · begonnen am 23. Jul 2005 · letzter Beitrag vom 23. Jul 2005
Antwort Antwort
Opa Knack

Registriert seit: 28. Dez 2004
Ort: Köln
166 Beiträge
 
#1

Elemente in Abfrage zusammenfassen

  Alt 23. Jul 2005, 02:00
Hallo,

auf einer Form sind 21 Shapes verteilt. Diese können teilweise interagieren, jeweils abhängig von der Quelle. Dies sieht dann zum Beispiel so aus, dass die Shapes01 bis 10 auf Shape21 gezogen werden können (DnD), die Shapes 11-20 jedoch nicht.

Ich müßte also eine Abfrage in die Drop-Prozedur einbinden, mit der die Quelle selektiert wird. Bevor ich nun ...

if (Sender = Shape01) or (Sender = Shape02) or (Sender = Shape03) or ... ...schreibe, wäre es natürlich praktischer, wenn ich dies in der Form

if (Sender = Shape01 ... 10) then umsetzen könnte. Nur leider bekomme ich das nicht hin.

Hat jemand eine Idee, wie das ginge?

Danke
Opa
  Mit Zitat antworten Zitat
Benutzerbild von Pr0g
Pr0g

Registriert seit: 21. Mai 2004
809 Beiträge
 
Delphi 7 Personal
 
#2

Re: Elemente in Abfrage zusammenfassen

  Alt 23. Jul 2005, 02:12
Ich denke nicht, dass das geht. Du kannst zwar Wertebereiche erstellen, aber bei Komponentennamen dürfte das was anderes sein. Du könntest nen Array (wiederumr mit Schleife und FindComponent()) anlegen und dass dann in einer Schleife durchgehen und schauen, ob der Sender da drin ist...

MfG Pr0g
  Mit Zitat antworten Zitat
SMO

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

Re: Elemente in Abfrage zusammenfassen

  Alt 23. Jul 2005, 12: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
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 15:43 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