You've already forked lazarus-ccr
cryptini component initial commit
Component V 0.1.2.0 Demo V 0.1.2.0 git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@5487 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
@ -0,0 +1,156 @@
|
||||
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.
|
Reference in New Issue
Block a user