Und wenn Du
Zitat:
Delphi-Quellcode:
if (Sender is TWinControl) then
if (Sender<>Form3) then
meinControl := (Sender as TWinControl)
else
Exit;
mal in
Delphi-Quellcode:
if (Sender is TWinControl) and (Sender<>Form3) then
meinControl := (Sender as TWinControl)
else
Exit;
änderst? Sonst kann es nämlich passieren, dass in Deiner meinControl-Variablen irgendwelcher Müll drinsteht, da knallt es dann beim Zugriff darauf.
[edit] Oder mal im Ganzen ohne unnötige Klammern, Boolean-Vergleiche, Zugriffe auf die globale Form-Variable und Schreiben über die Zeilenanzahl des Memos hinaus, dafür aber mit Einrückungen:
Delphi-Quellcode:
procedure TForm3.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
meinControl: TControl;
j : integer; //Schleifen Variable
begin
MDown := true;
meinControl := nil;
if move then
begin
if Sender is TControl then
if Sender <> self then
meinControl := Sender as TControl;
if not Assigned(meinControl) then
exit;
while MDown do
begin
meinControl.Left := Mouse.CursorPos.x - Left - BorderWidth;
meinControl.Top := Mouse.CursorPos.y - Top - 50;
Application.ProcessMessages;
for j := 3 to Memo1.Lines.Count - 6 do
begin
if Memo1.Lines[j] = meinControl.Name then
begin
Memo1.Lines[j + 2] := inttostr(meinControl.BoundsRect.Left);
Memo1.Lines[j + 3] := inttostr(meinControl.BoundsRect.Top);
Memo1.Lines[j + 4] := inttostr(meinControl.Width);
Memo1.Lines[j + 5] := inttostr(meinControl.Height);
end;
end;
end;
end;
end;
[/edit]