Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Замена Form на FormIni

Delphi , Программа и Интерфейс , Формы

Замена 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.

Here is the translation of the content into Russian:

Модифицирован код с заменой Form на FormIni:

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;

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


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Формы ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-01-29 02:18:26/0.0032880306243896/0