Einzelnen Beitrag anzeigen

Freiwilderer

Registriert seit: 26. Mai 2009
163 Beiträge
 
Delphi 7 Enterprise
 
#1

Designer Programmierung, Felder verschieben

  Alt 16. Jun 2009, 15:48
Hi
und zwar schreibe ich momentan einen einfachen Designer für Masken.
Man wird TLables, TMaskEdits und TCheckboxes anglegen können (das funktioniert auch schon).
Außerdem kann man die Felder per positionsangaben an fixe stellen auf der Maske verschieben und morgen werde ich noch das Verschieben mit Strg+Pfeiltasten umsetzen.
Was auch schon geht, allerdings nicht so, wie ich es gerne hätte, und da kommen wir zu meiner eigentlichen Frage ist das verschieben per Drag and Drop, also per Maus.

über diese netten Zeilen kann ich die Felder nach belieben verschieben:
Delphi-Quellcode:
procedure TfrmMain.Felderverschieben(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
   if (Button = mbLeft) and (MaskDesign = True)then
    begin
     ReleaseCapture;
     TControl(Sender).Perform(wm_SysCommand, sc_Size or 1, 0);
    end;
end;
Felderverschieben ist dabei einfach die Procedure, die ich den während der Laufzeit zugeordneten Feldern unter MouseDown zuordne.

Da das so allerdings realtiv unsauber ist, das ich die Felder pixelweise verschieben kann, würde ich gerne eine Art Raster festlegen können.
Das heißt ich drücke auf einen knopf, um das Raster zu aktivieren und fortan kann ich die felder nur noch in 5-pixel schritten verschieben.

hat jemand ne idee, wie man das umsetzen könnte ? gibt es vielleicht sogar einen Parameter, den ich der wm_SysCommand funktion zuordnen kann ?

würde mich über anregungen und lösungsvorschläge sehr freuen,

mit freundlichen Grüßen

Freiwilderer
  Mit Zitat antworten Zitat