Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
Замена Form на FormIni

Автор: Nick Hodges (Monterey, CA)


unit Formini;

{$IFDEF Production}
{$S-,R-,D-,L-,W-}
{$ENDIF}

{
TFormINI новая замена TForm, умеющая автоматически сохранять и восстанавливать
значения свойств Top, Left, Height, Width и WindowState
из программного INI-файла без какого-то либо программирования.

Код берет имя выполняемого файла из Application.EXEName и меняет
расширение на .INI.

В качестве имени секции при хранении величин в INI-файле,
TFormINI использует заголовок формы.

Просто замените все существующие объявления класса TForm на TFormINI,
и TFormINI позаботится обо всем остальном (в пределах функциональности).

Теперь ваши формы будут такие же, как и при их закрытии.

TMyForm = class(TForm) -> TMyForm = class(TFormINI)
}

interface

uses InIFiles, Forms, Controls, SysUtils, WinTypes, Classes;

type
  TFormINI = class(TForm)
  private
    PrgINI: TIniFile;
    FSection: string;
  protected
    procedure WriteInteger(Section, Ident: string; value: longint);
    function ReadInteger(Section, Ident: string; Default: longint): longint;
  public
    constructor Create(AOwner: TComponent); override;
    procedure CreateParams(var Params: TCreateParams); override;

    procedure DoShow; override;
    destructor Destroy; override;
  end;

implementation

constructor TFormINI.Create(AOwner: TComponent);
var
  INIFile: string;
begin
  INIFile := ExtractFileName(Application.EXEName);
  INIFile := ChangeFileExt(INIFile, '.INI');
  PrgINI := TIniFile.Create(INIFile);
  inherited Create(AOwner);
end;

procedure TFormINI.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
  with Params do
  begin
    FSection := StrPas(Caption);
    Y := ReadInteger('', 'Top', 0);
    X := ReadInteger('', 'Left', 0);
    Width := ReadInteger('', 'Width', Width);
    Height := ReadInteger('', 'Height', Height);
  end;
end;

procedure TFormINI.DoShow;
var
  aWindowState: integer;
begin
  aWindowState := ReadInteger('', 'WindowState', 0);
  case aWindowState of
    0: WindowState := wsNormal;
    1: WindowState := wsMinimized;
    2: WindowState := wsMaximized;
  end;
  inherited DoShow;
end;

procedure TFormINI.WriteInteger(Section, Ident: string; value: longint);
begin
  if Section = '' then
    PrgINI.WriteInteger(FSection, Ident, value)
  else
  begin
    PrgINI.WriteInteger(Section, Ident, value);
    FSection := Section;
  end;
end;

destructor TFormINI.Destroy;
begin
  if WindowState = wsNormal then
  begin
    WriteInteger('', 'Top', Top);
    WriteInteger('', 'Left', Left);
  end;
  WriteInteger('', 'Width', Width);
  WriteInteger('', 'Height', Height);
  case WindowState of
    wsNormal: WriteInteger('', 'WindowState', 0);
    wsMinimized: WriteInteger('', 'WindowState', 1);
    wsMaximized: WriteInteger('', 'WindowState', 2);
  end;
  PrgINI.Free;
  inherited Destroy;
end;

function TFormINI.ReadInteger(Section, Ident: string; Default: longint):
  longint;
begin
  if Section = '' then
    Result := PrgINI.ReadInteger(FSection, Ident, Default)
  else
  begin
    Result := PrgINI.ReadInteger(Section, Ident, Default);
    FSection := Section;
  end;
end;

end.

Проект Delphi World © Выпуск 2002 - 2004
Автор проекта: ___Nikolay