You've already forked lazarus-ccr
157 lines
4.8 KiB
ObjectPascal
157 lines
4.8 KiB
ObjectPascal
![]() |
unit uInputSectionValuesForm;
|
||
|
|
||
|
{$mode objfpc}{$H+}
|
||
|
|
||
|
interface
|
||
|
|
||
|
uses
|
||
|
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
|
||
|
Buttons;
|
||
|
|
||
|
const
|
||
|
C_NUMBEROFCONTROLS = 8; // Only need to change it here
|
||
|
|
||
|
type
|
||
|
|
||
|
{ TInputSectionValuesForm }
|
||
|
|
||
|
TInputSectionValuesForm = class(TForm)
|
||
|
cmd_Cancel: TBitBtn;
|
||
|
cmd_Close: TBitBtn;
|
||
|
edt_NewSectionName: TEdit;
|
||
|
lbl_Invisible2: TLabel;
|
||
|
Lbl_SectionName: TLabel;
|
||
|
Grp_NewSectionValues: TGroupBox;
|
||
|
lbl_Invisible1: TLabel;
|
||
|
procedure edt_NewSectionNameEditingDone(Sender: TObject);
|
||
|
procedure FormCreate(Sender: TObject);
|
||
|
procedure FormShow(Sender: TObject);
|
||
|
private
|
||
|
procedure DisableSectionNameEdit;
|
||
|
procedure InitControls;
|
||
|
procedure ProcessCheckbox(Sender: TObject);
|
||
|
procedure ProcessValueEdit(Sender: TObject);
|
||
|
public
|
||
|
ValueLabelArray: array[0..C_NUMBEROFCONTROLS - 1] of TLabel;
|
||
|
IdentEditArray: array[0..C_NUMBEROFCONTROLS - 1] of TEdit;
|
||
|
ValueEditArray: array[0..C_NUMBEROFCONTROLS - 1] of TEdit;
|
||
|
ValueCheckBoxArray: array[0..C_NUMBEROFCONTROLS - 1] of TCheckBox;
|
||
|
sSectionName: string;
|
||
|
NumberOfControls: integer;
|
||
|
end;
|
||
|
|
||
|
var
|
||
|
InputSectionValuesForm: TInputSectionValuesForm;
|
||
|
|
||
|
implementation
|
||
|
|
||
|
{$R *.lfm}
|
||
|
|
||
|
{ TInputSectionValuesForm }
|
||
|
procedure TInputSectionValuesForm.InitControls;
|
||
|
var
|
||
|
iCount: integer;
|
||
|
begin
|
||
|
BeginFormUpdate;
|
||
|
NumberOfControls := High(ValueLabelArray) + 1;
|
||
|
for iCount := Low(ValueLabelArray) to High(ValueLabelArray) do
|
||
|
begin
|
||
|
ValueLabelArray[iCount] := TLabel.Create(Grp_NewSectionValues);
|
||
|
ValueLabelArray[iCount].Caption := Format('Key and Value %d', [iCount + 1]);
|
||
|
ValueLabelArray[iCount].Tag := iCount;
|
||
|
ValueLabelArray[iCount].parent := Grp_NewSectionValues;
|
||
|
|
||
|
IdentEditArray[iCount] := TEdit.Create(Grp_NewSectionValues);
|
||
|
IdentEditArray[iCount].Text := 'Input Key here';
|
||
|
IdentEditArray[iCount].Tag := iCount;
|
||
|
// IdentEditArray[iCount].OnEditingDone:=@ProcessEdit;
|
||
|
IdentEditArray[iCount].parent := Grp_NewSectionValues;
|
||
|
|
||
|
ValueEditArray[iCount] := TEdit.Create(Grp_NewSectionValues);
|
||
|
ValueEditArray[iCount].Text := 'Input value here';
|
||
|
ValueEditArray[iCount].Tag := iCount;
|
||
|
ValueEditArray[iCount].OnEditingDone := @ProcessValueEdit;
|
||
|
ValueEditArray[iCount].parent := Grp_NewSectionValues;
|
||
|
|
||
|
ValueCheckBoxArray[iCount] := TCheckBox.Create(Grp_NewSectionValues);
|
||
|
ValueCheckBoxArray[iCount].Caption := 'Integer?';
|
||
|
ValueCheckBoxArray[iCount].Checked := False;
|
||
|
ValueCheckBoxArray[iCount].Tag := iCount;
|
||
|
ValueCheckBoxArray[iCount].TabStop:=FALSE;
|
||
|
ValueCheckBoxArray[iCount].OnClick := @ProcessCheckbox;
|
||
|
ValueCheckBoxArray[iCount].parent := Grp_NewSectionValues;
|
||
|
end;
|
||
|
EndFormUpdate;
|
||
|
end;
|
||
|
|
||
|
procedure TInputSectionValuesForm.ProcessCheckbox(Sender: TObject);
|
||
|
// Triggered by OnClick event
|
||
|
var
|
||
|
TempCheckBox: TCheckBox;
|
||
|
iTag, iTest: integer;
|
||
|
begin
|
||
|
TempCheckBox := Sender as TCheckBox;
|
||
|
iTag := TempCheckBox.Tag;
|
||
|
// Validate associated Edit text
|
||
|
if ValueCheckBoxArray[iTag].Checked then
|
||
|
if (TryStrToInt(ValueEditArray[iTag].Text, iTest) = False) then
|
||
|
begin
|
||
|
ValueCheckBoxArray[iTag].Checked := False;
|
||
|
ShowMessageFmt('%s is not an Integer! Please edit it first.',
|
||
|
[ValueEditArray[iTag].Text]);
|
||
|
end;
|
||
|
end;
|
||
|
|
||
|
procedure TInputSectionValuesForm.ProcessValueEdit(Sender: TObject);
|
||
|
// Triggered by OnEditingDone event
|
||
|
var
|
||
|
TempEdit: TEdit;
|
||
|
iTag, iTest: integer;
|
||
|
|
||
|
begin
|
||
|
TempEdit := Sender as TEdit;
|
||
|
iTag := TempEdit.Tag;
|
||
|
// Auto check/uncheck associated checkbox
|
||
|
if TryStrToInt(TempEdit.Text, iTest) then
|
||
|
ValueCheckBoxArray[iTag].Checked := True
|
||
|
else
|
||
|
ValueCheckBoxArray[iTag].Checked := False;
|
||
|
// cmd_Close.SetFocus; // Enable this if you put a ShowMessage in this proc
|
||
|
end;
|
||
|
|
||
|
procedure TInputSectionValuesForm.DisableSectionNameEdit;
|
||
|
begin
|
||
|
edt_NewSectionName.Enabled := False;
|
||
|
end;
|
||
|
|
||
|
procedure TInputSectionValuesForm.FormCreate(Sender: TObject);
|
||
|
begin
|
||
|
Caption := Application.Title + ' - Make New Section';
|
||
|
Icon := Application.Icon;
|
||
|
InitControls;
|
||
|
sSectionName := edt_NewSectionName.Text;
|
||
|
end;
|
||
|
|
||
|
procedure TInputSectionValuesForm.edt_NewSectionNameEditingDone(Sender: TObject);
|
||
|
begin
|
||
|
sSectionName := edt_NewSectionName.Text;
|
||
|
end;
|
||
|
|
||
|
procedure TInputSectionValuesForm.FormShow(Sender: TObject);
|
||
|
var
|
||
|
iCount: integer;
|
||
|
begin
|
||
|
// Reinitialise controls
|
||
|
edt_NewSectionName.Enabled := True;
|
||
|
for iCount := 0 to NumberOfControls - 1 do
|
||
|
begin
|
||
|
;
|
||
|
IdentEditArray[iCount].Text := Format('Input Key %d here', [iCount + 1]);
|
||
|
ValueEditArray[iCount].Text := Format('Input value %d here', [iCount + 1]);
|
||
|
ValueCheckBoxArray[iCount].Checked := False;
|
||
|
end;
|
||
|
edt_NewSectionName.Text := 'My New Section';
|
||
|
end;
|
||
|
|
||
|
end.
|