Hallo,
ich bin nun auf diesen Wiki-Artikel gestossen:
https://wiki.freepascal.org/Extending_the_IDE#Forms
Das Package habe ich danach versucht umzubauen. Leider lässt sich das Panel nicht docken. Hat jemand sowas schon mal gemacht?
Viele Grüße
Bernd
Code: Alles auswählen
unit MyDockedForm;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FormEditingIntf, MenuIntf, IDECommands, Forms, ExtCtrls,
Controls, Graphics, LCLType;
type
{ TMy_Form }
TMy_Form = class(TForm)
private
FPanel: TPanel;
procedure FPanelEndDock(Sender, Target: TObject; X, Y: Integer);
procedure OnCmdClick(Sender: TObject);
public
constructor CreateNew(AOwner: TComponent; Num: Integer = 0); override;
destructor Destroy; override;
published
//property YourProperty: integer read FYourProperty write FYourProperty;
end;
procedure Register;
var
Cmd: TIDEMenuCommand = nil;
AForm: TMy_Form = nil;
CmdMessageComposer: TIDECommand;
implementation
{ TMy_Form }
procedure TMy_Form.FPanelEndDock(Sender, Target: TObject; X, Y: Integer);
begin
close;
end;
procedure TMy_Form.OnCmdClick(Sender: TObject);
begin
Show;
end;
constructor TMy_Form.CreateNew(AOwner: TComponent; Num: Integer);
begin
inherited CreateNew(AOwner, Num);
Caption := 'My Docked Window';
SetBounds(100,100,500,800);
FPanel := TPanel.Create(Application.MainForm);
FPanel.Parent := self;
FPanel.Align := alClient;
FPanel.Constraints.MinWidth:= 100;
FPanel.Color := clYellow;
FPanel.DragKind := dkDock;
FPanel.DragMode := dmAutomatic;
FPanel.OnEndDock :=@FPanelEndDock;
end;
destructor TMy_Form.Destroy;
begin
FPanel.Free;
inherited Destroy;
end;
procedure Register;
var Key: TIDEShortCut;
Cat: TIDECommandCategory;
CmdMyTool: TIDECommand;
begin
FormEditingHook.RegisterDesignerBaseClass(TMy_Form);
AForm := TMy_Form.CreateNew(Application.MainForm,0);
// register IDE shortcut and menu item
Key := IDEShortCut(VK_M,[ssCtrl],VK_UNKNOWN,[]);
Cat:=IDECommandList.FindIDECommand(ecFind).Category;
CmdMyTool := RegisterIDECommand(Cat,'Öffne Fenster', 'Öffne Fenster', Key,@AForm.OnCmdClick, nil);
//Erzeugt den Menüeintrag:
Cmd := RegisterIDEMenuCommand(itmCustomTools, 'Show MyDockedWindow', 'Öffne Fenster', nil, nil, CmdMyTool);
end;
initialization
finalization
if assigned(AForm) then AForm.Free;
end.