summaryrefslogtreecommitdiff
path: root/extras/contributed/editgrid/u_demo.pas
diff options
context:
space:
mode:
Diffstat (limited to 'extras/contributed/editgrid/u_demo.pas')
-rw-r--r--extras/contributed/editgrid/u_demo.pas388
1 files changed, 388 insertions, 0 deletions
diff --git a/extras/contributed/editgrid/u_demo.pas b/extras/contributed/editgrid/u_demo.pas
new file mode 100644
index 00000000..6e42b597
--- /dev/null
+++ b/extras/contributed/editgrid/u_demo.pas
@@ -0,0 +1,388 @@
+unit u_demo;
+
+{$mode objfpc}{$H+}
+
+interface
+
+uses
+ Classes, SysUtils, dateutils,
+ fpg_main, fpg_base,
+ fpg_form, fpg_panel, fpg_button, fpg_basegrid, fpg_editcombo, fpg_checkbox, fpg_radiobutton,
+ u_editgrid;
+
+type
+ TF_Demo = class(TfpgForm)
+ private
+ EG_Grid: TfpgEditGrid;
+ Bt_AddOne: TfpgButton;
+ Ckb_Limits: TfpgCheckBox;
+ Ckb_FloatDec: TfpgCheckBox;
+ Ckb_FloatFixDec: TfpgCheckBox;
+ Ckb_EditWay: TfpgCheckBox;
+ Rb_Point: TfpgRadioButton;
+ Rb_Comma: TfpgRadioButton;
+ Ckb_Space: TfpgCheckBox;
+ Ckb_Thousand: TfpgCheckBox;
+ P_EditCombo: TfpgPanel;
+ Ckb_AutoComplete: TfpgCheckBox;
+ Rb_No: TfpgRadioButton;
+ Rb_Yes: TfpgRadioButton;
+ Rb_Ask: TfpgRadioButton;
+ Bt_Fermer: TfpgButton;
+ procedure EG_GridKeyPress(Sender: TObject; var KeyCode: word; var ShiftState: TShiftState;
+ var Consumed: Boolean);
+ procedure Bt_AddOneClick(Sender: TObject);
+ procedure Ckb_LimitsChange(Sender: TObject);
+ procedure Ckb_ThousandChange(Sender: TObject);
+ procedure Rb_Change(Sender: TObject);
+ procedure Ckb_SpaceChange(Sender: TObject);
+ procedure Ckb_FloatDecChange(Sender: TObject);
+ procedure Ckb_FloatFixDecChange(Sender: TObject);
+ procedure Ckb_EditWayChange(Sender: TObject);
+ procedure Ckb_AutoCompleteChange(Sender: TObject);
+ procedure Rb_EditComboChange(Sender: TObject);
+ procedure Bt_FermerClick(Sender: TObject);
+ public
+ constructor Create(AOwner: TComponent); override;
+ procedure AfterCreate; override;
+ end;
+
+var
+ F_Demo: TF_Demo;
+
+implementation
+
+var
+ ComboBoxListe: TStringList;
+
+procedure PopulateListe;
+begin
+ComboBoxListe:= TStringList.Create;
+ComboBoxListe.Add('one');
+ComboBoxListe.Add('two');
+ComboBoxListe.Add('three');
+ComboBoxListe.Add('four');
+ComboBoxListe.Add('five');
+end;
+
+procedure TF_Demo.EG_GridKeyPress(Sender: TObject; var KeyCode: word; var ShiftState: TShiftState;
+ var Consumed: Boolean);
+begin
+case KeyCode of
+ KeyInsert:
+ with EG_Grid do
+ begin
+ RowCount:= RowCount+1;
+ FocusCol:= 0;
+ FocusRow:= Pred(RowCount);
+ Consumed:= True;
+ end;
+ end;
+end;
+
+procedure TF_Demo.Bt_AddOneClick(Sender: TObject);
+var
+ ADate: TDateTime;
+begin
+with EG_Grid do
+ begin
+ RowCount:= RowCount+1;
+ Cells[0,Pred(RowCount)]:= 'No edit';
+ Cells[1,Pred(RowCount)]:= 'Row '+IntToStr(RowCount);
+ Cells[2,Pred(RowCount)]:= IntToStr(RowCount*RowCount*100);
+ Cells[3,Pred(RowCount)]:= FloatToStr(1000/RowCount);
+ Cells[4,Pred(RowCount)]:= FormatCurr('0.00',FloatToCurr(1000/RowCount));
+ Cells[5,Pred(RowCount)]:= ComboBoxListe[Pred(RowCount) mod ComboBoxListe.Count];
+ Cells[6,Pred(RowCount)]:= '';
+ if Odd(RowCount) then
+ Cells[7,Pred(RowCount)]:= 'True'
+ else
+ Cells[7,Pred(RowCount)]:= 'False';
+ ADate:= IncDay(Now,RowCount);
+ Dates[8]:= ADate;
+ Cells[8,Pred(RowCount)]:= FormatDateTime(EG_Grid.GridDateFormat[8], Adate);
+ end;
+end;
+
+procedure TF_Demo.Ckb_LimitsChange(Sender: TObject);
+var
+ Cpt: Integer;
+begin
+ with EG_Grid do
+ for Cpt:= 0 to Pred(ColumnCount) do
+ if Ckb_Limits.Checked then
+ case ColumnEditType[Cpt] of
+ etInteger:
+ begin
+ MaxIntValue[Cpt]:= 5000;
+ MinIntValue[Cpt]:= -1000;
+ end;
+ etFloat:
+ begin
+ MaxFloatValue[Cpt]:= 5000;
+ MinFloatValue[Cpt]:= -1000;
+ end;
+ etCurrency:
+ begin
+ MaxCurrValue[Cpt]:= 5000;
+ MinCurrValue[Cpt]:= -1000;
+ end;
+ end
+ else
+ case ColumnEditType[Cpt] of
+ etInteger, etFloat, etCurrency:
+ begin
+ NumericMaxLimit[Cpt]:= False;
+ NumericMinLimit[Cpt]:= False;
+ end;
+ end;
+end;
+
+procedure TF_Demo.Ckb_ThousandChange(Sender: TObject);
+var
+ Cpt: Integer;
+begin
+ with EG_Grid do
+ for Cpt:= 0 to Pred(ColumnCount) do
+ if Ckb_Thousand.Checked then
+ case ColumnEditType[Cpt] of
+ etInteger, etFloat, etCurrency:
+ NumericShowThousand[Cpt]:= True;
+ end
+ else
+ case ColumnEditType[Cpt] of
+ etInteger, etFloat, etCurrency:
+ NumericShowThousand[Cpt]:= False;
+ end;
+end;
+
+procedure TF_Demo.Rb_Change(Sender: TObject);
+var
+ Cpt: Integer;
+begin
+ with EG_Grid do
+ for Cpt:= 0 to Pred(ColumnCount) do
+ if Sender is TfpgRadioButton then
+ case (Sender as TfpgRadioButton).tag of
+ 0:
+ case ColumnEditType[Cpt] of
+ etInteger:
+ if Ckb_Space.Checked then
+ NumericThousandSeparator[Cpt] := ' '
+ else
+ NumericThousandSeparator[Cpt] := ',';
+ etFloat, etCurrency:
+ begin
+ NumericDecimalSeparator[Cpt] := '.';
+ if Ckb_Space.Checked then
+ NumericThousandSeparator[Cpt] := ' '
+ else
+ NumericThousandSeparator[Cpt] := ',';
+ end;
+ end;
+ 1:
+ case ColumnEditType[Cpt] of
+ etInteger, etFloat, etCurrency:
+ begin
+ NumericDecimalSeparator[Cpt] := ',';
+ if Ckb_Space.Checked then
+ NumericThousandSeparator[Cpt] := ' '
+ else
+ NumericThousandSeparator[Cpt] := '.';
+ end;
+ end;
+ end;
+end;
+
+procedure TF_Demo.Ckb_SpaceChange(Sender: TObject);
+var
+ Cpt: Integer;
+begin
+ with EG_Grid do
+ for Cpt:= 0 to Pred(ColumnCount) do
+ case ColumnEditType[Cpt] of
+ etInteger, etFloat, etCurrency:
+ begin
+ if Ckb_Space.Checked then
+ NumericThousandSeparator[Cpt] := ' '
+ else
+ if Rb_Point.Checked then
+ NumericThousandSeparator[Cpt] := ','
+ else
+ NumericThousandSeparator[Cpt] := '.';
+ end;
+ end;
+end;
+
+procedure TF_Demo.Ckb_FloatDecChange(Sender: TObject);
+var
+ Cpt: Integer;
+begin
+ with EG_Grid do
+ for Cpt:= 0 to Pred(ColumnCount) do
+ case ColumnEditType[Cpt] of
+ etFloat:
+ if Ckb_FloatDec.Checked then
+ begin
+ Ckb_FloatFixDec.Checked := False;
+ NumericDecimals[Cpt] := 3;
+ end
+ else
+ FloatFixedDecimals[Cpt] := -1;
+ end;
+end;
+
+procedure TF_Demo.Ckb_FloatFixDecChange(Sender: TObject);
+var
+ Cpt: Integer;
+begin
+ with EG_Grid do
+ for Cpt:= 0 to Pred(ColumnCount) do
+ case ColumnEditType[Cpt] of
+ etFloat:
+ if Ckb_FloatFixDec.Checked then
+ begin
+ Ckb_FloatDec.Checked := False;
+ FloatFixedDecimals[Cpt] := 3;
+ end
+ else
+ NumericDecimals[Cpt] := -1;
+ end;
+end;
+
+procedure TF_Demo.Ckb_EditWayChange(Sender: TObject);
+begin
+ if Ckb_EditWay.Checked then
+ EG_Grid.EditWay:= edRow
+ else
+ EG_Grid.EditWay:= edColumn;
+end;
+
+procedure TF_Demo.Ckb_AutoCompleteChange(Sender: TObject);
+var
+ Cpt: Integer;
+begin
+ with EG_Grid do
+ for Cpt:= 0 to Pred(ColumnCount) do
+ case ColumnEditType[Cpt] of
+ etEditCombo:
+ AutoComplete[Cpt] := Ckb_AutoComplete.Checked;
+ end;
+end;
+
+procedure TF_Demo.Rb_EditComboChange(Sender: TObject);
+var
+ Cpt: Integer;
+begin
+ with EG_Grid do
+ for Cpt:= 0 to Pred(ColumnCount) do
+ case ColumnEditType[Cpt] of
+ etEditCombo:
+ begin
+ if RB_No.Checked then
+ AllowNew[Cpt] := anNo;
+ if RB_Yes.Checked then
+ AllowNew[Cpt] := anYes;
+ if RB_Ask.Checked then
+ AllowNew[Cpt] := anAsk;
+ end;
+ end;
+end;
+
+procedure TF_Demo.Bt_FermerClick(Sender: TObject);
+begin
+ComboBoxListe.Free;
+Close;
+end;
+
+constructor TF_Demo.Create(AOwner: TComponent);
+var
+ Cpt: Integer;
+begin
+inherited Create(AOwner);
+Name:= 'F_Demo';
+WindowTitle:= 'EditGrid demo';
+SetPosition(0,0,1000,400);
+WindowPosition:= wpScreencenter;
+Sizeable:= False;
+PopulateListe;
+EG_Grid:= CreateEditGrid(Self,10,10,Width-20,Height-120);
+with EG_Grid do
+ begin
+ AddColumn('None',50,taCenter);
+ AddColumn('Text',100,etText);
+ AddColumn('Integer',90,etInteger,taRightJustify);
+ AddColumn('Float',90,etFloat,taRightJustify);
+ //FloatFixedDecimals[Pred(ColumnCount)]:= 3;
+ //NumericDecimals[Pred(ColumnCount)]:= 3;
+ AddColumn('Currency',90,etCurrency,taRightJustify);
+ AddColumn('ComboBox',120,etComboBox);
+ for Cpt:= 0 to Pred(ComboBoxListe.Count) do
+ AddComboItem(Pred(ColumnCount),ComboBoxListe[Cpt]);
+ AddColumn('EditCombo',120,etEditCombo);
+ AddEditcomboItem(Pred(ColumnCount),'un');
+ AddEditcomboItem(Pred(ColumnCount),'deux');
+ AddEditcomboItem(Pred(ColumnCount),'trois');
+ AddEditcomboItem(Pred(ColumnCount),'quatre');
+ AddEditcomboItem(Pred(ColumnCount),'cinq');
+ AutoComplete[Pred(ColumnCount)] := True;
+ AllowNew[Pred(ColumnCount)] := anAsk;
+ AddColumn('CheckBox',100,etCheckBox,taCenter);
+ BoxCheckedText[Pred(ColumnCount)] := 'True';
+ BoxUncheckedText[Pred(ColumnCount)] := 'False';
+ BoxDisplayText[Pred(ColumnCount)] := 'CheckBox';
+ AddColumn('Calendar',120,etCalendar,taCenter);
+ GridDateFormat[Pred(ColumnCount)] := LongDateFormat;
+ CalendarDateFormat[Pred(ColumnCount)] := ShortDateFormat;
+ DateValue[Pred(ColumnCount)] := Now;
+ WeekStartDay[Pred(ColumnCount)] := 1;
+ WeeklyHoliday[Pred(ColumnCount)] := 7;
+ DayColor[Pred(ColumnCount)] := clBlue;
+ HoliDayColor[Pred(ColumnCount)] := clRed;
+ SingleClickSelect[Pred(ColumnCount)] := True;
+ DefaultRowHeight:= 20;
+ HeaderHeight:= 22;
+ HeaderFontDesc:= 'bitstream vera sans-10:bold';
+// Options:= [go_HideFocusRect];
+ OnKeyPress:= @EG_GridKeyPress;
+ end;
+Bt_AddOne:= CreateButton(Self,20,Height-100,100,'Add 1 line',@Bt_AddOneClick,'');
+Ckb_Limits:= CreateCheckBox(Self,150,Height-100,'Limit min and max numeric values');
+Ckb_Limits.OnChange:= @Ckb_LimitsChange;
+Ckb_FloatDec:= CreateCheckBox(Self,150,Height-80,'Limit EditFloat to 3 decimals');
+Ckb_FloatDec.OnChange:= @Ckb_FloatDecChange;
+Ckb_FloatFixDec:= CreateCheckBox(Self,150,Height-60,'Set EditFloat to 3 decimals');
+Ckb_FloatFixDec.OnChange:= @Ckb_FloatFixDecChange;
+Ckb_EditWay:= CreateCheckBox(Self,150,Height-40,'Edit changing to next row');
+Ckb_EditWay.OnChange:= @Ckb_EditWayChange;;
+Rb_Point:= CreateRadioButton(Self,400,Height-100,'Point as decimal separator');
+Rb_Point.Tag:= 0;
+Rb_Point.OnChange:= @Rb_Change;
+Rb_Comma:= CreateRadioButton(Self,400,Height-80,'Comma as decimal separator');
+Rb_Comma.Tag:= 1;
+Rb_Comma.OnChange:= @Rb_Change;
+Ckb_Space:= CreateCheckBox(Self,400,Height-60,'Space as thousand separator');
+Ckb_Space.OnChange:= @Ckb_SpaceChange;
+Ckb_Thousand:= CreateCheckBox(Self,400,Height-40,'Show thousand separator');
+Ckb_Thousand.OnChange:= @Ckb_ThousandChange;
+Ckb_Thousand.Checked:= True;
+P_EditCombo:= CreatePanel(Self,650,Height-110,170,100,'EditCombo',bsFlat,taCenter,tlTop);
+Ckb_AutoComplete:= CreateCheckBox(P_EditCombo,10,20,'Auto Completion');
+Ckb_AutoComplete.OnChange:= @Ckb_AutoCompleteChange;
+Rb_No:= CreateRadioButton(P_EditCombo,10,40,'No new item');
+Rb_No.OnChange:= @Rb_EditComboChange;
+Rb_Yes:= CreateRadioButton(P_EditCombo,10,60,'Auto new item');
+Rb_Yes.OnChange:= @Rb_EditComboChange;
+Rb_Ask:= CreateRadioButton(P_EditCombo,10,80,'Confirm new item');
+Rb_Ask.OnChange:= @Rb_EditComboChange;
+Rb_Ask.Checked:= True;
+Bt_Fermer:= CreateButton(Self,Width-130,Height-40,100,'Close',@Bt_FermerClick,'stdimg.exit');
+end;
+
+procedure TF_Demo.AfterCreate;
+begin
+Rb_Point.Checked:= True;
+end;
+
+end.
+