lazarus/examples/testtools.inc
2017-01-29 21:04:32 +00:00

1266 lines
27 KiB
PHP

{%mainunit testallform.pp}
{
***************************************************************************
* *
* This source is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This code is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
* General Public License for more details. *
* *
* A copy of the GNU General Public License is available on the World *
* Wide Web at <http://www.gnu.org/copyleft/gpl.html>. You can also *
* obtain it by writing to the Free Software Foundation, *
* Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1335, USA. *
* *
***************************************************************************
}
//******************************************************************************
// TestTools.inc
//******************************************************************************
type
{ TArrDummy }
TArrDummy = class
arr: TArrow;
procedure OnRgTypeClick(Sender: TObject);
procedure OnRgShadowClick(Sender: TObject);
end;
procedure TArrDummy.OnRgTypeClick(Sender: TObject);
begin
if not Assigned(arr) then Exit;
arr.ArrowType := TArrowType(TRadioGroup(Sender).ItemIndex);
end;
procedure TArrDummy.OnRgShadowClick(Sender: TObject);
begin
if not Assigned(arr) then Exit;
arr.ShadowType := TShadowType(TRadioGroup(Sender).ItemIndex);
end;
procedure TForm1.TestArrow;
var
arr: TArrow;
dummy: TArrDummy;
rgtype, rgshadow: TRadioGroup;
begin
debugln('TForm1.TestArrow');
Clear;
arr := TArrow.Create(nil);
dummy := TArrDummy.Create;
dummy.arr := arr;
FObjList.Add(arr);
FObjList.Add(dummy);
ConnectStandardEvents(arr);
arr.Top := 5;
arr.Left := 5;
arr.Width := 30;
arr.Height := 30;
arr.Color := clRed;
arr.Parent := TestPnl;
rgtype := TRadioGroup.Create(nil);
FObjList.Add(rgtype);
rgtype.Items.AddStrings(['atUp', 'atDown', 'atLeft', 'atRight']);
rgtype.ItemIndex := Ord(arr.ArrowType);
rgtype.OnClick := @dummy.OnRgTypeClick;
rgtype.Left := arr.Left;
rgtype.Top := arr.Top + arr.Height + 20;
rgtype.Caption := 'ArrowType';
rgtype.Parent := TestPnl;
rgtype.AutoSize := True;
rgshadow := TRadioGroup.Create(nil);
FobjList.Add(rgshadow);
rgshadow.Items.AddStrings(['stNone', 'stIn', 'stOut', 'stEtchedIn', 'stEtchedOut', 'stFilled']);
rgshadow.ItemIndex := Ord(arr.ShadowType);
rgshadow.OnClick := @dummy.OnRgShadowClick;
rgshadow.Left := rgtype.Left + rgtype.Width + 20;
rgshadow.Top := rgtype.Top;
rgshadow.Caption := 'ShadowType';
rgshadow.Parent := TestPnl;
rgshadow.AutoSize := True;
end;
type
{ TBBDummy }
TBBDummy = class
B: TBitBtn;
procedure OnRgKindClick(Sender: TObject);
end;
{ TBBDummy }
procedure TBBDummy.OnRgKindClick(Sender: TObject);
begin
if not assigned(B) then Exit;
B.Kind := TBitBtnKind(TRadioGroup(Sender).ItemIndex);
B.ModalResult := mrNone;
if (B.Kind = bkCustom) then
begin
B.LoadGlyphFromResourceName(hInstance,'default');
B.Caption := 'Custom';
end;
end;
procedure TForm1.TestBitBtn;
var
Btn: TBitBtn;
dummy: TBBDummy;
rg: TRadioGroup;
begin
Clear;
Btn := TBitBtn.Create(nil);
dummy := TBBDummy.Create;
rg := TRadioGroup.Create(nil);
FObjList.Add(Btn);
FObjList.Add(dummy);
FObjList.Add(rg);
ConnectStandardEvents(Btn);
dummy.B := Btn;
Btn.Kind := bkOk;
Btn.ModalResult := mrNone;
Btn.AutoSize := True;
rg.Items.AddStrings(['bkCustom', 'bkOK', 'bkCancel', 'bkHelp', 'bkYes', 'bkNo',
'bkClose', 'bkAbort', 'bkRetry', 'bkIgnore', 'bkAll',
'bkNoToAll', 'bkYesToAll']);
rg.AutoSize := True;
rg.ItemIndex := Ord(Btn.Kind);
rg.OnClick := @dummy.OnRgKindClick;
Btn.Top := 10;
Btn.Left := 5;
rg.Top := Btn.Top + Btn.Height + 20;
rg.Left := Btn.Left;
Btn.Parent := TestPnl;
rg.Parent := TestPnl;
end;
{---------------- TButton; ----------------}
type
{ TButDummy }
TButDummy = class
Btn: TButton;
Tm: TTimer;
OldClick: TNotifyEvent;
procedure OnTimer(Sender: TObject);
procedure OnBtnClick(Sender: TObject);
end;
{ TButDummy }
procedure TButDummy.OnTimer(Sender: TObject);
var
PW, PH, BW, BH: Integer;
begin
if not Assigned(Btn) then Exit;
if not Assigned(Btn.Parent) then Exit;
PW := Btn.Parent.Width;
PH := Btn.Parent.Height;
BW := Btn.Width;
BH := Btn.Height;
Btn.Left := Random(PW-BW);
Btn.Top := Random(PH-BH);
end;
procedure TButDummy.OnBtnClick(Sender: TObject);
begin
OldClick(Sender);
if Tm.Enabled then
begin
OnTimer(Sender); //move the button first
Btn.Caption := Btn.Caption + '...';
Tm.Interval := Tm.Interval - 100;
if Tm.Interval < 500 then
begin
Tm.Enabled := False;
Btn.Caption := 'Stop hitting me!';
end;
end
else
begin
ShowMessage('I told you NOT to hit me!'^m^m'Game''s over!');
Btn.Enabled := False;
end;
end;
procedure TForm1.TestButton;
var
Btn: TButton;
Tm: TTimer;
dummy: TButDummy;
begin
Clear;
Btn := TButton.Create(nil);
Tm := TTimer.Create(nil);
dummy := TButDummy.Create;
FObjList.Add(Btn);
FObjList.Add(Tm); //Add it after Btn, so Tm will be destroyed before Btn!
FObjList.Add(dummy);
dummy.Btn := Btn;
dummy.Tm := Tm;
Btn.Caption := 'Click me ...';
Btn.AutoSize := True;
Btn.Top := 10;
Btn.Left := 5;
Btn.Cursor := crCross;
ConnectStandardEvents(Btn);
dummy.OldClick := Btn.OnClick;
Btn.OnClick := @dummy.OnBtnClick;
Btn.Parent := TestPnl;
Tm.Interval := 1000;
Tm.OnTimer := @dummy.OnTimer;
Tm.Enabled := True;
end;
{---------------- End of TButton; ---------}
{---------------- TButtonpanel; ----------------}
type
{ TBPDummy }
TBPDummy = class
bp: TButtonPanel;
cg: TCheckGroup;
rg: TRadioGroup;
procedure OnCgItemClick(Sender: TObject; Index: integer);
procedure OnRgClick(Sender: TObject);
end;
procedure TBPDummy.OnCgItemClick(Sender: TObject; Index: integer);
var
b: TPanelButton;
begin
if not assigned(bp) then Exit;
b := TPanelButton(Index);
if cg.Checked[Index] then
begin
bp.ShowButtons := bp.ShowButtons + [b];
end
else
begin
bp.ShowButtons := bp.ShowButtons - [b];
end;
if Assigned(bp.CloseButton) then bp.CloseButton.ModalResult := mrNo;
end;
procedure TBPDummy.OnRgClick(Sender: TObject);
begin
if not assigned(bp) then Exit;
bp.ButtonOrder := TButtonOrder(rg.ItemIndex);
end;
procedure TForm1.TestButtonpanel;
var
bp: TButtonPanel;
cg: TCheckGroup;
b: TPanelButton;
dummy: TBPDummy;
rg: TRadioGroup;
begin
Clear;
bp := TButtonPanel.Create(nil);
cg := TCheckGroup.Create(nil);
rg := TRadioGroup.Create(nil);
dummy := TBPDummy.Create;
FObjList.Add(bp);
FObjList.Add(cg);
FObjList.Add(rg);
FObjList.Add(dummy);
dummy.bp := bp;
dummy.cg := cg;
dummy.rg := rg;
if assigned(bp.CloseButton) then bp.CloseButton.ModalResult := mrNO; //otherwise it will close the application
ConnectStandardEvents(bp);
ConnectStandardEvents(bp.OKButton);
ConnectStandardEvents(bp.CancelButton);
ConnectStandardEvents(bp.CloseButton);
ConnectStandardEvents(bp.HelpButton);
cg.Items.AddStrings(['pbOK','pbCancel','pbClose','pbHelp']);
for b := Low(TPanelButton) to High(TPanelButton) do
if (b in bp.ShowButtons) then cg.Checked[Ord(b)] := True;
cg.OnItemClick := @dummy.OnCgItemClick;
cg.AutoSize := True;
cg.Caption := 'ShowButtons';
bp.Parent := TestPnl;
cg.Left := 5;
cg.Top := 20;
cg.Parent := TestPnl;
rg.Items.AddStrings(['boDefault', 'boCloseCancelOK', 'boCloseOKCancel']);
rg.ItemIndex := Ord(bp.ButtonOrder);
rg.Caption := 'ButtonOrder';
rg.Autosize := True;
rg.OnClick := @dummy.OnRgClick;
rg.Left := cg.Left + cg.Width + 20;
rg.Top := cg.Top;
rg.Parent := TestPnl;
end;
{---------------- End of TButtonpanel; ---------}
{---------------- TCalcedit; ----------------}
procedure TForm1.TestCalcedit;
begin
Clear;
end;
{---------------- End of TCalcedit; ---------}
{---------------- TCalendar; ----------------}
procedure TForm1.TestCalendar;
begin
Clear;
end;
{---------------- End of TCalendar; ---------}
{---------------- TCheckbox; ----------------}
procedure TForm1.TestCheckbox;
begin
Clear;
end;
{---------------- End of TCheckbox; ---------}
{---------------- TCheckcombobox; ----------------}
procedure TForm1.TestCheckcombobox;
begin
Clear;
end;
{---------------- End of TCheckcombobox; ---------}
{---------------- TCheckgroup; ----------------}
procedure TForm1.TestCheckgroup;
begin
Clear;
end;
{---------------- End of TCheckgroup; ---------}
{---------------- TChecklistbox; ----------------}
procedure TForm1.TestChecklistbox;
begin
Clear;
end;
{---------------- End of TChecklistbox; ---------}
{---------------- TColorbox; ----------------}
procedure TForm1.TestColorbox;
begin
Clear;
end;
{---------------- End of TColorbox; ---------}
{---------------- TColorbutton; ----------------}
procedure TForm1.TestColorbutton;
begin
Clear;
end;
{---------------- End of TColorbutton; ---------}
{---------------- TColorlistbox; ----------------}
procedure TForm1.TestColorlistbox;
begin
Clear;
end;
{---------------- End of TColorlistbox; ---------}
{---------------- TCombobox; ----------------}
procedure TForm1.TestCombobox;
begin
Clear;
end;
{---------------- End of TCombobox; ---------}
{---------------- TComboboxex; ----------------}
procedure TForm1.TestComboboxex;
begin
Clear;
end;
{---------------- End of TComboboxex; ---------}
{---------------- TControlbar; ----------------}
procedure TForm1.TestControlbar;
begin
Clear;
end;
{---------------- End of TControlbar; ---------}
{---------------- TCoolbar; ----------------}
procedure TForm1.TestCoolbar;
begin
Clear;
end;
{---------------- End of TCoolbar; ---------}
{---------------- TDateedit; ----------------}
procedure TForm1.TestDateedit;
begin
Clear;
end;
{---------------- End of TDateedit; ---------}
{---------------- TDirectoryedit; ----------------}
procedure TForm1.TestDirectoryedit;
begin
Clear;
end;
{---------------- End of TDirectoryedit; ---------}
{---------------- TEdit; ----------------}
procedure TForm1.TestEdit;
begin
Clear;
end;
{---------------- End of TEdit; ---------}
{---------------- TEditbutton; ----------------}
procedure TForm1.TestEditbutton;
begin
Clear;
end;
{---------------- End of TEditbutton; ---------}
{---------------- TFilelistbox; ----------------}
procedure TForm1.TestFilelistbox;
begin
Clear;
end;
{---------------- End of TFilelistbox; ---------}
{---------------- TFilenameedit; ----------------}
procedure TForm1.TestFilenameedit;
begin
Clear;
end;
{---------------- End of TFilenameedit; ---------}
{---------------- TFiltercombobox; ----------------}
procedure TForm1.TestFiltercombobox;
begin
Clear;
end;
{---------------- End of TFiltercombobox; ---------}
{---------------- TFloatspinedit; ----------------}
procedure TForm1.TestFloatspinedit;
begin
Clear;
end;
{---------------- End of TFloatspinedit; ---------}
{---------------- TGroupbox; ----------------}
procedure TForm1.TestGroupbox;
begin
Clear;
end;
{---------------- End of TGroupbox; ---------}
{---------------- THeadercontrol; ----------------}
procedure TForm1.TestHeadercontrol;
begin
Clear;
end;
{---------------- End of THeadercontrol; ---------}
{---------------- TImage; ----------------}
procedure TForm1.TestImage;
begin
Clear;
end;
{---------------- End of TImage; ---------}
{---------------- TLabel; ----------------}
procedure TForm1.TestLabel;
begin
Clear;
end;
{---------------- End of TLabel; ---------}
{---------------- TLabelededit; ----------------}
procedure TForm1.TestLabelededit;
begin
Clear;
end;
{---------------- End of TLabelededit; ---------}
{---------------- TListbox; ----------------}
procedure TForm1.TestListbox;
begin
Clear;
end;
{---------------- End of TListbox; ---------}
{---------------- TListview; ----------------}
procedure TForm1.TestListview;
begin
Clear;
end;
{---------------- End of TListview; ---------}
{---------------- TMaskedit; ----------------}
procedure TForm1.TestMaskedit;
begin
Clear;
end;
{---------------- End of TMaskedit; ---------}
{---------------- TMemo; ----------------}
procedure TForm1.TestMemo;
begin
Clear;
end;
{---------------- End of TMemo; ---------}
{---------------- TNotebook; ----------------}
procedure TForm1.TestNotebook;
begin
Clear;
end;
{---------------- End of TNotebook; ---------}
{---------------- TPagecontrol; ----------------}
procedure TForm1.TestPagecontrol;
begin
Clear;
end;
{---------------- End of TPagecontrol; ---------}
{---------------- TPaintbox; ----------------}
procedure TForm1.TestPaintbox;
begin
Clear;
end;
{---------------- End of TPaintbox; ---------}
{---------------- TPanel; ----------------}
procedure TForm1.TestPanel;
begin
Clear;
end;
{---------------- End of TPanel; ---------}
{---------------- TProgressbar; ----------------}
procedure TForm1.TestProgressbar;
begin
Clear;
end;
{---------------- End of TProgressbar; ---------}
{---------------- TRadiobutton; ----------------}
procedure TForm1.TestRadiobutton;
begin
Clear;
end;
{---------------- End of TRadiobutton; ---------}
{---------------- TRadiogroup; ----------------}
procedure TForm1.TestRadiogroup;
begin
Clear;
end;
{---------------- End of TRadiogroup; ---------}
{---------------- TShape; ----------------}
procedure TForm1.TestShape;
begin
Clear;
end;
{---------------- End of TShape; ---------}
{---------------- TShelllistview; ----------------}
procedure TForm1.TestShelllistview;
begin
Clear;
end;
{---------------- End of TShelllistview; ---------}
{---------------- TShelltreeview; ----------------}
procedure TForm1.TestShelltreeview;
begin
Clear;
end;
{---------------- End of TShelltreeview; ---------}
{---------------- TSpeedbutton; ----------------}
procedure TForm1.TestSpeedbutton;
begin
Clear;
end;
{---------------- End of TSpeedbutton; ---------}
{---------------- TSpinedit; ----------------}
procedure TForm1.TestSpinedit;
begin
Clear;
end;
{---------------- End of TSpinedit; ---------}
{---------------- TSplitter; ----------------}
procedure TForm1.TestSplitter;
begin
Clear;
end;
{---------------- End of TSplitter; ---------}
{---------------- TStacTictext; ----------------}
procedure TForm1.TestStacTictext;
begin
Clear;
end;
{---------------- End of TStacTictext; ---------}
{---------------- TStatusbar; ----------------}
procedure TForm1.TestStatusbar;
begin
Clear;
end;
{---------------- End of TStatusbar; ---------}
{---------------- TStringgrid; ----------------}
procedure TForm1.TestStringgrid;
begin
Clear;
end;
{---------------- End of TStringgrid; ---------}
{---------------- TTabcontrol; ----------------}
procedure TForm1.TestTabcontrol;
begin
Clear;
end;
{---------------- End of TTabcontrol; ---------}
{---------------- TTimeedit; ----------------}
procedure TForm1.TestTimeedit;
begin
Clear;
end;
{---------------- End of TTimeedit; ---------}
{---------------- TTimer; ----------------}
procedure TForm1.TestTimer;
begin
Clear;
end;
{---------------- End of TTimer; ---------}
{---------------- TTogglebox; ----------------}
procedure TForm1.TestTogglebox;
begin
Clear;
end;
{---------------- End of TTogglebox; ---------}
{---------------- TToolbar; ----------------}
procedure TForm1.TestToolbar;
begin
Clear;
end;
{---------------- End of TToolbar; ---------}
{---------------- TTrackbar; ----------------}
procedure TForm1.TestTrackbar;
begin
Clear;
end;
{---------------- End of TTrackbar; ---------}
{---------------- TTreeview; ----------------}
procedure TForm1.TestTreeview;
begin
Clear;
end;
{---------------- End of TTreeview; ---------}
{---------------- TUpdown; ----------------}
procedure TForm1.TestUpdown;
begin
Clear;
end;
{---------------- End of TUpdown; ---------}
{---------------- TValuelisteditor; ----------------}
procedure TForm1.TestValuelisteditor;
begin
Clear;
end;
{---------------- End of TValuelisteditor; ---------}
{--------------------------- End of Components -------------------------}
{--------------------------- Start of Dialogs ---------------------------}
const
MsgDlgBtnStr: array[TMsgDlgBtn] of String = (
'mbYes', 'mbNo', 'mbOK', 'mbCancel', 'mbAbort', 'mbRetry', 'mbIgnore',
'mbAll', 'mbNoToAll', 'mbYesToAll', 'mbHelp', 'mbClose'
);
MsgDlgTypeStr: array[TMsgDlgType] of String = (
'mtWarning', 'mtError', 'mtInformation',
'mtConfirmation', 'mtCustom'
);
function ModalResultToStr(Mr: TModalResult): String;
begin
case Mr of
mrNone: Result := 'mrNone';
mrOK: Result := 'mrOK';
mrCancel: Result := 'mrCancel';
mrAbort: Result := 'mrAbort';
mrRetry: Result := 'mrRetry';
mrIgnore: Result := 'mrInore';
mrYes: Result := 'mrYes';
mrNo: Result := 'mrNo';
mrAll: Result := 'mrAll';
mrNoToAll: Result := 'mrNoToAll';
mrYesToAll: Result := 'mrYesToAll';
mrClose: Result := 'mrClose';
else Result := IntToStr(Mr);
end;
end;
{---------------- MessageDialog; ----------------}
type
{ TMsgDlgDummmy }
TMsgDlgDummmy = class
ed: TEdit;
cg: TCheckGroup;
rg: TRadioGroup;
btn: TButton;
lbl: TLabel;
procedure OnBtnClick(Sender: TObject);
end;
{ TMsgDlgDummmy }
procedure TMsgDlgDummmy.OnBtnClick(Sender: TObject);
var
DT: TMsgDlgType;
Btns: TMsgDlgButtons;
i: Integer;
aMsg: TCaption;
Res: TModalResult;
begin
DT := TMsgDlgType(rg.ItemIndex);
aMsg := ed.Text;
if (aMsg = '')
then aMsg := 'You did not enter a message';
Btns := [];
for i := 0 to cg.Items.Count - 1 do
begin
if cg.Checked[i] then
Btns := Btns + [TMsgDlgBtn(i)];
end;
if (Btns = []) then
Btns := [mbOk];
Res := MessageDlg('MessageDlg test', aMsg, DT, Btns, 0);
lbl.Caption := 'Dialog result = ' + ModalResultToStr(Res);
end;
procedure TForm1.TestMessageDialog;
var
ed: TEdit;
cg: TCheckGroup;
rg: TRadioGroup;
dummy: TMsgDlgDummmy;
lbl: TLabel;
btn: TButton;
mdbtn: TMsgDlgBtn;
mdt: TMsgDlgType;
begin
Clear;
ed := TEdit.Create(nil);
cg := TCheckGroup.Create(nil);
rg := TRadioGroup.Create(nil);
btn := TButton.Create(nil);
lbl := TLabel.Create(nil);
dummy := TMsgDlgDummmy.Create;
FObjList.Add(ed);
FObjList.Add(cg);
FObjList.Add(rg);
FObjList.Add(btn);
FObjList.Add(lbl);
FObjList.Add(dummy);
dummy.ed := ed;
dummy.cg := cg;
dummy.rg := rg;
dummy.lbl := lbl;
btn.OnClick := @dummy.OnBtnClick;
ed.TextHint := 'Type your message here';
ed.Parent := TestPnl;
cg.Caption := 'Buttons';
for mdbtn := Low(TMsgDlgBtn) to High(TMsgDlgBtn) do
cg.Items.Add(MsgDlgBtnStr[mdbtn]);
cg.AutoSize := True;
cg.Parent := TestPnl;
rg.Caption := 'DialogType';
for mdt := Low(TMsgDlgType) to high(TMsgDlgType) do
rg.items.Add(MsgDlgTypeStr[mdt]);
rg.AutoSize := True;
rg.ItemIndex := Ord(mtInformation);
ed.Left := 5;
ed.Top := 10;
ed.Width := TestPnl.Width - 2*5;
cg.Left := 5;
cg.Top := ed.Top + ed.Height + 10;
rg.Left := cg.Left + cg.Width + 20;
rg.Top := cg.Top;
rg.Parent := TestPnl;
btn.Caption := 'Show dialog';
btn.AutoSize := True;
btn.Top := rg.Top + rg.Height + 20;
btn.Left := rg.Left;
btn.Parent := TestPnl;
lbl.Caption := '';
lbl.Top := btn.Top + btn.Height + 20;
lbl.Left := btn.Left;
lbl.Parent := TestPnl;
end;
{---------------- End of MessageDialog; ---------}
{---------------- CalculatorDialog; ----------------}
procedure TForm1.TestCalculatorDialog;
begin
Clear;
end;
{---------------- End of CalculatorDialog; ---------}
{---------------- CalendarDialog; ----------------}
procedure TForm1.TestCalendarDialog;
begin
Clear;
end;
{---------------- End of CalendarDialog; ---------}
{---------------- ColorDialog; ----------------}
procedure TForm1.TestColorDialog;
begin
Clear;
end;
{---------------- End of ColorDialog; ---------}
{---------------- FindDialog; ----------------}
procedure TForm1.TestFindDialog;
begin
Clear;
end;
{---------------- End of FindDialog; ---------}
{---------------- FontDialog; ----------------}
procedure TForm1.TestFontDialog;
begin
Clear;
end;
{---------------- End of FontDialog; ---------}
{---------------- OpenDialog; ----------------}
procedure TForm1.TestOpenDialog;
begin
Clear;
end;
{---------------- End of OpenDialog; ---------}
{---------------- OpenpictureDialog; ----------------}
procedure TForm1.TestOpenpictureDialog;
begin
Clear;
end;
{---------------- End of OpenpictureDialog; ---------}
{---------------- ReplaceDialog; ----------------}
procedure TForm1.TestReplaceDialog;
begin
Clear;
end;
{---------------- End of ReplaceDialog; ---------}
{---------------- SaveDialog; ----------------}
procedure TForm1.TestSaveDialog;
begin
Clear;
end;
{---------------- End of SaveDialog; ---------}
{---------------- SavepictureDialog; ----------------}
procedure TForm1.TestSavepictureDialog;
begin
Clear;
end;
{---------------- End of SavepictureDialog; ---------}
{---------------- SelectdirectoryDialog; ----------------}
type
{ TSelDirDlgDummmy }
TSelDirDlgDummy = class
cg : TCheckGroup;
btn: TButton;
ed: TEdit;
lbl: TLabel;
Sdd: TSelectDirectoryDialog;
Procedure OnBtnClick(sender:TObject);
end;
procedure TSelDirDlgDummy.OnBtnClick(sender: TObject);
var
Opts:TOpenOptions;
i: Integer;
begin
Opts:= [];
for i := 0 to cg.Items.Count - 1 do
if cg.Checked[i] then
Opts := Opts + [TOpenOption(i)];
if Opts = [] then
Opts := sdd.Options;
sdd.Options:=Opts;
if sdd.Execute then
lbl.Caption := 'Selected: ' + {ExtractFileDir}(sdd.FileName)
else
lbl.Caption := 'Dialog was canceled';
end;
procedure TForm1.TestSelectdirectoryDialog;
var
dummy: TSelDirDlgDummy;
cg : TCheckGroup;
btn: TButton;
ed: TEdit;
lbl:TLabel;
Sdd: TSelectDirectoryDialog;
i: Integer;
opt: TOpenOption;
begin
Clear;
ed := TEdit.Create(nil);
sdd := TSelectDirectoryDialog.Create(nil);
btn := TButton.Create(nil);
cg := TCheckGroup.Create(nil);
lbl := TLabel.Create(nil);
FObjList.Add(ed);
FObjList.Add(sdd);
FObjList.Add(btn);
FObjList.Add(cg);
FObjList.Add(lbl);
dummy := TSelDirDlgDummy.Create;
FObjList.Add(dummy);
dummy.ed := ed;
dummy.Sdd := Sdd;
dummy.btn := btn;
dummy.cg :=cg;
dummy.lbl := lbl;
ed.TextHint := 'Enter a Start-Directory here';
ed.Parent := TestPnl;
ed.Top:=7;
ed.left:=5;
ed.width := TestPnl.Width - 120;
ed.Anchors:=ed.Anchors + [akRight];
btn.Caption:= 'Select Directory';
btn.AutoSize:=true;
btn.Top:=ed.top -2;
btn.left:=ed.Left + ed.Width + 4;
btn.parent := TestPnl;
btn.onclick := @dummy.OnBtnClick;
btn.Anchors:=ed.Anchors + [akRight]-[akLeft];
for opt := Low(TOpenOption) to High(TOpenOption) do
cg.Items.Add(DbgS(opt));
cg.Caption := 'OpenOptions';
cg.ColumnLayout:=clVerticalThenHorizontal;
cg.Columns:=2;
cg.Parent := TestPnl;
cg.Left := 5;
cg.AutoSize := True;
cg.Top := btn.Top + btn.Height + 10;
cg.Anchors:=cg.Anchors + [akRight,akBottom];
for i := 0 to cg.Items.Count - 1 do
cg.Checked[i]:= TOpenOption(i) in sdd.Options;
lbl.Top := cg.Top + cg.Height + 10;
lbl.Left := cg.Left;
lbl.Caption := '';
lbl.Parent := TestPnl;
end;
{---------------- End of SelectdirectoryDialog; ---------}
{---------------- QuesionDialog; ----------------}
type
TQRange = 1..3;
const
QAnsStrings: array[TQRange] of String = (
'Appels', 'Pears', 'Programmers');
QAnsResults: array[TQRange] of Integer = (
-1, -2, -3);
type
{ TQuesionDlgDummmy }
TQuesionDlgDummmy = class
qed, a1ed, a2ed, a3ed: TEdit;
rg: TRadioGroup;
btn: TButton;
lbl: TLabel;
procedure OnBtnClick(Sender: TObject);
end;
procedure TQuesionDlgDummmy.OnBtnClick(Sender: TObject);
var
DT: TMsgDlgType;
aMsg: TCaption;
Res: TModalResult;
Ans: Array[TQRange] of String;
i: TQRange;
begin
DT := TMsgDlgType(rg.ItemIndex);
aMsg := qed.Text;
Ans[1] := a1ed.Text;
Ans[2] := a2ed.Text;
Ans[3] := a3ed.Text;
if (aMsg = '') then
begin
if (Ans[1]='') and (Ans[2]='') and (Ans[3]='') then
begin
aMsg := 'Which fruit do you prefer?';
for i := Low(TQRange) to High(TQRange) do Ans[i] := QAnsStrings[i];
end
else
aMsg := 'The question is undefined: answer as best as you can anyway ...';
end;
for i := Low(TQRange) to High(TQRange) do
if (Ans[i] = '') then Ans[i] := Format('Undefined answer [%d]',[i]);
//Res := QuestionDlg('QuestionDlg test', aMsg, DT, [mrYes,'&Yes','isDefault',mrNo, '&No'], 0);
Res := QuestionDlg('QuestionDlg test', aMsg, DT,
[QAnsResults[1], Ans[1],
QAnsResults[2], Ans[2],
QAnsResults[3], Ans[3] ], 0);
if (-Res in [-QAnsResults[Low(QAnsResults)]..-QAnsResults[High(QAnsResults)]]) then
lbl.Caption := Format('You chose: "%s"',[Ans[-Res]])
else
lbl.Caption := 'You chose nothing';
end;
procedure TForm1.TestQuestionDialog;
var
dummy: TQuesionDlgDummmy;
qed, a1ed, a2ed, a3ed: TEdit;
btn: TButton;
rg: TRadioGroup;
mdt: TMsgDlgType;
lbl: TLabel;
begin
Clear;
qed := TEdit.Create(nil);
a1ed := TEdit.Create(nil);
a2ed := TEdit.Create(nil);
a3ed := TEdit.Create(nil);
rg := TRadioGroup.Create(nil);
btn := TButton.Create(nil);
lbl := TLabel.Create(nil);
FObjList.Add(btn);
FObjList.Add(qed);
FObjList.Add(a1ed);
FObjList.Add(a2ed);
FObjList.Add(a3ed);
FObjList.Add(rg);
FObjList.Add(lbl);
dummy := TQuesionDlgDummmy.Create;
FObjList.Add(dummy);
dummy.qed := qed;
dummy.a1ed := a1ed;
dummy.a2ed := a2ed;
dummy.a3ed := a3ed;
dummy.btn := btn;
dummy.rg := rg;
dummy.lbl := lbl;
qed.TextHint := 'Type your question here';
qed.Left := 5;
qed.Top := 10;
qed.Width := TestPnl.Width - 2*5;
qed.Parent := TestPnl;
a1ed.Left := qed.Left;
a1ed.Width := qed.Width;
a1ed.Top := qed.Top + qed.Height + 10;
a1ed.MaxLength := 40;
//a1ed.Text := QAnsStrings[1];
a1ed.TextHint := 'Type the first answer here';
a1ed.Parent := TestPnl;
a2ed.Left := a1ed.Left;
a2ed.Width := qed.Width;
a2ed.Top := a1ed.Top + a1ed.Height + 10;
a2ed.MaxLength := 40;
//a2ed.Text := QAnsStrings[2];
a2ed.TextHint := 'Type the second answer here';
a2ed.Parent := TestPnl;
a3ed.Left := a2ed.Left;
a3ed.Width := qed.Width;
a3ed.Top := a2ed.Top + a2ed.Height + 10;
a3ed.MaxLength := 40;
//a3ed.Text := QAnsStrings[3];
a3ed.TextHint := 'Type the third answer here';
a3ed.Parent := TestPnl;
rg.Caption := 'DialogType';
for mdt := Low(TMsgDlgType) to high(TMsgDlgType) do
rg.items.Add(MsgDlgTypeStr[mdt]);
rg.AutoSize := True;
rg.ItemIndex := Ord(mtConfirmation);
rg.Left := qed.Left;
rg.Top := a3ed.Top + a3ed.Height + 10;
rg.Parent := TestPnl;
btn.OnClick := @dummy.OnBtnClick;
btn.Caption := 'Show dialog';
btn.AutoSize := True;
btn.Top := rg.Top + rg.Height + 20;
btn.Left := rg.Left;
btn.Parent := TestPnl;
lbl.Top := btn.Top;
lbl.Left := btn.Left + btn.Width + 10;;
lbl.Caption := '';
lbl.Parent := TestPnl;
end;
{---------------- End of QuesionDialog; ---------}