diff options
Diffstat (limited to 'extras/contributed/editgrid/u_demo.pas')
-rw-r--r-- | extras/contributed/editgrid/u_demo.pas | 388 |
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. + |