unit unit_spl;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, XMLConf, FileUtil, Forms, Controls, Graphics, Dialogs,
StdCtrls, ExtCtrls;
type
{ TForm1 }
TForm1 = class(TForm)
Memo1: TMemo;
Memo2: TMemo;
Splitter1: TSplitter;
XMLConfig1: TXMLConfig;
procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
procedure FormShow(Sender: TObject);
procedure StoreFormState;
procedure RestoreFormState;
private
public
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
procedure TForm1.StoreFormState;
begin
with XMLConfig1 do begin
SetValue('NormalLeft', Left);
SetValue('NormalTop', Top);
SetValue('NormalWidth', Width);
SetValue('NormalHeight', Height);
SetValue('RestoredLeft', RestoredLeft);
SetValue('RestoredTop', RestoredTop);
SetValue('RestoredWidth', RestoredWidth);
SetValue('RestoredHeight', RestoredHeight);
SetValue('WindowState', Integer(WindowState));
end;
end;
procedure TForm1.FormShow(Sender: TObject);
begin
RestoreFormState;
end;
procedure TForm1.FormClose(Sender: TObject; var CloseAction: TCloseAction);
begin
StoreFormState;
end;
procedure TForm1.RestoreFormState;
var
LastWindowState: TWindowState;
begin
with XMLConfig1 do begin
LastWindowState := TWindowState(GetValue('WindowState', Integer(WindowState)));
if LastWindowState = wsMaximized then begin
WindowState := wsNormal;
BoundsRect := Bounds(
GetValue('RestoredLeft', RestoredLeft),
GetValue('RestoredTop', RestoredTop),
GetValue('RestoredWidth', RestoredWidth),
GetValue('RestoredHeight', RestoredHeight));
WindowState := wsMaximized;
end else begin
WindowState := wsNormal;
BoundsRect := Bounds(
GetValue('NormalLeft', Left),
GetValue('NormalTop', Top),
GetValue('NormalWidth', Width),
GetValue('NormalHeight', Height));
end;
end;
end;
end.