mein Kartenprojekt (siehe hier http://www.lazarusforum.de/viewtopic.php?f=25&t=8971) kommt langsam voran. Aber jetzt hänge ich bei folgendem: Ich kann "Punkte" auf meine Karte (ein TImage in einer TScrollbox) setzen. Nun möchte ich über ein Kontextmenü alle gesetzten Punkte durchgehen und die jeweiligen Punkt-Koordinaten erhalten (später müssen an diesen Koordinaten noch weitere Shapes gesetzt werden, aber das kommt erst noch).
Die Punkte sind inkl. Koordinaten in einer Datenbank gespeichert, ich käme also auch über diesen Weg an die Daten. Aber eigentlich müsste eine TScrollbox doch ihren Inhalt selbst "verwalten" und mir daher auch die jeweiligen Shapes zurückgeben können.
Inzwischen bin ich soweit, dass ich prinzipiell alle Punkte abfragen kann, allerdings stimmt in diesem Codefragment
Code: Alles auswählen
procedure TgcisMainForm.TmpPkt_ZeigeAbstandClick(Sender: TObject);
// Im Moment erstmal nur reine Anzeige, die eigentliche Funktion kommt später...
var KreisNameStr : string;
ErgStrL : TStrings;
index : integer;
MaxPunkte : integer;
begin
ErgStrL:=TStringList.Create;
MaxPunkte:=gcisMainScrollBox.ControlCount-1;
for index:=0 to MaxPunkte do // ein "Child" ist immer das TImage
begin
case index of
0..9 : KreisNameStr:='Punkt00'+IntToStr(index);
10..99 : KreisNameStr:='Punkt0'+IntToStr(index);
100..999 : KreisNameStr:='Punkt'+IntToStr(index);
end;
ErgStrL.Add(IntToStr((gcisMainScrollBox.FindChildControl(KreisNameStr) as TShape).Left)+' '+IntToStr((gcisMainScrollBox.FindChildControl(KreisNameStr) as TShape).Top));
end;
ShowMessage(ErgStrL.Text);
ErgStrL.Free;
end;
der Wert für "MaxPunkte" immer noch nicht - wenn ich 5 Punkte anlege, müsste doch MaxPunkte bzw. gcisMainScrollBox.ControlCount allerhöchstens 6 und nicht 9 sein ? 5 Shapes, 1 Image, aber mehr auch nicht.
Lässt sich mein Vorhaben prinzipiell über diesen Weg realisieren? (und vor allem, wie kriege ich den passenden Endwert für die For-schleife?). Oder muss ich doch über die Datenbank gehen und damit den umständlichen Weg