Nich schlagen, ich bin noch relativer Programmieranfänger und ich weiß einfach nich so recht, wie ich dieses Problem lösen soll, ohne das Array global zu deklarieren
.
Ich habe eine Zeichenmethode, in der ich 2 Punkte P und Q übergeben bekomme, diese möchte ich in Arrays speichern:
Delphi-Quellcode:
procedure PaintRectangle(P,Q: TPoint; Layer: Integer; Caption: WideString; Counter: Integer);
var
Rect: TRect;
begin
Rect.TopLeft := P;
Rect.BottomRight := Q;
SetLength(PointsArrayP, 20);
SetLength(PointsArrayQ, 20);
PointsArrayP[Counter] := P;
PointsArrayQ[Counter] := Q;
Canvas.Brush.Color := LayerColorScheme(Layer);
Canvas.Pen.Color := clBlack;
Canvas.Pen.Width := 4;
Canvas.Rectangle(Rect);
Canvas.TextRect(Rect, P.X, P.Y, Caption);
end;
Im MouseMove-Event muss ich halt auf die Daten der Arrays zugreifen:
Delphi-Quellcode:
procedure TTreemapChart.MouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer);
var
i, help: Integer;
begin
help := Length(PointsArrayP);
for i := 0 to help-1 do
begin
if (PointsArrayP[i].X <= X) and (X <= PointsArrayQ[i].X) and (PointsArrayP[i].Y <= Y) and (Y <= PointsArrayQ[i].Y) then
Self.Hint := DoGetHint(i);
end;
end;
Momentan hab ich die Arrays halt global deklariert, muss das aber irgendwie wegbekommen. Wie mach ich das?