/
YakuninAV
/
Convertors
Обзор
Документация
Войти
/
YakuninAV
/
Convertors
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
PIR/PIRTableConfigForm.pas
168 строк
5 KB
YakuninAV
begin with gitflick
31 июл 2026, 15:21
31 июл 2026, 15:21
1dc0fc6
Код
Авторство
О чём код?
unit PIRTableConfigForm; {$I Synopse.inc} interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ComCtrls, Vcl.ExtCtrls, Vcl.Buttons, SynCommons, PIRImportConsts, PIRTypes; type TformTableConfig = class(TForm) Panel1: TPanel; edtID: TEdit; edtName: TEdit; chkRowID: TCheckBox; edtRowQty: TEdit; udRowQty: TUpDown; edtColQty: TEdit; cbbTableKind: TComboBox; cbbPriceKind: TComboBox; cbbMeashureOfPrice: TComboBox; udColQty: TUpDown; Panel2: TPanel; mmoSource: TMemo; dlgFont: TFontDialog; dlgColor: TColorDialog; btnFont: TBitBtn; btnColor: TBitBtn; udCol: TUpDown; udRow: TUpDown; edtCol: TEdit; edtRow: TEdit; cbbSrcType: TComboBox; cbbItemName: TComboBox; BitBtn1: TBitBtn; procedure FormActivate(Sender: TObject); procedure FormCreate(Sender: TObject); procedure BitBtn1Click(Sender: TObject); procedure cbbItemNameChange(Sender: TObject); private { Private declarations } Initialized: Boolean; FTableDescriptor: TPIRTableDescriptor; FDoc: PDocVariantData; FKeyNotify: TOnKeyNotify; procedure SetTableDescriptor(const Value: TPIRTableDescriptor); function GetStrListFromEnum(aTypeInfo: pointer; lst: TStrings): Integer; procedure SetDoc(const Value: PDocVariantData); procedure ShowConfig; procedure FillConfig; procedure SaveItem; public { Public declarations } property TableDescriptor: TPIRTableDescriptor read FTableDescriptor write SetTableDescriptor; property Doc: PDocVariantData read FDoc write SetDoc; property KeyNotify: TOnKeyNotify read FKeyNotify write FKeyNotify; end; var formTableConfig: TformTableConfig; implementation {$R *.dfm} procedure TformTableConfig.BitBtn1Click(Sender: TObject); begin FillConfig; if Assigned(KeyNotify) then FKeyNotify(Self,'Apply'); end; procedure TformTableConfig.cbbItemNameChange(Sender: TObject); var t: TPIRItemDescriptor; begin end; procedure TformTableConfig.FillConfig; begin FTableDescriptor.ID:=edtID.Text; FTableDescriptor.Name:=edtName.Text; FTableDescriptor.RowID:=chkRowID.Checked; udRowQty.Position:=FTableDescriptor.RowCount; udColQty.Position:=FTableDescriptor.ColCount; FTableDescriptor.RowCount:=udRowQty.Position; FTableDescriptor.ColCount:=udColQty.Position; FTableDescriptor.Kind:= TPIRTableKind(cbbTableKind.ItemIndex); FTableDescriptor.PriceKind:= TPIRTablePriceKind(cbbPriceKind.ItemIndex); FTableDescriptor.MeashureOfPrice:=TPIRTableMeashureOfPrice(cbbMeashureOfPrice.ItemIndex); end; procedure TformTableConfig.FormActivate(Sender: TObject); begin if not Initialized then begin Initialized:=True; GetStrListFromEnum(TypeInfo(TPIRTableKind), cbbTableKind.Items); GetStrListFromEnum(TypeInfo(TPIRTablePriceKind), cbbPriceKind.Items); GetStrListFromEnum(TypeInfo(TPIRTableMeashureOfPrice), cbbMeashureOfPrice.Items); end; end; procedure TformTableConfig.FormCreate(Sender: TObject); begin Initialized:=False; end; function TformTableConfig.GetStrListFromEnum(aTypeInfo: pointer; lst: TStrings): Integer; var arr: TRawUTF8DynArray; r: RawUTF8; begin if (aTypeInfo<>nil) and Assigned(lst) then begin lst.Clear; arr := GetEnumTrimmedNames(aTypeInfo); Result:= Length(arr); if Result<=0 then Exit; for r in arr do lst.Add(UTF8ToString(r)); end else Result:=-1; end; procedure TformTableConfig.SaveItem; var t: TPIRItemDescriptor; begin t.SrcType:=pirTSTAddress; case t.SrcType of pirTSTConst: t:= TPIRItemDescriptor.Create(pirTSTConst, mmoSource.Lines.Text); pirTSTAddress: t:= TPIRItemDescriptor.Create(TPIRTableCell.Create(udRow.Position,udCol.Position)); pirTSTText: t:= TPIRItemDescriptor.Create(pirTSTText, mmoSource.Lines.Text); pirTSTNameTail: t:= TPIRItemDescriptor.Create(pirTSTNameTail, mmoSource.Lines.Text); end; t.Color:=pirDefaultColor; t.Font:=''; if cbbItemName.ItemIndex=0 then begin FTableDescriptor.RC_Name:=t; end else if cbbItemName.ItemIndex=1 then begin FTableDescriptor.RC_Unit:=t; end else if cbbItemName.ItemIndex=2 then begin FTableDescriptor.RC_Data:=t; end; end; procedure TformTableConfig.SetDoc(const Value: PDocVariantData); begin FDoc := Value; FTableDescriptor:= TPIRTableDescriptor.Create(Value); ShowConfig; end; procedure TformTableConfig.SetTableDescriptor(const Value: TPIRTableDescriptor); begin FTableDescriptor := Value; ShowConfig; end; procedure TformTableConfig.ShowConfig; begin if not Initialized then FormActivate(self); edtID.Text:=FTableDescriptor.ID; edtName.Text:=FTableDescriptor.Name; chkRowID.Checked:=FTableDescriptor.RowID; udRowQty.Position:=FTableDescriptor.RowCount-1; udColQty.Position:=FTableDescriptor.ColCount-1; cbbTableKind.ItemIndex:=Ord(FTableDescriptor.Kind); cbbPriceKind.ItemIndex:=Ord(FTableDescriptor.PriceKind); cbbMeashureOfPrice.ItemIndex:=Ord(FTableDescriptor.MeashureOfPrice); end; end.