Einzelnen Beitrag anzeigen

johny

Registriert seit: 12. Aug 2003
Ort: Koblenz
32 Beiträge
 
#14

Re: Unendliche Formen erzeugen (wenn nötig)

  Alt 21. Aug 2003, 23:22
Hallo Silent,
ich hoffe, du hast nichts dagegen, wenn ich deinen Thread noch ein wenig erweitere.

Diese Möglichkeit mehrere Fenster zu öffnen hat mir auch ein Stück weitergeholfen. Nur möchte ich das Fenster gerne per Drag&Drop verschieben können, wenn ich auf ein darauf angezeigtes Shape klicke. Bei einer 'normalen' Form geht das hiermit:

Delphi-Quellcode:
{ = DragAndDrop = }

var
 xPos, yPos: integer;

procedure TForm_Workspace_Canvas.Shape_BannerMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
 xPos := x; // x-Koordinate erfassen
 yPos := y; // y-Koordinate erfassen
end;

procedure TForm_Workspace_Canvas.Shape_BannerMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
 if HiWord(GetAsyncKeyState(VK_LBUTTON)) > 0 then
 begin
  Form_Workspace_Canvas.Left := Form_Workspace_Canvas.Left + X - xPos; // Verschieben
  Form_Workspace_Canvas.Top := Form_Workspace_Canvas.Top + Y - yPos; // Verschieben
 end;
end;
Aber wie kann ich diese Prozeduren einbinden, wenn das Fenster erst zur Laufzeit erzeugt wird:

Delphi-Quellcode:
procedure TForm_Workspace_Main.Menu_NewClick(Sender: TObject);
var
 Form_Workspace_Canvas : TForm;
 Shape_Banner : TShape;

begin

 // Form erzeugen
 Form_Workspace_Canvas := TForm.CreateNew(Application);
 Form_Workspace_Canvas.Left := 205;
 Form_Workspace_Canvas.Top := 35;
 Form_Workspace_Canvas.Height := 725;
 Form_Workspace_Canvas.Width := 815;
 Form_Workspace_Canvas.BorderStyle := bsNone;
 Form_Workspace_Canvas.Show;

 // Shape auf der Form erzeugen
 Shape_Banner := TShape.Create(Form_Workspace_Canvas);
 with Shape_Banner do
 begin
  Parent := Form_Workspace_Canvas;
  Left := 0;
  Top := 0;
  Width:= 807;
  Height:= 9;
  Brush.Color := clGray;
  Brush.Style := bsSolid;
  Name := 'Shape_Banner';
 end;

end;
  Mit Zitat antworten Zitat