ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊ:
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;