Ein Form dockable machen

wolf_10de

Grünschnabel
Hi,
ich suche ne Möglichkeit in einem Form (SDI) ein zweites einzufügen und dieses dann 'dockable' zu machen sozusagen als 'Toolbox' für das Hauptformular.
Weiß einer wie das geht ?
danke im vorraus
 
ich hab das schon mal im delphiman gelesen...
kannst du damit was anfangen(delphi-code):
Code:
private
   procedure OnMove(var aMsg:TWMMove);message WM_MOVE;



procedure TForm1.OnMove(var aMsg:TWMMove);
begin  if Form1.Left < 20 then Form1.Left:=0;
  if Form1.Top < 20 then Form1.Top:=0;
  if Form1.Left+Form1.Width > Screen.Width-20 then
     Form1.Left:=Screen.Width-Form1.Width;
  if Form1.Top+Form1.Height > Screen.Height-20 then
     Form1.Top:=Screen.Height-Form1.Height;
end;
 
mh,
ne nicht wirklich, gibts da kein Control für das mein in das Form einbauen kann, bei dem Builder ist ein Beispiel dabei, da Blick ich aber nicht recht durf was die da treiben. Die haben da ein 'TDockableForm', nun weiß ich nicht ob die das selbst gemacht haben (abgeleitet halt) oder ob es ne Komponente ist, sowas muß es doch geben oder?

Trotzdem danke für dein Antwort
 
ok, ich versuch mal aus dem delphicode c++-code zu machen:
Code:
// Headerdatei (.h)
class TForm1 : public TForm
{
public:
// ...
		void __fastcall OnFormMove(TWMMove aMsg);
protected:
		BEGIN_MESSAGE_MAP
				VCL_MESSAGE_HANDLER(WM_MOVE, TWMMove, OnFormMove)
		END_MESSAGE_MAP(TForm)
};
// Cpp-Datei
void __fastcall TForm1::OnFormMove(TWMMove aMsg)
{
if( Left < 20 ) Left=0;
  if( Top < 20 ) Top=0;
  if( Left+Width > Screen->Width-20 )
	 Left=Screen->Width-Width;
  if( Top+Height > Screen->Height-20 )
	 Top=Screen->Height-Height;
}
Oops... Habs grade getestet und nicht(!) :( Form dockt nur an den Bildschirmrand...
TDockableForm ist selbst-definiert. Schneid dir doch Code aus der Unit raus(!)
 
Bin grad dabei mir den Code mal anzusehen, ist ziemlich undurchsichtig.
Trotzdem wundert es mich das es dafür keine Komponente gibt, sowas wird doch oft gebraucht, selbst der Builder hat sowas.

1000 Dank mal für Deine Mühe
 
Bei der Komponente die du docken willst muss DragKind auf dkDock und DragMode auf Automatic stehen. Bei der Komponente die als "Dockingstation" :) dienen soll muss
DockSite auf True stehen.
 
Test hat gesagt.:
Bei der Komponente die du docken willst muss DragKind auf dkDock und DragMode auf Automatic stehen. Bei der Komponente die als "Dockingstation" :) dienen soll muss
DockSite auf True stehen.


Ja,
tausend Dank nun kann ich zumindest mal die ein Form in die andere ziehen, nur leider ist sie dann verschwunden.:confused:
Warum steht da nix drüber in der Builder-Hilfe, oder bin ich blind?
 
Zurück