⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 saveformsize.pas

📁 《Delphi百例》源码?禗elphi百例》源码
💻 PAS
字号:
unit SaveFormSize;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,Registry;

type
  TSaveMode = (smPositionOnly, smSizeOnly, smAll);

  TSaveFormSize = class(TComponent)
  private
    { Private declarations }
    Modus: TSaveMode;
    FCompany: String;
    FProduct: String;
    FSubKey: String;
  protected
    { Protected declarations }
  public
    { Public declarations }
    procedure Save;
    procedure Load;
  published
    { Published declarations }
    property Company: String Read FCompany Write FCompany;
    property ProductName: String Read FProduct Write FProduct;
    property SubKey: String Read FSubKey Write FSubKey;
    property SaveMode:TSaveMode Read Modus Write Modus;
  end;

procedure Register;

implementation

var
  Reg: TRegistry;

procedure Register;
begin
  RegisterComponents('Samples', [TSaveFormSize]);
end;

procedure TSaveFormSize.Load;
var Key: String;
begin
  Reg:=TRegistry.Create;
  Reg.RootKey:=HKEY_LOCAL_MACHINE;
  Key:='\SOFTWARE\';
  if Trim(FCompany) <> '' then Key:=Key + FCompany;
  if Trim(FProduct) <> '' then Key:=Key + '\' + FProduct;
  if Trim(FSubKey) <> '' then Key:=Key + '\' + FSubKey;
  if Reg.OpenKey(Key, True) then begin
    if (Modus = smAll) or (Modus = smPositionOnly) then begin
      if Reg.ValueExists(TForm(Owner).Name + '.Left') then
        TForm(Owner).Left:=Reg.ReadInteger(TForm(Owner).Name + '.Left');
      if Reg.ValueExists(TForm(Owner).Name + '.Top') then
        TForm(Owner).Top:=Reg.ReadInteger(TForm(Owner).Name + '.Top');
    end;
    if (Modus = smAll) or (Modus = smSizeOnly) then begin
      if Reg.ValueExists(TForm(Owner).Name + '.Width') then
        TForm(Owner).Width:=Reg.ReadInteger(TForm(Owner).Name + '.Width');
      if Reg.ValueExists(TForm(Owner).Name + '.Height') then
        TForm(Owner).Height:=Reg.ReadInteger(TForm(Owner).Name + '.Height');
    end;
    if Reg.ValueExists(TForm(Owner).Name + '.State') then
      TForm(Owner).WindowState:=TWindowState(Reg.ReadInteger(TForm(Owner).Name + '.State'));
  end;
  Reg.Free;
end;

procedure TSaveFormSize.Save;
var Key: String;
begin
  Reg:=TRegistry.Create;
  Reg.RootKey:=HKEY_LOCAL_MACHINE;
  Key:='\SOFTWARE\';
  if Trim(FCompany) <> '' then Key:=Key + FCompany;
  if Trim(FProduct) <> '' then Key:=Key + '\' + FProduct;
  if Trim(FSubKey) <> '' then Key:=Key + '\' + FSubKey;
  if Reg.OpenKey(Key, True) then begin
    if TForm(Owner).WindowState = wsNormal then begin
      if (Modus = smAll) or (Modus = smPositionOnly) then begin
        Reg.WriteInteger(TForm(Owner).Name + '.Left', TForm(Owner).Left);
        Reg.WriteInteger(TForm(Owner).Name + '.Top', TForm(Owner).Top);
      end;
      if (Modus = smAll) or (Modus = smSizeOnly) then begin
        Reg.WriteInteger(TForm(Owner).Name + '.Width', TForm(Owner).Width);
        Reg.WriteInteger(TForm(Owner).Name + '.Height', TForm(Owner).Height);
      end;
    end;
    Reg.WriteString(TForm(Owner).Name + '.Caption', TForm(Owner).Caption);
    Reg.WriteInteger(TForm(Owner).Name + '.State', Ord(TForm(Owner).WindowState))
  end;
  Reg.Free;
end;

end.
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -