expertcad/SRC/SCSNormBase/U_MakeEditPropRel.pas
2025-05-12 10:07:51 +03:00

1052 lines
36 KiB
ObjectPascal
Raw Blame History

unit U_MakeEditPropRel;
interface
uses
Windows, U_LNG, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, RzButton, ExtCtrls, RzPanel, StdCtrls, RzCmboBx, RzRadChk, Mask,
RzEdit, kbmMemTable,
U_BaseCommon, U_Common, U_BaseConstants, U_SCSComponent, U_SCSLists,{Tolik 03/10/2018 -- }U_ProtectionCommon, RzSpnEdt, DB, siComp, siLngLnk, cxControls,
cxContainer, cxEdit, cxTextEdit, cxMaskEdit, Buttons,{Tolik} form3d;
type
TOnCheckPropRelValue = function (ASender: TObject; AProp: PProperty; aDataSetProps: TDataSet): Boolean of Object;
TF_MakeEditPropRel = class(TForm)
RzGroupBox1: TRzGroupBox;
RzGroupBox2: TRzGroupBox;
btOk: TRzBitBtn;
btCancel: TRzBitBtn;
Label_Value: TLabel;
lbValue: TLabel;
cbName: TRzComboBox;
Label1: TLabel;
RzGroupBox3: TRzGroupBox;
cbTakeIntoJoin: TRzCheckBox;
cbTakeIntoComplect: TRzCheckBox;
deValue: TRzDateTimeEdit;
colorbValue: TRzColorComboBox;
cbValue: TRzCheckBox;
cbCompStateType: TRzComboBox;
edValue: TRzEdit;
cbIsTakeJoinForPoints: TRzCheckBox;
pnCrossControl: TRzPanel;
cbIsCrossControl: TRzCheckBox;
cbCrossProperty: TRzComboBox;
cbCableCanalElemntTypes: TRzComboBox;
seValue: TRzSpinEdit;
RzPanel1: TRzPanel;
Label_SysName: TLabel;
Label4: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label10: TLabel;
edSysName: TRzEdit;
edIzm: TRzEdit;
cbDataType: TRzComboBox;
cbValueReq: TRzCheckBox;
edDescription: TRzEdit;
seMinValue: TRzSpinEdit;
seMaxValue: TRzSpinEdit;
deMinValue: TRzDateTimeEdit;
deMaxValue: TRzDateTimeEdit;
Label2: TLabel;
pnIsForWholeComponent: TRzPanel;
cbIsForWholeComponent: TRzCheckBox;
lng_Forms: TsiLangLinked;
pnSectionSideValue: TRzPanel;
cbSectionSideValue: TRzComboBox;
btSectionSideValue: TSpeedButton;
btChoiceProperty: TSpeedButton;
btChoiceCrossProperty: TSpeedButton;
cbItemList: TRzComboBox;
meStringListDef: TRzMemo;
BtnLoad3DSModel: TBitBtn;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure cbNameChange(Sender: TObject);
procedure btOkClick(Sender: TObject);
procedure cbIsCrossControlClick(Sender: TObject);
procedure cbTakeIntoJoinClick(Sender: TObject);
procedure cbTakeIntoComplectClick(Sender: TObject);
procedure btChoicePropertyClick(Sender: TObject);
procedure btChoiceCrossPropertyClick(Sender: TObject);
procedure cbValueReqMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure cbValueReqKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure seValueKeyPress(Sender: TObject; var Key: Char);
procedure btSectionSideValueClick(Sender: TObject);
procedure cbItemListChange(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure seValueChange(Sender: TObject);
procedure BtnLoad3DSModelClick(Sender: TObject);
private
GForm: TForm;
FDataSet: TDataSet;
FProperty: PProperty;
FPropertyData: TPropertyData;
FMakeEdit: TMakeEdit;
FTableKind: TTableKind;
FItemFilter: String;
FItemType: Integer;
FMemTableProps: TkbmMemTable;
FSpravochnik: TSpravochnik;
FLastTubeConnectcKind: Integer;
FLastBasementType: Integer;
FLastTypeItem: TIntList;
FValueControl: TWinControl;
FOnCheckPropRelValue: TOnCheckPropRelValue;
function ChoiceProperty(AComboBox, AOtherComboBox: TRzComboBox): Boolean;
function DefineItemFilter(AItemType: Integer): String;
procedure SetControls;
public
property PropertyData: TPropertyData read FPropertyData;
constructor Create(AOwner: TComponent; AForm: TForm);
destructor Destroy; override;
function Execute(AMakeEdit: TMakeEdit; ATableKind: TTableKind;
AProperty: PProperty; ADataSet: TDataSet; AItemType: TItemType;
AMemTableProps: TkbmMemTable; ASpravochnik: TSpravochnik;
AOnCheckPropRelValue: TOnCheckPropRelValue=nil): Boolean;
procedure FormDataToProperty(var aProp: TProperty);
function GetPropertValue: String;
function MinMaxControl(AValue: String; var AMessages: String; APropData: TPropertyData): Boolean;
function SetPropertyParams(AIDProperty: Integer; AGUIDProperty: String; var APropertyData: TPropertyData): Boolean;
procedure SetPropertyValue(AValue, ASysName: String);
end;
//var
// F_MakeEditPropRel: TF_MakeEditPropRel;
implementation
Uses U_Main, Unit_DM_SCS;
{$R *.dfm}
{ TF_MakeEditPropRel }
constructor TF_MakeEditPropRel.Create(AOwner: TComponent; AForm: TForm);
begin
GForm := AForm;
inherited Create(AOwner);
end;
destructor TF_MakeEditPropRel.Destroy;
begin
inherited;
end;
function TF_MakeEditPropRel.Execute(AMakeEdit: TMakeEdit;
ATableKind: TTableKind; AProperty: PProperty; ADataSet: TDataSet; AItemType: TItemType;
AMemTableProps: TkbmMemTable; ASpravochnik: TSpravochnik; AOnCheckPropRelValue: TOnCheckPropRelValue=nil): Boolean;
var
SavedOnChange: TNotifyEvent;
//OldTick, CurrTick: Cardinal;
begin
//OldTick := GetTickCount;
// Tolik 03/10/2018 - -
BtnLoad3DSModel.Enabled := False;
//
Result := false;
Caption := '';
FProperty := AProperty;
ZeroMemory(@FPropertyData, SizeOf(FPropertyData));
FMakeEdit := AMakeEdit;
FDataSet := ADataSet;
FTableKind := ATableKind;
FItemType := AItemType;
FItemFilter := DefineItemFilter(AItemType);
FMemTableProps := AMemTableProps;
FSpravochnik := ASpravochnik;
FValueControl := nil;
FOnCheckPropRelValue := AOnCheckPropRelValue;
FLastTubeConnectcKind := -1;
FLastBasementType := -1;
FLastTypeItem.Fill(-1, dtLast);
SavedOnChange := cbName.OnChange;
cbName.OnChange := nil;
cbName.Items.BeginUpdate;
cbCrossProperty.Items.BeginUpdate;
cbSectionSideValue.Items.BeginUpdate;
try
TF_Main(GForm).FNormBase.DM.LoadInputStringsToTStrings(cbSectionSideValue.Items, stDimensions);
cbName.Sorted := true; //30.09.2011
cbCrossProperty.Sorted := true; //30.09.2011
if ASpravochnik <> nil then
begin
//30.09.2011 ASpravochnik.LoadPropertiesToStrings(cbName.Items, true);
//30.09.2011 ASpravochnik.LoadPropertiesToStrings(cbCrossProperty.Items, true);
ASpravochnik.LoadPropertiesToStrings(cbName.Items, true, false);
ASpravochnik.LoadPropertiesToStrings(cbCrossProperty.Items, true, false);
end
else
if AMemTableProps = nil then
begin
FillComboBoxRz(cbName, F_NormBase, true, tnProperties, fnID, fnName, '', 0, '', FItemFilter);
FillComboBoxRz(cbCrossProperty, F_NormBase, true, tnProperties, fnID, fnName, '', 0, '', FItemFilter);
end
else
begin
FillComboBoxRzFromMT(cbName, AMemTableProps, true, fnID, fnName, '', 0, '');
FillComboBoxRzFromMT(cbCrossProperty, AMemTableProps, true, fnID, fnName, '', 0, '');
end;
btChoiceProperty.Visible := (AMemTableProps = nil);
case AMakeEdit of
meMake:
begin
Caption := cMakeEditPropRel_Msg1_1;
cbTakeIntoComplect.Checked := false;
cbTakeIntoJoin.Checked := false;
cbIsTakeJoinForPoints.Checked := false;
cbIsCrossControl.Checked := false;
SelectItemByIDinComboRz(cbName, 0);
SelectItemByIDinComboRz(cbCrossProperty, 0);
//SetPropertyParams(0, '', AProperty);
end;
meEdit:
begin
Caption := cMakeEditPropRel_Msg1_2;
if TF_Main(GForm).GDBMode = bkNormBase then
begin
SelectItemByIDinComboRz(cbName, AProperty.ID_Property);
SelectItemByIDinComboRz(cbCrossProperty, AProperty.IDCrossProperty);
end
else
begin
SelectItemByGUIDinComboRz(cbName, AProperty.GUIDProperty);
SelectItemByGUIDinComboRz(cbCrossProperty, AProperty.GUIDCrossProperty);
end;
cbTakeIntoComplect.Checked := IntToBool(AProperty.TakeIntoConnect);
cbTakeIntoJoin.Checked := IntToBool(AProperty.TakeIntoJoin);
cbIsTakeJoinForPoints.Checked := IntToBool(AProperty.IsTakeJoinforPoint);
cbIsCrossControl.Checked := IntToBool(AProperty.IsCrossControl);
//SetPropertyParams(AProperty.ID_Property, AProperty.GUIDProperty, FPropertyData);
//SetPropertyValue(AProperty.Value);
end;
end;
SetPropertyParams(AProperty.ID_Property, AProperty.GUIDProperty, FPropertyData);
SetPropertyValue(AProperty.Value, AProperty.SysName);
finally
cbName.OnChange := SavedOnChange;
cbName.Items.EndUpdate;
cbCrossProperty.Items.EndUpdate;
cbSectionSideValue.Items.EndUpdate;
end;
cbIsCrossControlClick(cbIsCrossControl);
SetControls;
//CurrTick := GetTickCount - OldTick;
//CurrTick := GetTickCount - OldTick;
if ShowModal = mrOk then
begin
Result := true;
{//01.10.2012
AProperty.Value := GetPropertValue;
AProperty.ID_Property := GetIDFromComboBoxRz(cbName);
AProperty.IDDataType := FPropertyData.IDDataType;
AProperty.TakeIntoConnect := BoolToInt(cbTakeIntoComplect.Checked);
AProperty.TakeIntoJoin := BoolToInt(cbTakeIntoJoin.Checked);
AProperty.IsTakeJoinforPoint := BoolToInt(cbIsTakeJoinForPoints.Checked);
AProperty.IsCrossControl := BoolToInt(cbIsCrossControl.Checked);
AProperty.IDCrossProperty := GetIDFromComboBoxRz(cbCrossProperty);
AProperty.GUIDProperty := GetGUIDFromComboBoxRz(cbName); //F_NormBase.DM.GetStringFromTableByID(tnProperties, fnGuid, AProperty.ID_Property, qmPhisical);
AProperty.GUIDCrossProperty := GetGUIDFromComboBoxRz(cbCrossProperty); //F_NormBase.DM.GetStringFromTableByID(tnProperties, fnGuid, AProperty.IDCrossProperty, qmPhisical);
AProperty.Name_ := FPropertyData.Name;
AProperty.SysName := FPropertyData.SysName;
AProperty.IsForWholeComponent := FPropertyData.IsForWholeComponent;}
FormDataToProperty(AProperty^);
end;
end;
procedure TF_MakeEditPropRel.FormDataToProperty(var aProp: TProperty);
begin
aProp.Value := GetPropertValue;
aProp.ID_Property := GetIDFromComboBoxRz(cbName);
aProp.IDDataType := FPropertyData.IDDataType;
aProp.TakeIntoConnect := BoolToInt(cbTakeIntoComplect.Checked);
aProp.TakeIntoJoin := BoolToInt(cbTakeIntoJoin.Checked);
aProp.IsTakeJoinforPoint := BoolToInt(cbIsTakeJoinForPoints.Checked);
aProp.IsCrossControl := BoolToInt(cbIsCrossControl.Checked);
aProp.IDCrossProperty := GetIDFromComboBoxRz(cbCrossProperty);
aProp.GUIDProperty := GetGUIDFromComboBoxRz(cbName); //F_NormBase.DM.GetStringFromTableByID(tnProperties, fnGuid, AProperty.ID_Property, qmPhisical);
aProp.GUIDCrossProperty := GetGUIDFromComboBoxRz(cbCrossProperty); //F_NormBase.DM.GetStringFromTableByID(tnProperties, fnGuid, AProperty.IDCrossProperty, qmPhisical);
aProp.Name_ := FPropertyData.Name;
aProp.SysName := FPropertyData.SysName;
aProp.IsForWholeComponent := FPropertyData.IsForWholeComponent;
end;
function TF_MakeEditPropRel.GetPropertValue: String;
var
DataType: Integer;
ValueFloat: Double;
begin
Result := '';
DataType := GetIDFromComboBoxRz(cbDataType);
try
Case DataType of
dtFloat:
begin
ValueFloat := seValue.Value;
PropValueInUOM(ValueFloat, FPropertyData.SysName, TF_Main(GForm).FUOM, umMetr);
Result := FloatToStrU(ValueFloat);
end;
dtInteger:
begin
ValueFloat := Int(seValue.Value);
PropValueInUOM(ValueFloat, FPropertyData.SysName, TF_Main(GForm).FUOM, umMetr);
Result := FloatToStrU(Int(ValueFloat)); //IntToStr(Round(seValue.Value));
end;
dtBoolean:
begin
Result := IntToStr(BoolToInt(cbValue.Checked));
end;
dtString:
begin
Result := edValue.Text;
end;
dtDate:
begin
Result := DateToStrU(deValue.Date);
end;
dtCompStateType:
begin
Result := IntTostr(GetIDFromComboBoxRz(cbCompStateType));
end;
dtColor:
begin
Result := IntToStr(colorbValue.SelectedColor);
end;
dtCableCanalElementType:
begin
Result := IntTostr(GetIDFromComboBoxRz(cbCableCanalElemntTypes));
//CheckBox_PNotNull.Enabled := false;
//CheckBox_PNotNull.Checked := false;
end;
dtDimensions:
Result := cbSectionSideValue.Text; //meSectionSideValue.Text;
dtConnectionKind, dtBasementType, dtPlaneMaterialType, dtRoofHipType, dtRoofHipApexType, dtRoofHipValleyType:
Result := IntToStr(GetIDFromComboBoxRz(cbItemList));
dtStringList:
Result := meStringListDef.Lines.Text;
end;
except
end;
end;
function TF_MakeEditPropRel.MinMaxControl(AValue: String; var AMessages: String; APropData: TPropertyData): Boolean;
begin
Result := True;
//if (seMinValue.Enabled) and (seMaxValue.Enabled) then
case APropData.IDDataType of
dtFloat, dtInteger: // 0 or 1
begin
if APropData.MinValue <> 0 then
if StrToFloatU(AValue) < APropData.MinValue then
begin
AMessages := cMakeEditPropRel_Msg2_1;
Result := false;
end;
if seMaxValue.Value <> 0 then
if StrToFloatU(AValue) > APropData.MaxValue then
begin
AMessages := cMakeEditPropRel_Msg2_2;
Result := false;
end;
end;
dtDate:
begin
if APropData.MinValue <> 0 then
if StrToDateU(AValue) < APropData.MinValue then
begin
AMessages := cMakeEditPropRel_Msg2_3;
Result := false;
end;
if deMaxValue.Date <> 0 then
if StrToDateU(AValue) > APropData.MaxValue then
begin
AMessages := cMakeEditPropRel_Msg2_4;
Result := false;
end;
end;
end;
{case APropData.IDDataType of
dtFloat, dtInteger: // 0 or 1
begin
if seMinValue.Value <> 0 then
if StrToFloatU(AValue) < seMinValue.Value then
begin
AMessages := cMakeEditPropRel_Msg2_1;
Result := false;
end;
if seMaxValue.Value <> 0 then
if StrToFloatU(AValue) > seMaxValue.Value then
begin
AMessages := cMakeEditPropRel_Msg2_2;
Result := false;
end;
end;
dtDate:
begin
if deMinValue.Date <> 0 then
if StrToDateU(AValue) < deMinValue.Date then
begin
AMessages := cMakeEditPropRel_Msg2_3;
Result := false;
end;
if deMaxValue.Date <> 0 then
if StrToDateU(AValue) > deMaxValue.Date then
begin
AMessages := cMakeEditPropRel_Msg2_4;
Result := false;
end;
end;
end;}
end;
function TF_MakeEditPropRel.SetPropertyParams(AIDProperty: Integer; AGUIDProperty: String; var APropertyData: TPropertyData): Boolean;
var
PropertyData: TPropertyData;
SpinEditDecimals: Integer;
ValueFloat: Double;
begin
Result := false;
ZeroMemory(@PropertyData, SizeOf(TPropertyData));
PropertyData := TF_Main(GForm).DM.GetPropertyData(AIDProperty, AGUIDProperty, FSpravochnik);
if (PropertyData.ID = 0) and (PropertyData.GUID = '') then //11.01.2011
PropertyData := TF_Main(GForm).FNormBase.DM.GetPropertyData(AIDProperty, AGUIDProperty, FSpravochnik); //11.01.2011
if (PropertyData.ID <> 0) or (PropertyData.GUID <> '') then
begin
Result := true;
APropertyData := PropertyData;
end;
if Result then
BtnLoad3DSModel.Enabled := (PropertyData.SysName = '3DS_MODEL');
edSysName.Text := PropertyData.SysName;
if PropertyData.Izm <> '' then
edIzm.Text := PropertyData.Izm
else
edIzm.Text := GetNameUOMForProperty('', PropertyData.SysName, TF_Main(GForm).FUOM);
cbValueReq.Checked := IntToBool(PropertyData.ValueReq);
if PropertyData.IDDataType > 0 then
SelectItemByIDinComboRz(cbDataType, PropertyData.IDDataType)
else
cbDataType.ItemIndex := -1;
edDescription.Text := PropertyData.Description;
cbIsForWholeComponent.Checked := PropertyData.IsForWholeComponent = biTrue;
seMaxValue.Visible := false;
seMinValue.Visible := false;
deMaxValue.Visible := false;
deMinValue.Visible := false;
case PropertyData.IDDataType of
dtDate:
begin
deMaxValue.Visible := true;
deMinValue.Visible := true;
deMinValue.Date := PropertyData.MinValue;
deMaxValue.Date := PropertyData.MaxValue;
end;
dtInteger, dtFloat:
begin
SpinEditDecimals := 0;
if PropertyData.IDDataType = dtFloat then
SpinEditDecimals := FloatPrecision;
seMaxValue.Visible := true;
seMinValue.Visible := true;
seMaxValue.IntegersOnly := (PropertyData.IDDataType = dtInteger);
seMinValue.IntegersOnly := (PropertyData.IDDataType = dtInteger);
seMaxValue.Decimals := SpinEditDecimals;
seMinValue.Decimals := SpinEditDecimals;
ValueFloat := PropertyData.MaxValue;
PropValueInUOM(ValueFloat, PropertyData.SysName, umMetr, TF_Main(GForm).FUOM);
seMaxValue.Value := ValueFloat;
ValueFloat := PropertyData.MinValue;
PropValueInUOM(ValueFloat, PropertyData.SysName, umMetr, TF_Main(GForm).FUOM);
seMinValue.Value := ValueFloat;
end;
else
begin
seMaxValue.Visible := true;
seMinValue.Visible := true;
seMaxValue.Value := 0;
seMinValue.Value := 0;
end;
end;
end;
procedure TF_MakeEditPropRel.SetPropertyValue(AValue, ASysName: String);
var
DataType: Integer;
ValueFloat: Double;
LastItem: Integer;
begin
edValue.Visible := false;
cbCompStateType.Visible := false;
cbValue.Visible := false;
seValue.Visible := false;
colorbValue.Visible := false;
deValue.Visible := false;
cbCableCanalElemntTypes.Visible := false;
pnSectionSideValue.Visible := false; //meSectionSideValue.Visible := false;
cbItemList.Visible := false;
meStringListDef.Visible := false;
seValue.Value := 0;
DataType := GetIDFromComboBoxRz(cbDataType);
FValueControl := nil;
Case DataType of
dtFloat:
begin
seValue.Visible := true;
seValue.IntegersOnly := false;
if ( (edSysName.Text = 'WIDTH') or (edSysName.Text = 'HEIGHT') or (edSysName.Text = 'DEPTH') ) and ( (EdIzm.Text = '<27>.') or (EdIzm.Text = 'm.') or (EdIzm.Text = '<27>') or (EdIzm.Text = 'm') ) then
seValue.Decimals := 4
else
seValue.Decimals := FloatPrecision;
if AValue <> '' then
try
ValueFloat := StrToFloatU(CorrectStrToFloat(AValue));
PropValueInUOM(ValueFloat, ASysName, umMetr, TF_Main(GForm).FUOM);
seValue.Value := ValueFloat;
except
end;
FValueControl := seValue;
end;
dtInteger:
begin
seValue.Visible := true;
seValue.IntegersOnly := true;
seValue.Decimals := 0;
if AValue <> '' then
try
ValueFloat := StrToFloatU(AValue);
PropValueInUOM(ValueFloat, ASysName, umMetr, TF_Main(GForm).FUOM);
seValue.Value := ValueFloat;
except
end;
FValueControl := seValue;
end;
dtBoolean:
begin
cbValue.Visible := true;
cbValue.Checked := true;
try
cbValue.Checked := IntToBool(StrToInt(AVAlue));
except
end;
FValueControl := cbValue;
end;
dtString:
begin
edValue.Visible := true;
edValue.Text := AValue;
FValueControl := edValue;
end;
dtDate:
begin
deValue.Visible := true;
if AValue <> '' then
deValue.Date := StrToDateU(AValue);
FValueControl := deValue;
end;
dtCompStateType:
begin
cbCompStateType.Visible := true;
if AValue <> '' then
SelectItemByIDinComboRz(cbCompStateType, StrToInt(AValue));
FValueControl := cbCompStateType;
end;
dtColor:
begin
colorbValue.Visible := true;
if AValue <> '' then
colorbValue.SelectedColor := StrToInt(AValue);
FValueControl := colorbValue;
end;
dtCableCanalElementType:
begin
cbCableCanalElemntTypes.Visible := true;
if AValue <> '' then
SelectItemByIDinComboRz(cbCableCanalElemntTypes, StrToInt(AValue));
//CheckBox_PNotNull.Enabled := false;
//CheckBox_PNotNull.Checked := false;
FValueControl := cbCableCanalElemntTypes;
end;
dtDimensions:
begin
pnSectionSideValue.Visible := true;
cbSectionSideValue.Text := AValue;
if cbSectionSideValue.Text = '' then
if FTableKind = tkComponent then
cbSectionSideValue.Text := cSectionSideDefValue;
FValueControl := cbSectionSideValue;
{meSectionSideValue.Visible := true;
meSectionSideValue.Text := AValue;
if meSectionSideValue.Text = '' then
meSectionSideValue.Text := cSectionSideDefValue;}
end;
dtConnectionKind:
begin
ClearComboBoxRz(cbItemList);
AddIDToComboRz(-1, '', cbItemList);
AddIDToComboRz(tckHubOfPipe, tcknHubOfPipe, cbItemList);
AddIDToComboRz(tckCapillarySoldering, tcknCapillarySoldering, cbItemList);
AddIDToComboRz(tckMechanicalCompressive, tcknMechanicalCompressive, cbItemList);
AddIDToComboRz(tckMechanicalPress, tcknMechanicalPress, cbItemList);
AddIDToComboRz(tckMechanicalTread, tcknMechanicalTread, cbItemList);
AddIDToComboRz(tckPress, tcknPress, cbItemList);
AddIDToComboRz(tckWeldingConnection, tcknWeldingConnection, cbItemList);
AddIDToComboRz(tckWeldingButt, tcknWeldingButt, cbItemList);
AddIDToComboRz(tckWeldHubOfPipe, tcknWeldHubOfPipe, cbItemList);
AddIDToComboRz(tckWeldElectric, tcknWeldElectric, cbItemList);
cbItemList.Visible := true;
if FLastTubeConnectcKind <> -1 then
SelectItemByIDinComboRz(cbItemList, FLastTubeConnectcKind)
else
if AValue <> '' then
SelectItemByIDinComboRz(cbItemList, StrToInt(AValue))
else
SelectItemByIDinComboRz(cbItemList, FLastTubeConnectcKind);
FValueControl := cbItemList;
end;
dtStringList:
begin
meStringListDef.Visible := true;
meStringListDef.BringToFront;
meStringListDef.Lines.Text := AValue;
end;
//dtBasementType:
// begin
// ClearComboBoxRz(cbItemList);
// AddIDToComboRz(-1, '', cbItemList);
// AddIDToComboRz(btnStrip, btnStrip, cbItemList);
// AddIDToComboRz(btnColumnar, btnColumnar, cbItemList);
//
// if FLastBasementType <> -1 then
// SelectItemByIDinComboRz(cbItemList, FLastBasementType)
// else
// if GValue <> '' then
// SelectItemByIDinComboRz(cbItemList, StrToInt(GValue))
// else
// SelectItemByIDinComboRz(cbItemList, FLastBasementType);
// cbItemList.Visible := true;
// end;
dtPlaneMaterialType, dtRoofHipType, dtRoofHipApexType, dtRoofHipValleyType:
begin
FillPropValuesByDataType(cbItemList.Items, DataType);
cbItemList.Visible := true;
LastItem := FLastTypeItem[DataType];
if LastItem <> -1 then
SelectItemByIDinComboRz(cbItemList, LastItem)
else if AValue <> '' then
SelectItemByIDinComboRz(cbItemList, StrToInt(AValue));
FLastTypeItem[DataType] := GetIDFromComboBoxRz(cbItemList);
end;
end;
end;
procedure TF_MakeEditPropRel.FormCreate(Sender: TObject);
//var
// i: Integer;
begin
cbDataType.Items.BeginUpdate;
try
AddIDToComboRz(dtFloat, cMakeEditPropRel_Msg3_1, cbDataType);
AddIDToComboRz(dtInteger, cMakeEditPropRel_Msg3_2, cbDataType);
AddIDToComboRz(dtBoolean, cMakeEditPropRel_Msg3_3, cbDataType);
AddIDToComboRz(dtString, cMakeEditPropRel_Msg3_4, cbDataType);
AddIDToComboRz(dtDate, cMakeEditPropRel_Msg3_5, cbDataType);
AddIDToComboRz(dtCompStateType, cMakeEditPropRel_Msg3_6, cbDataType);
AddIDToComboRz(dtColor, cMakeEditPropRel_Msg3_7, cbDataType);
AddIDToComboRz(dtCableCanalElementType, cMakeEditPropRel_Msg3_8, cbDataType);
AddIDToComboRz(dtDimensions, cDimensionsB, cbDataType);
AddIDToComboRz(dtConnectionKind, cNameConnectionKind, cbDataType);
AddIDToComboRz(dtStringList, cNameStringListB, cbDataType);
//AddIDToComboRz(dtBasementType, cNameBasementTypeB, cbDataType);
AddIDToComboRz(dtPlaneMaterialType, cNamePlaneMaterialTypeB, cbDataType);
AddIDToComboRz(dtRoofHipType, cNameRoofHipTypeB, cbDataType);
AddIDToComboRz(dtRoofHipApexType, cNameRoofHipApexTypeB, cbDataType);
AddIDToComboRz(dtRoofHipValleyType, cNameRoofHipValleyTypeB, cbDataType);
AddIDToComboRz(oitProjectible, cMakeEditPropRel_Msg3_9, cbCompStateType);
AddIDToComboRz(oitActive, cMakeEditPropRel_Msg3_10, cbCompStateType);
AddIDToComboRz(contNone, '', cbCableCanalElemntTypes);
AddIDToComboRz(contCork, ctnCork, cbCableCanalElemntTypes);
AddIDToComboRz(contAnglePlane, ctnAnglePlane, cbCableCanalElemntTypes);
AddIDToComboRz(contTjoin, ctnTjoin, cbCableCanalElemntTypes);
AddIDToComboRz(contCross, ctnCross, cbCableCanalElemntTypes);
AddIDToComboRz(contAngleIn, ctnAngleIn, cbCableCanalElemntTypes);
AddIDToComboRz(contAngleOut, ctnAngleOut, cbCableCanalElemntTypes);
AddIDToComboRz(contADapter, ctnADapter, cbCableCanalElemntTypes);
AddIDToComboRz(contConnector, ctnConnector, cbCableCanalElemntTypes);
AddIDToComboRz(contWallCork, ctnWallCork, cbCableCanalElemntTypes);
finally
cbDataType.Items.EndUpdate;
end;
seValue.Max := 0;
//seMinValue.Max := 0;
//seMaxValue.Max := 0;
meStringListDef.MaxLength := cnstPropValMaxLen;
lbValue.Caption := '';
btSectionSideValue.Hint := cSendValueToDimensionsSprav;
//SetCableChannelSectionMaskEditProps(meSectionSideValue.Properties);
FLastTypeItem := TIntList.Create;
//for i := 0 to dtLast do
// FLastTypeItem.Add(-1);
end;
procedure TF_MakeEditPropRel.FormDestroy(Sender: TObject);
begin
ClearComboBoxRz(cbName);
ClearComboBoxRz(cbDataType);
ClearComboBoxRz(cbCrossProperty);
FLastTypeItem.Free;
end;
procedure TF_MakeEditPropRel.cbNameChange(Sender: TObject);
var
IDProperty: Integer;
GUIDProperty: String;
begin
IDProperty := GetIDFromComboBoxRz(cbName);
GUIDProperty := GetGUIDFromComboBoxRz(cbName);
SetPropertyParams(IDProperty, GUIDProperty, FPropertyData);
SetPropertyValue(FPropertyData.DefValue, FPropertyData.SysName);
end;
procedure TF_MakeEditPropRel.btOkClick(Sender: TObject);
var
Messg: String;
PropValue: String;
MinMaxControlMessg: String;
Prop: TProperty;
procedure AddToMessg(AText: String);
begin
Messg := Messg + #10+#13+'-'+AText;
end;
begin
Messg := '';
if GetGUIDFromComboBoxRz(cbName) = '' then
AddToMessg(cMakeEditPropRel_Msg4);
PropValue := GetPropertValue;
//Tolik 22/07/2021 -- <20><><EFBFBD> 3<> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
if FPropertyData.SysName = '3DS_MODEL' then
begin
if pos('\\', PropValue) = 0 then // <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
begin
if pos(UpperCase(ExeDir), UpperCase(PropValue)) = 1 then // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
begin
PropValue := StringReplace(PropValue, ExeDir, '', [rfIgnoreCase]); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
edValue.Text := PropValue;
end;
end;
end;
//
MinMaxControlMessg := '';
MinMaxControl(PropValue, MinMaxControlMessg, FPropertyData);
if MinMaxControlMessg <> '' then
AddToMessg(MinMaxControlMessg);
if FMakeEdit = meMake then
if CheckLocate(FDataSet, fnIDProperty, FPropertyData.ID) then
AddToMessg(cMakeEditPropRel_Msg5_1+' "'+FPropertyData.Name+'" '+cMakeEditPropRel_Msg5_2);
if Messg <> '' then
begin
ModalResult := mrNone;
MessageModal(Messg, ApplicationName, MB_ICONINFORMATION or MB_OK);
end
else
if Assigned(FOnCheckPropRelValue) then
begin
ZeroMemory(@Prop, SizeOf(Prop));
FormDataToProperty(Prop);
//FOnCheckPropRelValue;
if Not FOnCheckPropRelValue(Self, @Prop, FDataSet) then
ModalResult := mrNone;
end;
end;
procedure TF_MakeEditPropRel.cbIsCrossControlClick(Sender: TObject);
var
Checked: Boolean;
begin
Checked := TRzCheckBox(Sender).Checked;
cbCrossProperty.Enabled := Checked;
btChoiceCrossProperty.Enabled := Checked;
end;
function TF_MakeEditPropRel.ChoiceProperty(AComboBox, AOtherComboBox: TRzComboBox): Boolean;
var
NewPropertyID: Integer;
CurrID: Integer;
CurrGUID: string;
OtherComboGUID: string;
begin
Result := false;
NewPropertyID := -1;
CurrID := GetIDFromComboBoxRz(AComboBox);
CurrGUID := GetGUIDFromComboBoxRz(AComboBox);
OtherComboGUID := GetGUIDFromComboBoxRz(AOtherComboBox);
if TF_Main(GForm).GDBMode = bkNormBase then
begin
NewPropertyID := TF_Main(GForm).FNormBase.DM.GetPropertyIDFromGuide(CurrID, fmEdit, FItemType);
FillComboBoxRz(AComboBox, F_NormBase, true, tnProperties, fnID, fnName, '', NewPropertyID, '', FItemFilter);
FillComboBoxRz(AOtherComboBox, F_NormBase, true, tnProperties, fnID, fnName, '', -1, '', FItemFilter);
end
else
if TF_Main(GForm).GDBMode = bkProjectManager then
begin
if ShowCurrProjectProperties(vkProperty, CurrGUID) then
if TF_Main(GForm).GSCSBase.CurrProject.Spravochnik.LastProperty <> nil then
begin
NewPropertyID := TF_Main(GForm).GSCSBase.CurrProject.Spravochnik.LastProperty.PropertyData.ID;
TF_Main(GForm).GSCSBase.CurrProject.Spravochnik.LoadPropertiesToStrings(AComboBox.Items, true);
TF_Main(GForm).GSCSBase.CurrProject.Spravochnik.LoadPropertiesToStrings(AOtherComboBox.Items, true);
SelectItemByGUIDinComboRz(AComboBox, TF_Main(GForm).GSCSBase.CurrProject.Spravochnik.LastProperty.PropertyData.GUID);
SelectItemByGUIDinComboRz(AOtherComboBox, OtherComboGUID);
end;
end;
TF_Main(GForm).FNormBase.DM.LoadInputStringsToTStrings(cbSectionSideValue.Items, stDimensions);
if NewPropertyID > 0 then
Result := true;
end;
function TF_MakeEditPropRel.DefineItemFilter(AItemType: Integer): String;
var
ItemFieldName: String;
begin
Result := '';
ItemFieldName := ItemTypeToIsOwnerFieldName(AItemType);
if ItemFieldName <> '' then
Result := ItemFieldName +' = '''+IntToStr(biTrue)+'''';
end;
procedure TF_MakeEditPropRel.SetControls;
begin
cbName.ReadOnly := (FProperty.IsDefault = biTrue);
if cbName.ReadOnly then
cbName.SelLength := 0;
cbName.Enabled := (FProperty.IsDefault = biFalse);
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
cbTakeIntoComplect.Visible := ((FTableKind = tkComponent) or (FTableKind = tkCompTypePropRelation));
cbTakeIntoJoin.Visible := ((FTableKind = tkComponent) or (FTableKind = tkCompTypePropRelation));
cbIsTakeJoinForPoints.Visible := ((FTableKind = tkComponent) and (FItemType = itComponCon));
pnCrossControl.Visible := (FTableKind = tkComponent);
pnIsForWholeComponent.Visible := (FTableKind = tkComponent) and (FItemType = itComponLine);
//cbIsCrossControl.Visible := (FTableKind = tkComponent);
//cbCrossProperty.Visible := (FTableKind = tkComponent);
//btChoiceCrossProperty.Visible := (FTableKind = tkComponent);
//*** Enable/Disable controls
pnCrossControl.Enabled := (cbTakeIntoComplect.Checked or cbTakeIntoJoin.Checked);
cbIsTakeJoinForPoints.Enabled := (cbTakeIntoJoin.Checked);
btChoiceProperty.Visible := (FMemTableProps = nil);
btChoiceCrossProperty.Visible := (FMemTableProps = nil);
if GUseArhOnlyMode then
begin
cbName.ReadOnly := FMakeEdit <> meMake;
btChoiceProperty.Visible := false;
cbTakeIntoJoin.Visible := false;
cbTakeIntoComplect.Visible := false;
cbIsTakeJoinForPoints.Visible := false;
cbIsCrossControl.Visible := false;
cbCrossProperty.Visible := false;
btChoiceCrossProperty.Visible := false;
end;
end;
procedure TF_MakeEditPropRel.cbTakeIntoJoinClick(Sender: TObject);
begin
SetControls;
end;
procedure TF_MakeEditPropRel.cbTakeIntoComplectClick(Sender: TObject);
begin
SetControls;
end;
procedure TF_MakeEditPropRel.btChoicePropertyClick(Sender: TObject);
begin
if FProperty.IsDefault = biTrue then
MessageModal(cMakeEditPropRel_Msg6, ApplicationName,
MB_ICONINFORMATION or MB_OK)
else
if ChoiceProperty(cbName, cbCrossProperty) then
cbNameChange(cbName);
end;
procedure TF_MakeEditPropRel.btChoiceCrossPropertyClick(Sender: TObject);
begin
ChoiceProperty(cbCrossProperty, cbName);
end;
procedure TF_MakeEditPropRel.cbValueReqMouseUp(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
TRzCheckBox(Sender).Checked := Not TRzCheckBox(Sender).Checked;
end;
procedure TF_MakeEditPropRel.cbValueReqKeyUp(Sender: TObject;
var Key: Word; Shift: TShiftState);
begin
Key := 0;
end;
procedure TF_MakeEditPropRel.seValueKeyPress(Sender: TObject;
var Key: Char);
begin
if Key = '-' then
Key := #0;
end;
procedure TF_MakeEditPropRel.btSectionSideValueClick(Sender: TObject);
begin
TF_Main(GForm).FNormBase.DM.SendTextToInputStringsWithAddToTStrings(cbSectionSideValue.Text, stDimensions, true, cbSectionSideValue.Items);
end;
procedure TF_MakeEditPropRel.cbItemListChange(Sender: TObject);
var
DataType: Integer;
begin
DataType := GetIDFromComboBoxRz(cbDataType);
if DataType = dtConnectionKind then
FLastTubeConnectcKind := GetIDFromComboBoxRz(cbItemList)
else
if DataType = dtBasementType then
FLastBasementType := GetIDFromComboBoxRz(cbItemList);
FLastTypeItem[DataType] := GetIDFromComboBoxRz(cbItemList);
end;
procedure TF_MakeEditPropRel.FormShow(Sender: TObject);
begin
try
if FMakeEdit = meMake then
cbName.SetFocus
else
if FMakeEdit = meEdit then
if FValueControl <> nil then
if FValueControl.Showing then
begin
FValueControl.SetFocus;
if FValueControl is TCustomEdit then
TCustomEdit(FValueControl).SelectAll;
end;
except
on E: Exception do AddExceptionToLogEx('TF_MakeEditPropRel.FormShow', E.Message);
end;
end;
procedure TF_MakeEditPropRel.seValueChange(Sender: TObject);
begin
//
end;
procedure TF_MakeEditPropRel.BtnLoad3DSModelClick(Sender: TObject);
var dlg: TOpen3dsModelDialog;
currVal: string; // Tolik 23/07/2021 --
begin
//dlg := TOpen3dsModelDialog.create(Self);//TOpenDialog.Create(Self);
dlg := TOpen3dsModelDialog.create(nil);//TOpenDialog.Create(Self);
//dlg.Filter := 'Model files (*.3DS)|*.3DS';
dlg.Title := 'Sel3dModFile';
dlg.Options := [ofFileMustExist];
dlg.InitialDir := ExeDir + '\' + '3DModels';
// Tolik 23/07/2021 --
currVal := edValue.Text;
if (Pos('\\', currVal) = 0) or (Pos(':', currVal) = 0) then
currVal := ExeDir + currVal;
if FileExists(currVal) then
dlg.FileName := currVal;
//dlg.FindComponent(currVal);
//dlg.Files.Add(currVal);
//Application.ProcessMessages;
//
if dlg.Execute then
begin
if dlg.FileName <> '' then
//Tolik 22/07/2021 --
//edValue.Text := dlg.FileName;
begin // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
edValue.Text := dlg.FileName;
if Pos('\\', edValue.Text) = 0 then
begin
if Pos(ExeDir, dlg.FileName) = 1 then
edValue.Text := StringReplace(edValue.Text, ExeDir,'',[rfIgnoreCase]);
end;
end;
end;
dlg.free;
end;
end.