mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-05-09 11:12:39 +02:00
124 lines
2.6 KiB
ObjectPascal
124 lines
2.6 KiB
ObjectPascal
unit EditMain;
|
|
(* Multi-window editor example by DoDi <DrDiettrich1@aol.com>.
|
|
|
|
This example application only demonstrates the implementation and use of
|
|
multiple editor windows. It does not demonstrate any editing capabilities.
|
|
|
|
1. Open files from the menu.
|
|
2. Drag file tabs to dock edit pages somewhere else.
|
|
|
|
This is the first working version of dockable SynEdit components.
|
|
|
|
Done:
|
|
+ maintain a list of open editor windows (active window first)
|
|
+ open files in the (last) active editor window
|
|
|
|
*)
|
|
|
|
{$mode objfpc}{$H+}
|
|
{$DEFINE EditBook}
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
|
|
{$IFDEF EditBook}
|
|
fEditBook,
|
|
{$ELSE}
|
|
{$ENDIF}
|
|
Menus, fDockBook, fEditForm, SynEdit;
|
|
|
|
type
|
|
{$IFDEF EditBook}
|
|
TEditForm = TEditBook;
|
|
{$ELSE}
|
|
TEditForm = TEasyDockBook;
|
|
{$ENDIF}
|
|
TEasyEdit = TEditPage;
|
|
|
|
TMainForm = class(TForm)
|
|
MainMenu1: TMainMenu;
|
|
MenuItem1: TMenuItem;
|
|
mnClose: TMenuItem;
|
|
mnOpen: TMenuItem;
|
|
mnuFile: TMenuItem;
|
|
OpenDialog1: TOpenDialog;
|
|
procedure FormCreate(Sender: TObject);
|
|
procedure mnCloseClick(Sender: TObject);
|
|
procedure mnOpenClick(Sender: TObject);
|
|
private
|
|
//MyEdit: TEasyPages;
|
|
CurForm: TEditForm;
|
|
CurEdit: TEasyEdit;
|
|
public
|
|
function OpenFile(const AName: string): TObject;
|
|
end;
|
|
|
|
var
|
|
MainForm: TMainForm;
|
|
|
|
implementation
|
|
|
|
uses
|
|
uMakeSite;
|
|
|
|
{ TMainForm }
|
|
|
|
procedure TMainForm.FormCreate(Sender: TObject);
|
|
begin
|
|
TDockMaster.Create(self);
|
|
{
|
|
MyEdit := TEasyPages.Create(self);
|
|
MyEdit.Align := alClient;
|
|
MyEdit.Parent := self;
|
|
}
|
|
end;
|
|
|
|
procedure TMainForm.mnCloseClick(Sender: TObject);
|
|
begin
|
|
Close;
|
|
end;
|
|
|
|
procedure TMainForm.mnOpenClick(Sender: TObject);
|
|
begin
|
|
if OpenDialog1.Execute then begin
|
|
OpenFile(OpenDialog1.FileName);
|
|
end;
|
|
end;
|
|
|
|
function TMainForm.OpenFile(const AName: string): TObject;
|
|
begin
|
|
{$IFDEF EditBook}
|
|
if MRUEdit = nil then
|
|
MRUEdit := TEditForm.Create(self);
|
|
CurForm := MRUEdit;
|
|
{$ELSE}
|
|
if Editors = nil then
|
|
Editors := TList.Create;
|
|
if Editors.Count = 0 then begin
|
|
CurForm := TEasyDockBook.Create(self);
|
|
Editors.Add(CurForm);
|
|
end;
|
|
if CurForm = nil then
|
|
pointer(CurForm) := Editors.Items[0];
|
|
{$ENDIF}
|
|
//todo: load the file
|
|
CurEdit := TEasyEdit.Create(self);
|
|
//CurEdit.FloatingDockSiteClass := TEasyDockBook; //provisions there???
|
|
//if false then ManualFloat();
|
|
//CurEdit.Lines.LoadFromFile(AName);
|
|
CurEdit.LoadFile(AName);
|
|
//CurEdit.ManualDock(nil);
|
|
//CurEdit.ManualDock(CurForm, CurForm.pnlDock);
|
|
CurEdit.ManualDock(CurForm);
|
|
//make it visible
|
|
CurForm.Show;
|
|
Result := CurEdit; //or what?
|
|
end;
|
|
|
|
initialization
|
|
{$I editmain.lrs}
|
|
|
|
end.
|
|
|