mirror of
http://gitlab.expertsoft.com.ua/git/expertcad
synced 2026-01-12 00:45:40 +02:00
699 lines
21 KiB
ObjectPascal
699 lines
21 KiB
ObjectPascal
unit U_FindParams;
|
||
|
||
interface
|
||
|
||
uses
|
||
Windows, U_LNG, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
||
Dialogs, cxLookAndFeelPainters, cxTextEdit, StdCtrls, cxButtons,
|
||
cxControls, cxContainer, cxEdit, cxCheckBox, ExtCtrls, RzPanel, Contnrs,
|
||
|
||
U_BaseCommon, U_BaseConstants, U_SCSComponent, cxMaskEdit, cxDropDownEdit, siComp, siLngLnk,
|
||
U_Common_Classes, RzButton, RzRadChk, RzSpnEdt, RzEdit, RzCmboBx, Mask, cxGraphics,
|
||
cxLookAndFeels, Menus;
|
||
|
||
type
|
||
TCheckBoxParam = class(TObject)
|
||
private
|
||
FOwner: TRzCheckBox;
|
||
public
|
||
ParamEditor: TcxCustomEdit;
|
||
CheckBoxAsBegin: TRzCheckBox;
|
||
OtherControl: TControl;
|
||
|
||
Checked: Boolean;
|
||
AsBeginChecked: Boolean;
|
||
constructor Create(AOwner: TRzCheckBox);
|
||
end;
|
||
|
||
TF_FindParams = class(TForm)
|
||
RzGroupBox1: TRzGroupBox;
|
||
RzGroupBox2: TRzGroupBox;
|
||
btOk: TcxButton;
|
||
btFalse: TcxButton;
|
||
edName: TcxTextEdit;
|
||
RzPanel1: TRzPanel;
|
||
RzGroupBox3: TRzGroupBox;
|
||
lng_Forms: TsiLangLinked;
|
||
RzGroupBox4: TRzGroupBox;
|
||
edArtDistributor: TcxTextEdit;
|
||
edArtProducer: TcxTextEdit;
|
||
edIzm: TcxTextEdit;
|
||
cbxComponentType: TcxComboBox;
|
||
cbxNetType: TcxComboBox;
|
||
cbxProducer: TcxComboBox;
|
||
cbName: TRzCheckBox;
|
||
cbAsBeginArtDistributor: TRzCheckBox;
|
||
cbAsBeginArtProducer: TRzCheckBox;
|
||
cbAsBeginIzm: TRzCheckBox;
|
||
cbAsBeginName: TRzCheckBox;
|
||
cbArtDistributor: TRzCheckBox;
|
||
cbArtProducer: TRzCheckBox;
|
||
cbIzm: TRzCheckBox;
|
||
cbComponentType: TRzCheckBox;
|
||
cbNetType: TRzCheckBox;
|
||
cbProducer: TRzCheckBox;
|
||
cbFindAsCatalogs: TRzCheckBox;
|
||
cbFindAsComponents: TRzCheckBox;
|
||
cbFindAsLists: TRzCheckBox;
|
||
cbFindAsRooms: TRzCheckBox;
|
||
cbFindAsSCSObject: TRzCheckBox;
|
||
cbDoFindAfterOk: TRzCheckBox;
|
||
cbProperty: TRzCheckBox;
|
||
cbxProperty: TcxComboBox;
|
||
pnPropValue: TPanel;
|
||
cbPropertyValue: TRzCheckBox;
|
||
pnPropValueControls: TPanel;
|
||
cbSectionSideValue: TRzComboBox;
|
||
deValue: TRzDateTimeEdit;
|
||
colorbValue: TRzColorComboBox;
|
||
cbValue: TRzCheckBox;
|
||
edValue: TRzEdit;
|
||
seValue: TRzSpinEdit;
|
||
cbItemList: TRzComboBox;
|
||
lbPropCompareTypes: TLabel;
|
||
cbPropCompareTypes: TRzComboBox;
|
||
lbPropUOM: TLabel;
|
||
cbInCurrentDir: TRzCheckBox;
|
||
cbInPrevResult: TRzCheckBox;
|
||
procedure FormCreate(Sender: TObject);
|
||
procedure cbClick(Sender: TObject);
|
||
procedure btOkClick(Sender: TObject);
|
||
procedure cbFindAsCatalogsClick(Sender: TObject);
|
||
procedure FormDestroy(Sender: TObject);
|
||
procedure cbxPropertyPropertiesChange(Sender: TObject);
|
||
procedure cbPropertyValueClick(Sender: TObject);
|
||
private
|
||
GForm: TForm;
|
||
|
||
FFindAsCatalogs: Boolean;
|
||
FFindAsComponents: Boolean;
|
||
FFindAsLists: Boolean;
|
||
FFindAsRooms: Boolean;
|
||
FFindAsSCSObject: Boolean;
|
||
|
||
FDoFindAfterOkState: Boolean;
|
||
|
||
FCheckBoxParamList: TObjectList;
|
||
FComponentCBParamList: TObjectList;
|
||
FPropValueControl: TWinControl;
|
||
FPrevPropCompareTypeDataType: Integer;
|
||
|
||
FSpravochnik: TSpravochnik;
|
||
|
||
function CreateCheckBoxParam(AcbOwner, AcbAsBegin: TRzCheckBox;
|
||
AParamEditor: TcxCustomEdit; AOtherControl: TControl; AOnlyForComponent: Boolean): TCheckBoxParam;
|
||
function GetCheckBoxParamIfOneChecked: TCheckBoxParam;
|
||
procedure SetControlsForCheckBoxParam(ACheckBoxParam: TCheckBoxParam);
|
||
|
||
procedure DefineIDsGUIDs;
|
||
function IsCheckedOneDirFindElement: Boolean;
|
||
procedure SetControls;
|
||
procedure SetControlsByCheckedFindElements(AComponentChecked, ADirChecked: Boolean);
|
||
procedure SetControlsForProps(ACanFocus: Boolean);
|
||
|
||
function GetCurrPropDataType: Integer;
|
||
function GetPropertValue: String;
|
||
public
|
||
GUIDComponentType: String;
|
||
GUIDNetType: String;
|
||
GUIDProducer: String;
|
||
GUIDProperty: String;
|
||
IDComponentType: Integer;
|
||
IDNetType: Integer;
|
||
IDProducer: Integer;
|
||
IDProperty: Integer;
|
||
FCurrProp: TNBProperty;
|
||
PropValue: String;
|
||
PropCompareType: Integer;
|
||
|
||
constructor Create(AOwner: TComponent; AForm: TForm);
|
||
destructor Destroy; override;
|
||
|
||
function Execute(ASpravochnik: TSpravochnik): Boolean;
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
function GetTextFromEditIfOneChecked(var ADest: string): Boolean;
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||
function SetTextToEditFieldIfOneChecked(AText: String): Boolean;
|
||
end;
|
||
|
||
//var
|
||
//F_FindParams: TF_FindParams;
|
||
|
||
implementation
|
||
Uses U_Main, Unit_DM_SCS;
|
||
{$R *.dfm}
|
||
|
||
{ TCheckBoxControls }
|
||
|
||
constructor TCheckBoxParam.Create(AOwner: TRzCheckBox);
|
||
begin
|
||
FOwner := AOwner;
|
||
ParamEditor := nil;
|
||
CheckBoxAsBegin := nil;
|
||
OtherControl := nil;
|
||
|
||
Checked := false;
|
||
AsBeginChecked := false;
|
||
end;
|
||
|
||
|
||
{ TF_FindParams }
|
||
|
||
constructor TF_FindParams.Create(AOwner: TComponent; AForm: TForm);
|
||
begin
|
||
GForm := AForm;
|
||
inherited Create(AOwner);
|
||
end;
|
||
|
||
destructor TF_FindParams.Destroy;
|
||
begin
|
||
inherited;
|
||
end;
|
||
|
||
function TF_FindParams.CreateCheckBoxParam(AcbOwner, AcbAsBegin: TRzCheckBox;
|
||
AParamEditor: TcxCustomEdit; AOtherControl: TControl; AOnlyForComponent: Boolean): TCheckBoxParam;
|
||
begin
|
||
Result := TCheckBoxParam.Create(AcbOwner);
|
||
AcbOwner.Tag := Integer(Result);
|
||
|
||
Result.ParamEditor := AParamEditor;
|
||
Result.CheckBoxAsBegin := AcbAsBegin;
|
||
Result.OtherControl := AOtherControl;
|
||
|
||
FCheckBoxParamList.Add(Result);
|
||
if AOnlyForComponent then
|
||
FComponentCBParamList.Add(Result);
|
||
end;
|
||
|
||
function TF_FindParams.GetCheckBoxParamIfOneChecked: TCheckBoxParam;
|
||
var
|
||
i: Integer;
|
||
CheckBoxParam: TCheckBoxParam;
|
||
LastCheckBoxParam: TCheckBoxParam;
|
||
CheckedCount: Integer;
|
||
begin
|
||
Result := nil;
|
||
CheckedCount := 0;
|
||
LastCheckBoxParam := nil;
|
||
for i := 0 to FCheckBoxParamList.Count - 1 do
|
||
begin
|
||
CheckBoxParam := TCheckBoxParam(FCheckBoxParamList[i]);
|
||
if CheckBoxParam.FOwner.Checked then
|
||
begin
|
||
Inc(CheckedCount);
|
||
LastCheckBoxParam := CheckBoxParam;
|
||
end;
|
||
end;
|
||
//*** <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||
if (CheckedCount = 1) and (LastCheckBoxParam <> nil) then
|
||
Result := LastCheckBoxParam;
|
||
end;
|
||
|
||
procedure TF_FindParams.SetControlsForCheckBoxParam(ACheckBoxParam: TCheckBoxParam);
|
||
begin
|
||
ACheckBoxParam.ParamEditor.Enabled := ACheckBoxParam.FOwner.Enabled and ACheckBoxParam.FOwner.Checked;
|
||
if ACheckBoxParam.CheckBoxAsBegin <> nil then
|
||
ACheckBoxParam.CheckBoxAsBegin.Enabled := ACheckBoxParam.FOwner.Enabled and ACheckBoxParam.FOwner.Checked;
|
||
if ACheckBoxParam.OtherControl <> nil then
|
||
ACheckBoxParam.OtherControl.Enabled := ACheckBoxParam.FOwner.Enabled and ACheckBoxParam.FOwner.Checked;
|
||
end;
|
||
|
||
function TF_FindParams.Execute(ASpravochnik: TSpravochnik): Boolean;
|
||
var
|
||
OldText: string;
|
||
i: Integer;
|
||
CheckBoxParam: TCheckBoxParam;
|
||
begin
|
||
Result := false;
|
||
|
||
GUIDComponentType := '';
|
||
GUIDNetType := '';
|
||
GUIDProducer := '';
|
||
GUIDProperty := '';
|
||
|
||
FPropValueControl := nil;
|
||
if ASpravochnik <> nil then
|
||
begin
|
||
cbxComponentType.Properties.BeginUpdate;
|
||
cbxNetType.Properties.BeginUpdate;
|
||
cbxProducer.Properties.BeginUpdate;
|
||
cbxProperty.Properties.BeginUpdate;
|
||
try
|
||
OldText := cbxComponentType.Text;
|
||
ASpravochnik.LoadComponentTypesToStrings(cbxComponentType.Properties.Items, true);
|
||
SelectItemByTextinCombo(cbxComponentType, OldText);
|
||
|
||
OldText := cbxNetType.Text;
|
||
ASpravochnik.LoadNetTypesToStrings(cbxNetType.Properties.Items, true);
|
||
SelectItemByTextinCombo(cbxNetType, OldText);
|
||
|
||
OldText := cbxProducer.Text;
|
||
ASpravochnik.LoadProducersToStrings(cbxProducer.Properties.Items, true);
|
||
SelectItemByTextinCombo(cbxProducer, OldText);
|
||
|
||
OldText := cbxProperty.Text;
|
||
ASpravochnik.LoadPropertiesToStrings(cbxProperty.Properties.Items, true);
|
||
SelectItemByTextinCombo(cbxProperty, OldText);
|
||
finally
|
||
cbxProperty.Properties.EndUpdate;
|
||
cbxProducer.Properties.EndUpdate;
|
||
cbxNetType.Properties.EndUpdate;
|
||
cbxComponentType.Properties.EndUpdate;
|
||
end;
|
||
end;
|
||
FSpravochnik := ASpravochnik;
|
||
FCurrProp := nil;
|
||
|
||
cbInPrevResult.Checked := false;
|
||
SetControls;
|
||
SetControlsForProps(false);
|
||
TF_Main(GForm).FNormBase.DM.LoadInputStringsToTStrings(cbSectionSideValue.Items, stDimensions);
|
||
|
||
if ShowModal = mrOk then
|
||
begin
|
||
Result := true;
|
||
|
||
for i := 0 to FCheckBoxParamList.Count - 1 do
|
||
begin
|
||
CheckBoxParam := TCheckBoxParam(FCheckBoxParamList[i]);
|
||
CheckBoxParam.Checked := CheckBoxParam.FOwner.Checked;
|
||
if CheckBoxParam.CheckBoxAsBegin <> nil then
|
||
CheckBoxParam.AsBeginChecked := CheckBoxParam.CheckBoxAsBegin.Checked;
|
||
end;
|
||
|
||
FFindAsCatalogs := cbFindAsCatalogs.Checked;
|
||
FFindAsComponents := cbFindAsComponents.Checked;
|
||
FFindAsLists := cbFindAsLists.Checked;
|
||
FFindAsRooms := cbFindAsRooms.Checked;
|
||
FFindAsSCSObject := cbFindAsSCSObject.Checked;
|
||
|
||
DefineIDsGUIDs;
|
||
|
||
FDoFindAfterOkState := cbDoFindAfterOk.Checked;
|
||
end;
|
||
end;
|
||
|
||
function TF_FindParams.GetTextFromEditIfOneChecked(var ADest: string): Boolean;
|
||
var
|
||
CheckBoxParam: TCheckBoxParam;
|
||
begin
|
||
Result := false;
|
||
ADest := '';
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||
CheckBoxParam := GetCheckBoxParamIfOneChecked;
|
||
|
||
if CheckBoxParam <> nil then
|
||
begin
|
||
Result := true;
|
||
//*** <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||
if CheckBoxParam.ParamEditor is TcxTextEdit then
|
||
ADest := TcxTextEdit(CheckBoxParam.ParamEditor).Text
|
||
else
|
||
//*** <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if CheckBoxParam.ParamEditor is TcxComboBox then
|
||
ADest := TcxComboBox(CheckBoxParam.ParamEditor).Text;
|
||
end;
|
||
end;
|
||
|
||
function TF_FindParams.SetTextToEditFieldIfOneChecked(AText: String): Boolean;
|
||
var
|
||
CheckBoxParam: TCheckBoxParam;
|
||
begin
|
||
Result := false;
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||
CheckBoxParam := GetCheckBoxParamIfOneChecked;
|
||
|
||
if CheckBoxParam <> nil then
|
||
begin
|
||
Result := true;
|
||
//*** <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||
if CheckBoxParam.ParamEditor is TcxTextEdit then
|
||
TcxTextEdit(CheckBoxParam.ParamEditor).Text := AText
|
||
else
|
||
//*** <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if (CheckBoxParam.ParamEditor is TcxComboBox) and (AText <> '') then
|
||
if TcxComboBox(CheckBoxParam.ParamEditor).Properties.Items.IndexOf(AText) <> -1 then
|
||
SelectItemByTextinCombo(TcxComboBox(CheckBoxParam.ParamEditor), AText, false)
|
||
else
|
||
if Not SelectItemByGUIDinCombo(TcxComboBox(CheckBoxParam.ParamEditor), '') then
|
||
if TcxComboBox(CheckBoxParam.ParamEditor).Properties.Items.Count > 0 then
|
||
TcxComboBox(CheckBoxParam.ParamEditor).ItemIndex := 0;
|
||
DefineIDsGUIDs;
|
||
end;
|
||
end;
|
||
|
||
procedure TF_FindParams.FormCreate(Sender: TObject);
|
||
begin
|
||
// Tolik 01/11/2019 --
|
||
seValue.Min := 0;
|
||
seValue.Max := 0;
|
||
//
|
||
FFindAsCatalogs := false;
|
||
FFindAsComponents := true;
|
||
FFindAsLists := false;
|
||
FFindAsRooms := false;
|
||
FFindAsSCSObject := false;
|
||
|
||
FDoFindAfterOkState := true;
|
||
|
||
edName.Text := '';
|
||
edArtDistributor.Text := '';
|
||
edArtProducer.Text := '';
|
||
edIzm.Text := '';
|
||
cbxComponentType.Text := '';
|
||
cbxNetType.Text := '';
|
||
cbxProducer.Text := '';
|
||
|
||
if TF_Main(GForm).GDBMode <> bkProjectManager then
|
||
begin
|
||
cbFindAsLists.Visible := false;
|
||
cbFindAsRooms.Visible := false;
|
||
cbFindAsSCSObject.Visible := false;
|
||
end
|
||
else
|
||
cbInCurrentDir.Caption := cFindParams_Msg3;
|
||
|
||
FCheckBoxParamList := TObjectList.Create(true);
|
||
FComponentCBParamList := TObjectList.Create(false);
|
||
|
||
CreateCheckBoxParam(cbName, cbAsBeginName, edName, nil, false);
|
||
CreateCheckBoxParam(cbArtDistributor, cbAsBeginArtDistributor, edArtDistributor, nil, true);
|
||
CreateCheckBoxParam(cbArtProducer, cbAsBeginArtProducer, edArtProducer, nil, true);
|
||
CreateCheckBoxParam(cbIzm, cbAsBeginIzm, edIzm, nil, true);
|
||
CreateCheckBoxParam(cbComponentType, nil, cbxComponentType, nil, true);
|
||
CreateCheckBoxParam(cbNetType, nil, cbxNetType, nil, true);
|
||
CreateCheckBoxParam(cbProducer, nil, cbxProducer, nil, true);
|
||
CreateCheckBoxParam(cbProperty, nil, cbxProperty, pnPropValue, true);
|
||
|
||
TCheckBoxParam(cbName.Tag).Checked := true;
|
||
TCheckBoxParam(cbArtDistributor.Tag).AsBeginChecked := true;
|
||
TCheckBoxParam(cbArtProducer.Tag).AsBeginChecked := true;
|
||
|
||
FPrevPropCompareTypeDataType := dtNone;
|
||
SetControls;
|
||
end;
|
||
|
||
procedure TF_FindParams.cbClick(Sender: TObject);
|
||
var
|
||
CheckBoxParam: TCheckBoxParam;
|
||
begin
|
||
//SetControlsForName;
|
||
CheckBoxParam := TCheckBoxParam(TRzCheckBox(Sender).Tag);
|
||
if CheckBoxParam <> nil then
|
||
begin
|
||
SetControlsForCheckBoxParam(CheckBoxParam);
|
||
if (CheckBoxParam.FOwner.Checked) and Visible then
|
||
CheckBoxParam.ParamEditor.SetFocus;
|
||
|
||
if CheckBoxParam.ParamEditor is TcxComboBox then
|
||
if Assigned(TcxComboBox(CheckBoxParam.ParamEditor).Properties.OnChange) then
|
||
TcxComboBox(CheckBoxParam.ParamEditor).Properties.OnChange(CheckBoxParam.ParamEditor);
|
||
|
||
//if Sender = cbProperty then
|
||
// cbxPropertyPropertiesChange(cbxProperty);
|
||
end;
|
||
end;
|
||
|
||
procedure TF_FindParams.DefineIDsGUIDs;
|
||
begin
|
||
GUIDComponentType := GetGUIDFromComboBox(cbxComponentType);
|
||
GUIDNetType := GetGUIDFromComboBox(cbxNetType);
|
||
GUIDProducer := GetGUIDFromComboBox(cbxProducer);
|
||
IDComponentType := GetIDFromComboBox(cbxComponentType);
|
||
IDNetType := GetIDFromComboBox(cbxNetType);
|
||
IDProducer := GetIDFromComboBox(cbxProducer);
|
||
|
||
GUIDProperty := GetGUIDFromComboBox(cbxProperty);
|
||
IDProperty := GetIDFromComboBox(cbxProperty);
|
||
|
||
PropValue := GetPropertValue;
|
||
PropCompareType := GetIDFromComboBoxRz(cbPropCompareTypes);
|
||
end;
|
||
|
||
function TF_FindParams.IsCheckedOneDirFindElement: Boolean;
|
||
begin
|
||
Result := false;
|
||
if cbFindAsCatalogs.Checked or
|
||
cbFindAsLists.Checked or
|
||
cbFindAsRooms.Checked or
|
||
cbFindAsSCSObject.Checked then
|
||
Result := true;
|
||
end;
|
||
|
||
procedure TF_FindParams.SetControls;
|
||
var
|
||
i: Integer;
|
||
CheckBoxParam: TCheckBoxParam;
|
||
begin
|
||
for i := 0 to FCheckBoxParamList.Count - 1 do
|
||
begin
|
||
CheckBoxParam := TCheckBoxParam(FCheckBoxParamList[i]);
|
||
CheckBoxParam.FOwner.Checked := CheckBoxParam.Checked;
|
||
if CheckBoxParam.CheckBoxAsBegin <> nil then
|
||
CheckBoxParam.CheckBoxAsBegin.Checked := CheckBoxParam.AsBeginChecked;
|
||
end;
|
||
|
||
|
||
cbFindAsCatalogs.Checked := FFindAsCatalogs;
|
||
cbFindAsComponents.Checked := FFindAsComponents;
|
||
cbFindAsLists.Checked := FFindAsLists;
|
||
cbFindAsRooms.Checked := FFindAsRooms;
|
||
cbFindAsSCSObject.Checked := FFindAsSCSObject;
|
||
SetControlsByCheckedFindElements(cbFindAsComponents.Checked, IsCheckedOneDirFindElement);
|
||
|
||
cbDoFindAfterOk.Checked := FDoFindAfterOkState;
|
||
end;
|
||
|
||
procedure TF_FindParams.SetControlsByCheckedFindElements(AComponentChecked, ADirChecked: Boolean);
|
||
var
|
||
ComponentChecked: Boolean;
|
||
CheckBoxParam: TCheckBoxParam;
|
||
i: integer;
|
||
begin
|
||
ComponentChecked := AComponentChecked;
|
||
|
||
//if Not AComponentChecked and
|
||
// Not ADirChecked then
|
||
// ComponentChecked := true;
|
||
|
||
if ADirChecked then
|
||
cbName.Checked := true;
|
||
cbName.Enabled := ComponentChecked and Not ADirChecked;
|
||
edName.Enabled := (cbName.Checked and AComponentChecked) or ADirChecked;
|
||
|
||
for i := 0 to FComponentCBParamList.Count - 1 do
|
||
begin
|
||
CheckBoxParam := TCheckBoxParam(FComponentCBParamList[i]);
|
||
CheckBoxParam.FOwner.Enabled := ComponentChecked;
|
||
SetControlsForCheckBoxParam(CheckBoxParam);
|
||
end;
|
||
end;
|
||
|
||
procedure TF_FindParams.SetControlsForProps(ACanFocus: Boolean);
|
||
var
|
||
DataType: Integer;
|
||
begin
|
||
try
|
||
if FCurrProp <> nil then
|
||
FPrevPropCompareTypeDataType := FCurrProp.PropertyData.IDDataType;
|
||
|
||
DataType := GetCurrPropDataType;
|
||
|
||
edValue.Visible := false;
|
||
cbValue.Visible := false;
|
||
seValue.Visible := false;
|
||
colorbValue.Visible := false;
|
||
deValue.Visible := false;
|
||
cbSectionSideValue.Visible := false;
|
||
cbItemList.Visible := false;
|
||
|
||
if FPrevPropCompareTypeDataType <> DataType then
|
||
cbPropCompareTypes.ItemIndex := FillPropCompareTypesByDataType(cbPropCompareTypes.Items, DataType);
|
||
pnPropValue.Visible := cbProperty.Checked and (DataType <> dtNone);
|
||
pnPropValueControls.Visible := cbPropertyValue.Checked and pnPropValue.Visible;
|
||
lbPropCompareTypes.Visible := pnPropValueControls.Visible and (cbPropCompareTypes.Items.Count > 0);
|
||
cbPropCompareTypes.Visible := pnPropValueControls.Visible and (cbPropCompareTypes.Items.Count > 0);
|
||
|
||
if FCurrProp <> nil then
|
||
lbPropUOM.Caption := GetNameUOMForProperty(FCurrProp.PropertyData.Izm, FCurrProp.PropertyData.SysName, TF_Main(GForm).FUOM)
|
||
else
|
||
lbPropUOM.Caption := '';
|
||
lbPropUOM.Visible := lbPropUOM.Caption <> '';
|
||
|
||
FPropValueControl := nil;
|
||
case DataType of
|
||
dtFloat:
|
||
begin
|
||
seValue.Visible := true;
|
||
seValue.IntegersOnly := false;
|
||
seValue.Decimals := FloatPrecision;
|
||
FPropValueControl := seValue;
|
||
end;
|
||
dtInteger:
|
||
begin
|
||
seValue.Visible := true;
|
||
seValue.IntegersOnly := true;
|
||
seValue.Decimals := 0;
|
||
FPropValueControl := seValue;
|
||
end;
|
||
dtBoolean:
|
||
begin
|
||
cbValue.Visible := true;
|
||
cbValue.Checked := true;
|
||
FPropValueControl := cbValue;
|
||
end;
|
||
dtString, dtStringList:
|
||
begin
|
||
edValue.Visible := true;
|
||
FPropValueControl := edValue;
|
||
end;
|
||
dtDate:
|
||
begin
|
||
deValue.Visible := true;
|
||
FPropValueControl := deValue;
|
||
end;
|
||
dtColor:
|
||
begin
|
||
colorbValue.Visible := true;
|
||
FPropValueControl := colorbValue;
|
||
end;
|
||
dtDimensions:
|
||
begin
|
||
cbSectionSideValue.Visible := true;
|
||
FPropValueControl := cbSectionSideValue;
|
||
end;
|
||
dtCompStateType, dtCableCanalElementType, dtConnectionKind:
|
||
begin
|
||
FillPropValuesByDataType(cbItemList.Items, DataType);
|
||
|
||
cbItemList.Visible := true;
|
||
FPropValueControl := cbItemList;
|
||
end;
|
||
end;
|
||
|
||
if FPropValueControl <> nil then
|
||
if ACanFocus and FPropValueControl.Showing then
|
||
begin
|
||
FPropValueControl.SetFocus;
|
||
if FPropValueControl is TCustomEdit then
|
||
TCustomEdit(FPropValueControl).SelectAll;
|
||
end;
|
||
except
|
||
on E: Exception do AddExceptionToLogExt(ClassName, 'SetControlsForProps', E.Message);
|
||
end;
|
||
end;
|
||
|
||
function TF_FindParams.GetCurrPropDataType: Integer;
|
||
begin
|
||
Result := 0;
|
||
|
||
FCurrProp := nil;
|
||
GUIDProperty := GetGUIDFromComboBox(cbxProperty);
|
||
if GUIDProperty <> '' then
|
||
begin
|
||
FCurrProp := FSpravochnik.GetPropertyByGUID(GUIDProperty);
|
||
if FCurrProp <> nil then
|
||
Result := FCurrProp.PropertyData.IDDataType;
|
||
end;
|
||
end;
|
||
|
||
function TF_FindParams.GetPropertValue: String;
|
||
var
|
||
DataType: Integer;
|
||
ValueFloat: Double;
|
||
begin
|
||
Result := '';
|
||
DataType := GetCurrPropDataType;
|
||
try
|
||
case DataType of
|
||
dtFloat:
|
||
begin
|
||
ValueFloat := seValue.Value;
|
||
PropValueInUOM(ValueFloat, FCurrProp.PropertyData.SysName, TF_Main(GForm).FUOM, umMetr);
|
||
Result := FloatToStrU(ValueFloat);
|
||
end;
|
||
dtInteger:
|
||
begin
|
||
ValueFloat := Int(seValue.Value);
|
||
PropValueInUOM(ValueFloat, FCurrProp.PropertyData.SysName, TF_Main(GForm).FUOM, umMetr);
|
||
Result := FloatToStrU(Int(ValueFloat));
|
||
end;
|
||
dtBoolean:
|
||
begin
|
||
Result := IntToStr(BoolToInt(cbValue.Checked));
|
||
end;
|
||
dtString, dtStringList:
|
||
begin
|
||
Result := edValue.Text;
|
||
end;
|
||
dtDate:
|
||
begin
|
||
Result := DateToStrU(deValue.Date);
|
||
end;
|
||
dtColor:
|
||
begin
|
||
Result := IntToStr(colorbValue.SelectedColor);
|
||
end;
|
||
dtDimensions:
|
||
Result := cbSectionSideValue.Text;
|
||
dtCompStateType, dtCableCanalElementType, dtConnectionKind, dtBasementType:
|
||
Result := IntToStr(GetIDFromComboBoxRz(cbItemList));
|
||
end;
|
||
except
|
||
end;
|
||
end;
|
||
|
||
|
||
procedure TF_FindParams.btOkClick(Sender: TObject);
|
||
begin
|
||
if Not cbName.Checked and
|
||
Not cbArtDistributor.Checked and
|
||
Not cbArtProducer.Checked and
|
||
Not cbIzm.Checked and
|
||
Not cbComponentType.Checked and
|
||
Not cbNetType.Checked and
|
||
Not cbProducer.Checked and
|
||
Not cbProperty.Checked
|
||
then
|
||
begin
|
||
ModalResult := mrNone;
|
||
MessageModal(cFindParams_Msg1, ApplicationName, MB_OK or MB_ICONINFORMATION);
|
||
Exit; ///// EXIT /////
|
||
end;
|
||
|
||
if Not cbFindAsCatalogs.Checked and
|
||
Not cbFindAsComponents.Checked and
|
||
Not cbFindAsLists.Checked and
|
||
Not cbFindAsRooms.Checked and
|
||
Not cbFindAsSCSObject.Checked then
|
||
begin
|
||
ModalResult := mrNone;
|
||
MessageModal(cFindParams_Msg2, ApplicationName, MB_OK or MB_ICONINFORMATION);
|
||
end;
|
||
end;
|
||
|
||
procedure TF_FindParams.cbFindAsCatalogsClick(Sender: TObject);
|
||
begin
|
||
SetControlsByCheckedFindElements(cbFindAsComponents.Checked, IsCheckedOneDirFindElement);
|
||
end;
|
||
|
||
procedure TF_FindParams.FormDestroy(Sender: TObject);
|
||
begin
|
||
FreeAndNil(FCheckBoxParamList);
|
||
FreeAndNil(FComponentCBParamList);
|
||
end;
|
||
|
||
procedure TF_FindParams.cbxPropertyPropertiesChange(Sender: TObject);
|
||
begin
|
||
SetControlsForProps(true);
|
||
end;
|
||
|
||
procedure TF_FindParams.cbPropertyValueClick(Sender: TObject);
|
||
begin
|
||
SetControlsForProps(true);
|
||
end;
|
||
|
||
end.
|