Einzelnen Beitrag anzeigen

Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.629 Beiträge
 
Delphi 12 Athens
 
#6

AW: Objekte Bewegen

  Alt 19. Aug 2013, 16:48
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]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen

Geändert von DeddyH (19. Aug 2013 um 17:30 Uhr)
  Mit Zitat antworten Zitat