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;