Einzelnen Beitrag anzeigen

oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#20

Re: Komponente im Raster verschieben

  Alt 17. Aug 2007, 09:21
Hallo SirThomberry,

erst mal herzlichen Dank für die Hilfe. Das klappt jetzt super für wm_Sizing. Alles ohne Zappeln und wie gewollt im Raster. Für wm_moving aber leider nicht.
Folgende Erscheinung. Bewege ich das Control mit der Maus nach rechts oben, macht er aus einem Pixel Move 10 Pixel. Somit wandert das Control mit 10-facher Geschwindigkeit von meiner Maus nach oben/rechts weg. Nach links/unten geht gar nichts. Das erscheint normal, wenn man davon ausgeht, das jedes neue moving von den aktuellen Controlposition + Mausoffset ausgeht. Das es dann nicht nach rechts/unten klappt ist logischerweise auf mein Div zurückzuführen. aber warum ist das nur beim Moving und nicht beim Sizing so? Sizing ist in alle Richtungen so wie ich es haben will.

Hier der veränderte Code:
Delphi-Quellcode:
Procedure TBaseCustomControl.GetRastControlRect(var ARect: PRect);
begin
  if not Grid then begin
    Exit;
  end;
  ARect.Left := (ARect.Left Div FGridWidth) * FGridWidth;
  ARect.Top := (ARect.Top Div FGridWidth) * FGridWidth;
  ARect.Right := (ARect.Right Div FGridWidth) * FGridWidth;
  ARect.Bottom := (ARect.Bottom Div FGridWidth) * FGridWidth;
end;

procedure TBaseCustomControl.WMMoving(var AMsg: TMessage);
var ARect : PRect;
begin
  if not Grid then
    Exit;
  ARect := PRect(AMsg.lParam);
  GetRastControlRect(ARect);
end;

procedure TBaseCustomControl.WMSizing(var AMsg: TMessage);
var ARect : PRect;
begin
  if not Grid then
    Exit;
  ARect := PRect(AMsg.lParam);
  GetRastControlRect(ARect);
end;
Herzlichen Dank für deine Gedult und Gruß oki
42
  Mit Zitat antworten Zitat