Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π‘ΠΎΠ²Π΅Ρ‚Ρ‹ ΠΏΠΎ Delphi. ВСрсия 1.4.3 ΠΎΡ‚ 1.1.2001Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 91

Автор Π’Π°Π»Π΅Π½Ρ‚ΠΈΠ½ ΠžΠ·Π΅Ρ€ΠΎΠ²

Π­Ρ‚Π° функция ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ:

function ExecuteDialog(FormClass: TFormClass; var Data): Boolean;

Π― ΠΌΠΎΠ³Ρƒ Π²Π°ΠΌ Π΄Π°Ρ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ совСт: ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ всС ваши Ρ„ΠΎΡ€ΠΌΡ‹ наслСдниками ΠΎΠ΄Π½ΠΎΠ³ΠΎ класса, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ SetData ΠΈ GetData.

{ ----------------------- }

unit ExecFrms;

interface

uses Forms, Controls;

type TExecForm = class(TForm)

public

 procedure GetData(var Data); virtual; abstract;

 procedure SetData(var Data); virtual; abstract;

end;

TExecFormClass = class of TExecForm;


function ExecuteDialog(FormClass: TExecFormClass; var Data): Boolean;


implementation


function ExecuteDialog(FormClass: TExecFormClass; var Data): Boolean;

begin

 with FormClass.Create(Application) do try

  SetData(Data);

  Result := ShowModal = mrOK;

  if Result then GetData(Data);

 finally

  Release;

 end;

end;

end.

{ ----------------------- }

Как Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, я помСстил Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ExecuteDialog Π² Ρ‚ΠΎΡ‚ ΠΆΠ΅ самый ΠΌΠΎΠ΄ΡƒΠ»ΡŒ.

ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Delphi создаст Ρ„ΠΎΡ€ΠΌΡƒ, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅ Ρ„ΠΎΡ€ΠΌΡ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Π²Π΅Ρ‰ΠΈ:

1. Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚Π΅ ΠΏΡ€Π΅Π΄ΠΊΠ° Ρ„ΠΎΡ€ΠΌΡ‹, с TForm Π½Π° TExecForm;

2. Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ExecFrms Π² список ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ;

3. Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Ρ‚ΠΈΠΏ записи для хранСния Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… Π΄ΠΈΠ°Π»ΠΎΠ³Ρƒ; ΠΈ

4. ΠΏΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ SetData ΠΈ GetData.

{ ----------------------- }

unit MyDlgs;

interface

uses WinTypes, WinProcs, Classes, Graphics, Forms,Controls, Buttons, StdCtrls, Spin, ExtCtrls, ExecFrms;


type

 { Π—Π°ΠΏΠΈΡΡŒ для Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… модальной Ρ„ΠΎΡ€ΠΌΠ΅... }

 TMyDlgData = record

  FormCaption: string;

  FormWidth: Integer;

 end;


 TMyDlg = class(TExecForm)

  OKBtn: TBitBtn;

  CancelBtn: TBitBtn;

  HelpBtn: TBitBtn;

  Bevel1: TBevel;

  Edit1: TEdit;

  SpinEdit1: TSpinEdit;

 public

  procedure SetData(var Data); override;

  procedure GetData(var Data); override;

 end;


var MyDlg: TMyDlg;


implementation


{$R *.DFM}


procedure TMyDlg.SetData(var Data);

begin

 with TMyDlgData(Data) do begin

  Edit1.Text := FormCaption;

  SpinEdit1.Value := FormWidth;

 end;

end;


procedure TMyDlg.GetData(var Data);

begin

 with TMyDlgData(Data) do begin

  FormCaption := Edit1.Text;

  FormWidth := SpinEdit1.Value;

 end;

end;


end.

{ ----------------------- }

Π—Π°Ρ‚Π΅ΠΌ создаСм ΠΈ выполняСм Π΄ΠΈΠ°Π»ΠΎΠ³, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‚Π°ΠΊ:

{ Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ExecFrms ΠΈ MyDlgs Π² список USES Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎ модуля. }

procedure TForm1.GetNewCaptionAndWidthBtnClick(Sender: TObject);

var Data: TMyDlgData;

begin

Data.FormCaption := Caption;

 Data.FormWidth := Width;

 if ExecuteDialog(TMyDlg, Data) then begin

  Caption := Data.FormCaption;

  Width := Data.FormWidth;

 end;

end;

НС ΠΏΠΎΠ²Π΅Ρ€ΠΈΡ‚Π΅: Π΄Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π΅Ρ‰Π΅ со Π²Ρ€Π΅ΠΌΡ‘Π½ Turbo Vision!

– Ed Jordan

ОсвобоТдСниС экзСмпляров Ρ„ΠΎΡ€ΠΌΡ‹

Delphi 1

Π’ нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ конструктору ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡ‹. Π—Π°Ρ‚Π΅ΠΌ, ΠΏΡ€ΠΈ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ Ρ„ΠΎΡ€ΠΌΡ‹, ΠΌΡ‹ сбрасываСм эту ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ.

ЕстСствСнно, эта тСхнология ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚ написаниС Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, поэтому, Ссли Π²Ρ‹ Π½Π΅ располоТСны ΠΊ этому Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡŽ, пропуститС ΠΌΠΎΠ΅ дальнСйшСС повСствованиС.

TMyForm = class(TForm)

…

private

 FormVar: ^TMyForm;

public

 constructor Create(AOwner: TComponent; var AFormVar: TMyForm);

 destructor Destroy; override;

end;


constructor TMyForm.Create(AOwner: TComponent; var AFormVar: TMyForm);

begin

 FormVar := @AFormVar;

 inherited Create;

 .....

end;


destructor TMyForm.Destroy;

begin

 FormVar^ := nil;

 inherited Destroy;

end;


MyForm := TMyForm.Create(Self, MyForm);

MyOtherForm := TMyForm.Create(Self, MyOtherForm);

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€ΡƒΡˆΠ΅Π½ΠΈΠΈ ΠΎΠΊΠ½Π° автоматичСски сбрасываСт всС, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚Π΅ Π² AFormVar, Π² nil.

Как Π²Ρ‹, Π½Π°Π²Π΅Ρ€Π½ΠΎΠ΅, Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ»ΠΈ, частный Ρ‡Π»Π΅Π½ FormVar Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ являСтся ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ. Π’Π°ΠΊ, читая содСрТимоС памяти, адрСс ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ содСрТится Π² FormVar, ΠΌΡ‹ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡ‹. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ просто ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Π΅ Π² nil.

– Jeff Fisher 

УсловиС создания Π³Π»Π°Π²Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹?

Delphi 2 

БущСствуСт Π»ΠΈ Π² Delphi Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π³Π»Π°Π²Π½ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ ΠΏΠΎ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ? Π― Ρ…ΠΎΡ‡Ρƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ условиС IF (Π² зависимости ΠΎΡ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°) для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ какая Ρ„ΠΎΡ€ΠΌΠ° Π±ΡƒΠ΄Π΅Ρ‚ Π³Π»Π°Π²Π½ΠΎΠΉ ΠΏΡ€ΠΈ стартС прилоТСния. ЀактичСски Β«Π΄Ρ€ΡƒΠ³ΡƒΡŽΒ» Ρ„ΠΎΡ€ΠΌΡƒ НЕ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ.

Π₯ΠΈΡ‚Ρ€ΠΎΡΡ‚ΡŒ здСсь Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ прСдоставляСм компилятору вСсь Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ для создания Ρ„ΠΎΡ€ΠΌ ΠΊΠΎΠ΄, Π½ΠΎ Π½Π΅ допускаСм Π΅Π³ΠΎ выполнСния (IF FALSE THEN), ΠΏΡ€ΠΈ этом компилятор Π½Π΅ ругаСтся, Π° ΠΌΡ‹ Ρ‚Π΅ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ (Π²ΠΎ врСмя выполнСния прилоТСния) Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ ΠΈ создаСм Π³Π»Π°Π²Π½ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ. Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹ΠΉ .DPR-Ρ„Π°ΠΉΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈ стартС случайным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ ΠΈΠ· Π΄Ρ€ΡƒΡ… Ρ„ΠΎΡ€ΠΌ Π³Π»Π°Π²Π½ΡƒΡŽ:

begin

 IF FALSE THEN BEGIN

  Application.CreateForm(TForm1, Form1);

  Application.CreateForm(TForm2, Form2);

 END;

 Randomize;

 IF Random < 0.5 THEN Application.CreateForm(TForm1, Form1)

 ELSE Application.CreateForm(TForm2, Form2);

 Application.Run;

end.

ΠŸΠ°Ρ€Π° «подходящих» для CreateForm Ρ„ΠΎΡ€ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ Π² Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌΡ‹ΠΉ Π±Π»ΠΎΠΊ, Ρ‚Π΅ΠΌ самым приводя компилятор Π² состояниС свинячСго восторга.

– Neil Rubenking

ДинамичСскоС созданиС ΠΈ цикличСскоС связываниС Ρ„ΠΎΡ€ΠΌ

Π’Π΅ΠΌΠ°: ДинамичСскоС созданиС ΠΈ цикличСскоС связываниС Ρ„ΠΎΡ€ΠΌ

Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ простой ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ„ΠΎΡ€ΠΌΠ°ΠΌΠΈ?

Как ΠΌΠ½Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΊ ΠΌΠΎΠ΅ΠΉ ShowModal-Ρ„ΠΎΡ€ΠΌΠ΅?

Как ΠΌΠ½Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ экзСмпляры Ρ„ΠΎΡ€ΠΌ Π²ΠΎ врСмя выполнСния прилоТСния?

НСобходимый для осущСствлСния этого ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΎΡ‡Π΅Π½ΡŒ прост. Π’ ΠΌΠΎΠ΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ 3 Ρ„ΠΎΡ€ΠΌΡ‹ с ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ Mainform, Form1 ΠΈ Form2. На Mainform я установил ΠΊΠ½ΠΎΠΏΠΊΡƒ, которая Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Form1, ΠΈΠ· Π½Π΅Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ любоС количСство Ρ„ΠΎΡ€ΠΌ (ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ) Ρ‡Π΅Ρ€Π΅Π· ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ, располоТСнныС Π½Π° этих Ρ„ΠΎΡ€ΠΌΠ°Ρ…. Π’ ΠΌΠΎΠ΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ "ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅" происходит ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ„ΠΎΡ€ΠΌΠ°ΠΌΠΈ Form1 ΠΈ Form2.

Π¨Π°Π³ 1. РазмСститС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π²Π΅ строчки Π² сСкции interface Ρ‚ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹, которая Ρƒ вас Π±ΡƒΠ΄Π΅Ρ‚ Π³Π»Π°Π²Π½ΠΎΠΉ:

const

 mrNext = 100;

 mrPrevious = 101;

Π¨Π°Π³ 2. РазмСститС Π½Π° Π³Π»Π°Π²Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΈ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ события Π΅Π΅ наТатия:

var

 MyForm: TForm;

 R, CurForm: Integer;

begin

 R := 0;

 CurForm := 1;

 while R <> mrCancel do begin

  Case CurForm of

  1: MyForm := TForm1.Create(Application);

  2: MyForm := TForm2.Create(Application);

  end;

  try

  R := MyForm.ShowModal;

  finally

  MyForm.Free;

  end;

  case R of

  MrNext : Inc(CurForm);

  MrPrevious : Dec(CurForm);

  end;

  // эти 2 строчки позволят Π½Π°ΠΌ Π½Π΅ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π·Π° Π³Ρ€Π°Π½ΠΈΡ†Ρ‹

  if CurForm < 1 then CurForm := 2

  else if CurForm > 2 then CurForm  := 1;

 end; // while

end;

Π¨Π°Π³ 3. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Ρ„ΠΎΡ€ΠΌΡ‹ 1 ΠΈ 2 (ΠΈ Π»ΡŽΠ±Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅, ΠΊΠ°ΠΊΠΈΠ΅ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΠΌΠ΅Ρ‚ΡŒ) Π² список ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Ρ„ΠΎΡ€ΠΌΡ‹ mainform.

Π¨Π°Π³ 4. Π’ Ρ„ΠΎΡ€ΠΌΠ΅ Form1 ΠΈ Form2 Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ MainForm Π² список ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ (Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ Π²ΠΈΠ΄Π΅Π»ΠΈ константы.)

Π¨Π°Π³ 5. На Ρ„ΠΎΡ€ΠΌΡƒ Form1, Form2, ΠΈ всС ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅, Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ 2 TBitBtn'Π°, с Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°ΠΌΠΈ Β«NextΒ» ΠΈ Β«PreviousΒ». In the Onclick Events for these buttons add the following line of code.

Если это ΠΊΠ½ΠΎΠΏΠΊΠ° Next, Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅: ModalResult := mrNext;

Если это ΠΊΠ½ΠΎΠΏΠΊΠ° Previous, Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅: ModalResult := mrPrevious;