unit U_MarkMask; interface uses Windows, U_LNG, Messages, SysUtils, Variants, Classes, Contnrs, Graphics, Controls, Forms, Dialogs, cxLookAndFeelPainters, cxTextEdit, cxControls, cxContainer, U_Common_Classes, cxEdit, cxCheckBox, StdCtrls, cxButtons, ExtCtrls, RzPanel, cxMaskEdit, cxSpinEdit, U_BaseCommon, U_BaseConstants, siComp, siLngLnk, RzButton, RzRadChk, cxGraphics, cxLookAndFeels, Menus; type TMarkControlsGroup = class(TObject) protected procedure SetCheckBoxVal(ACheckBox: TRzCheckBox; AVal: Boolean); public FChecked: TRzCheckBox; FValue: TcxTextEdit; FExampleValue: TControl; FMinLen: TcxSpinEdit; FLetter: TRzCheckBox; FSimpleText: TcxTextEdit; FObjectPrefix: Char; procedure SetCheckedValue(AValue: Boolean); procedure SetLetterValue(AValue: Boolean); procedure SetMinLenValue(AValue: Double); end; TF_MarkMask = class(TForm) RzPanel1: TRzPanel; pnOkCancel: TRzPanel; Button_OK: TcxButton; Button_Cancel: TcxButton; RzGroupBox1: TRzGroupBox; RzGroupBox2: TRzGroupBox; Label2: TLabel; Edit_Example: TcxTextEdit; Label3: TLabel; Edit_Result: TcxTextEdit; lng_Forms: TsiLangLinked; CheckBox_Project: TRzCheckBox; CheckBox_List: TRzCheckBox; CheckBox_Room: TRzCheckBox; CheckBox_Object: TRzCheckBox; CheckBox_TopComponent: TRzCheckBox; CheckBox_Component: TRzCheckBox; CheckBox_ComponPort: TRzCheckBox; CheckBox_NameShort: TRzCheckBox; Label4: TLabel; Label5: TLabel; Label6: TLabel; edSimpleTextBefore: TcxTextEdit; Label1: TLabel; Edit_ProjValue: TcxTextEdit; Edit_ListValue: TcxTextEdit; Edit_RoomValue: TcxTextEdit; Edit_ObjectValue: TcxTextEdit; Edit_ComponValue: TcxTextEdit; Edit_NameShortValue: TcxTextEdit; Edit_ComponPort: TcxTextEdit; Edit_TopComponValue: TcxTextEdit; spMinLenProj: TcxSpinEdit; spMinLenList: TcxSpinEdit; spMinLenRoom: TcxSpinEdit; spMinLenObject: TcxSpinEdit; spMinLenCompon: TcxSpinEdit; spMinLenComponPort: TcxSpinEdit; spMinLenTopCompon: TcxSpinEdit; edSimpleTextProj: TcxTextEdit; edSimpleTextList: TcxTextEdit; edSimpleTextRoom: TcxTextEdit; edSimpleTextObject: TcxTextEdit; edSimpleTextCompon: TcxTextEdit; edSimpleTextNameShort: TcxTextEdit; edSimpleTextComponPort: TcxTextEdit; edSimpleTextTopCompon: TcxTextEdit; SpinEdit_ProjExValue: TcxSpinEdit; SpinEdit_ListExValue: TcxSpinEdit; SpinEdit_RoomExValue: TcxSpinEdit; SpinEdit_ObjExValue: TcxSpinEdit; SpinEdit_ComponExValue: TcxSpinEdit; Edit_NameShortExValue: TcxTextEdit; SpinEdit_ComponPortExValue: TcxSpinEdit; SpinEdit_TopComponExValue: TcxSpinEdit; cbParentComponent: TRzCheckBox; edParentComponValue: TcxTextEdit; spMinLenParentCompon: TcxSpinEdit; edSimpleTextParentCompon: TcxTextEdit; seParentComponExValue: TcxSpinEdit; Label7: TLabel; cbLetterProj: TRzCheckBox; cbLetterList: TRzCheckBox; cbLetterRoom: TRzCheckBox; cbLetterObject: TRzCheckBox; cbLetterTopCompon: TRzCheckBox; cbLetterParentCompon: TRzCheckBox; cbLetterCompon: TRzCheckBox; cbLetterComponPort: TRzCheckBox; ForAllObjOnList: TRzCheckBox; OnlyForSelectedObj: TRzCheckBox; RzBitBtn1: TRzBitBtn; procedure CheckBox_ElementChange(Sender: TObject); procedure Edit_ResultKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); procedure Edit_ProjValueKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); procedure Edit_NameShortExValueKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure pnOkCancelResize(Sender: TObject); procedure spMinLenPropertiesChange(Sender: TObject); procedure edSimpleTexKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); procedure SpinEdit_ProjExValuePropertiesChange(Sender: TObject); procedure Edit_ResultPropertiesChange(Sender: TObject); procedure cbLetterClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure ForAllObjOnListClick(Sender: TObject); procedure RzBitBtn1Click(Sender: TObject); private { Private declarations } FControlGroups: TObjectList; procedure AddControlsToGroup(ACheck, AValue, AExamplValue, AMinLen, ALetter, ASimpleText: TControl; AObjPrefix: Char); function GetMarkControlGroupByPrefix(APrefix: Char): TMarkControlsGroup; function GetElementBlock(APrefix: Char; AMinLen, ALetter: Integer): String; public GForm: TForm; GFormMode: TFormMode; constructor Create(AOwner: TComponent; AForm: TForm); destructor Destroy; override; function MakeEditMarkMask(AFormMode: TFormMode; var AMask: String): Boolean; procedure DivideMask(const AMask: String; ASetToResult: Boolean); procedure BuildMask; procedure BuildExample; procedure AfterCheckBoxChange(ACheckBox, AEditValue, AEditBoxWithExValue: TObject); procedure OnChangeTemplateParam(AControl: TObject); end; //var //F_MarkMask: TF_MarkMask; implementation uses U_SCSComponent, U_Main; {$R *.dfm} { TMarkControlsGroup } procedure TMarkControlsGroup.SetCheckBoxVal(ACheckBox: TRzCheckBox; AVal: Boolean); var SavedOnClick: TNotifyEvent; begin SavedOnClick := ACheckBox.OnClick; try ACheckBox.OnClick := nil; ACheckBox.Checked := AVal; finally ACheckBox.OnClick := SavedOnClick; end; end; procedure TMarkControlsGroup.SetCheckedValue(AValue: Boolean); begin SetCheckBoxVal(FChecked, AValue); end; procedure TMarkControlsGroup.SetLetterValue(AValue: Boolean); begin SetCheckBoxVal(FLetter, AValue); end; procedure TMarkControlsGroup.SetMinLenValue(AValue: Double); var SavedOnChange: TNotifyEvent; begin SavedOnChange := FMinLen.Properties.OnChange; try FMinLen.Properties.OnChange := nil; FMinLen.Value := AValue; finally FMinLen.Properties.OnChange := SavedOnChange; end; end; procedure TF_MarkMask.AddControlsToGroup(ACheck, AValue, AExamplValue, AMinLen, ALetter, ASimpleText: TControl; AObjPrefix: Char); var MarkControlsGroup: TMarkControlsGroup; begin MarkControlsGroup := TMarkControlsGroup.Create; MarkControlsGroup.FChecked := TRzCheckBox(ACheck); MarkControlsGroup.FValue := TcxTextEdit(AValue); MarkControlsGroup.FExampleValue := AExamplValue; MarkControlsGroup.FMinLen := TcxSpinEdit(AMinLen); MarkControlsGroup.FLetter := TRzCheckBox(ALetter); MarkControlsGroup.FSimpleText := TcxTextEdit(ASimpleText); MarkControlsGroup.FObjectPrefix := AObjPrefix; FControlGroups.Add(MarkControlsGroup); ACheck.Tag := Integer(MarkControlsGroup); AValue.Tag := Integer(MarkControlsGroup); AExamplValue.Tag := Integer(MarkControlsGroup); if AMinLen <> nil then AMinLen.Tag := Integer(MarkControlsGroup); if ALetter <> nil then ALetter.Tag := Integer(MarkControlsGroup); ASimpleText.Tag := Integer(MarkControlsGroup); end; function TF_MarkMask.GetMarkControlGroupByPrefix(APrefix: Char): TMarkControlsGroup; var MarkControlsGroup: TMarkControlsGroup; i: Integer; begin Result := nil; for i := 0 to FControlGroups.Count - 1 do begin MarkControlsGroup := TMarkControlsGroup(FControlGroups[i]); if MarkControlsGroup.FObjectPrefix = APrefix then begin Result := MarkControlsGroup; Break; //// BREAK //// end; end; end; function TF_MarkMask.GetElementBlock(APrefix: Char; AMinLen, ALetter: Integer): String; var ParamsStr: String; procedure AddToParams(const AParams: String); begin if ParamsStr <> '' then ParamsStr := ParamsStr + ' '; ParamsStr := ParamsStr + AParams; end; begin Result := '#'+APrefix; if (AMinLen > 0) or (ALetter <> biFalse) then begin //Result := '<'+Result+' '+mtMinLength+'='+IntToStr(AMinLen)+'>'; Result := '<'+Result+' '; ParamsStr := ''; if AMinLen > 0 then AddToParams(mtMinLength+'='+IntToStr(AMinLen)); if ALetter <> biFalse then AddToParams(mtLetter+'='+IntToStr(ALetter)); Result := Result +ParamsStr+ '>'; end; end; constructor TF_MarkMask.Create(AOwner: TComponent; AForm: TForm); begin GForm := AForm; inherited Create(AOwner); end; destructor TF_MarkMask.Destroy; begin inherited Destroy; end; function TF_MarkMask.MakeEditMarkMask(AFormMode: TFormMode; var AMask: String): Boolean; var ModRes: TModalResult; ControlExValue: TControl; ExampleNumberIndex: Integer; ExampleTextIndex: Integer; i: Integer; begin Result := false; try GFormMode := AFormMode; //20.09.2010 //SpinEdit_ProjExValue.Properties.OnChange := nil; // SpinEdit_ListExValue.Properties.OnChange := nil; // SpinEdit_RoomExValue.Properties.OnChange := nil; // SpinEdit_ObjExValue.Properties.OnChange := nil; // SpinEdit_TopComponExValue.Properties.OnChange := nil; // SpinEdit_ComponExValue.Properties.OnChange := nil; // SpinEdit_ComponPortExValue.Properties.OnChange := nil; // // SpinEdit_ProjExValue.Value := 1; // SpinEdit_ListExValue.Value := 2; // SpinEdit_RoomExValue.Value := 3; // SpinEdit_ObjExValue.Value := 4; // SpinEdit_TopComponExValue.Value := 5; // SpinEdit_ComponExValue.Value := 6; // SpinEdit_ComponPortExValue.Value := 7; // Edit_NameShortExValue.Text := 'A'; // // SpinEdit_ProjExValue.Properties.OnChange := SpinEdit_ProjExValuePropertiesChange; // SpinEdit_ListExValue.Properties.OnChange := SpinEdit_ProjExValuePropertiesChange; // SpinEdit_RoomExValue.Properties.OnChange := SpinEdit_ProjExValuePropertiesChange; // SpinEdit_ObjExValue.Properties.OnChange := SpinEdit_ProjExValuePropertiesChange; // SpinEdit_TopComponExValue.Properties.OnChange := SpinEdit_ProjExValuePropertiesChange; // SpinEdit_ComponExValue.Properties.OnChange := SpinEdit_ProjExValuePropertiesChange; // SpinEdit_ComponPortExValue.Properties.OnChange := SpinEdit_ProjExValuePropertiesChange; // Значения для примера ExampleNumberIndex := 0; ExampleTextIndex := 0; for i := 0 to FControlGroups.Count - 1 do begin ControlExValue := TMarkControlsGroup(FControlGroups[i]).FExampleValue; if ControlExValue <> nil then begin if ControlExValue is TcxSpinEdit then begin ExampleNumberIndex := ExampleNumberIndex + 1; TcxSpinEdit(ControlExValue).Properties.OnChange := nil; TcxSpinEdit(ControlExValue).Value := ExampleNumberIndex; TcxSpinEdit(ControlExValue).Properties.OnChange := SpinEdit_ProjExValuePropertiesChange; end else if ControlExValue is TcxTextEdit then begin ExampleTextIndex := ExampleTextIndex + 1; TcxTextEdit(ControlExValue).Text := DecToABC(ExampleTextIndex); end; end; end; //Edit_ProjValue.Text := mteProj+'.'; //Edit_ListValue.Text := mteList+'.'; //Edit_RoomValue.Text := mteRoom+'.'; //Edit_ObjectValue.Text := mteObject+'.'; //Edit_TopComponValue.Text := mteTopCompon; //Edit_ComponValue.Text := mteCompon; //Edit_ComponPort.Text := mteComponPort; //Edit_NameShortValue.Text := mteNameShort; case AFormMode of fmMake: begin Caption := cMakeEditMarkMask_Msg1_1; //CheckBox_Project.Checked := false; //CheckBox_List.Checked := true; //CheckBox_Room.Checked := true; //CheckBox_Object.Checked := true; //CheckBox_TopComponent.Checked := true; //CheckBox_Component.Checked := true; //CheckBox_ComponPort.Checked := true; //CheckBox_NameShort.Checked := true; //BuildMask; DivideMask(AMask, true); end; fmEdit: begin Caption := cMakeEditMarkMask_Msg1_2; DivideMask(AMask, true); end; end; ModRes := ShowModal; if ModRes = mrOk then begin AMask := Edit_Result.Text; Result := true; end; except on E: Exception do AddExceptionToLog('TF_MarkMask.MakeEditMarkMask'+ E.Message); end; end; // ##### Разобъет маску по ячейкам ##### procedure TF_MarkMask.DivideMask(const AMask: String; ASetToResult: Boolean); var {CurrCheckBox: TRzCheckBox; CurrEditValue: TcxTextEdit; i: integer; PrevChar: Char; CurrChar: Char; Len: Integer;} i: Integer; MarkControlsGroup: TMarkControlsGroup; MarkTemplateObjects: TObjectList; MarkTemplateObj: TMarkTemplateObj; FindedBlockCount: Integer; begin try {CurrCheckBox := nil; CurrEditValue := nil; PrevChar := #0; CurrChar := #0; CheckBox_Project.Checked := true; CheckBox_List.Checked := true; CheckBox_Room.Checked := true; CheckBox_Object.Checked := true; CheckBox_TopComponent.Checked := true; CheckBox_Component.Checked := true; CheckBox_ComponPort.Checked := true; CheckBox_NameShort.Checked := true; CheckBox_Project.Checked := false; CheckBox_List.Checked := false; CheckBox_Room.Checked := false; CheckBox_Object.Checked := false; CheckBox_TopComponent.Checked := false; CheckBox_Component.Checked := false; CheckBox_ComponPort.Checked := false; CheckBox_NameShort.Checked := false; Len := Length(AMask); for i := 1 to Len do begin PrevChar := CurrChar; CurrChar := AMask[i]; if PrevChar = '#' then begin case CurrChar of 'p': //, 'P': //*** Проект begin CurrCheckBox := CheckBox_Project; CurrEditValue := Edit_ProjValue; end; 'l': //, 'L': //*** Лист begin CurrCheckBox := CheckBox_List; CurrEditValue := Edit_ListValue; end; 'r': //, 'R': //*** Комната begin CurrCheckBox := CheckBox_Room; CurrEditValue := Edit_RoomValue; end; 'o': //, 'O': //*** Объект begin CurrCheckBox := CheckBox_Object; CurrEditValue := Edit_ObjectValue; end; 'C': //*** Верхний компонент begin CurrCheckBox := CheckBox_TopComponent; CurrEditValue := Edit_TopComponValue; end; 'c': //, 'C': //*** Компонент begin CurrCheckBox := CheckBox_Component; CurrEditValue := Edit_ComponValue; end; 't': //, 'T': //*** Порт begin CurrCheckBox := CheckBox_ComponPort; CurrEditValue := Edit_ComponPort; end; 's': //, 'S': //*** Символьная маркировка компоненты begin CurrCheckBox := CheckBox_NameShort; CurrEditValue := Edit_NameShortValue; end; end; if CurrCheckBox <> nil then CurrCheckBox.Checked := true; if CurrEditValue <> nil then CurrEditValue.Text := PrevChar + CurrChar; end else if CurrChar <> '#' then if CurrEditValue <> nil then CurrEditValue.Text := CurrEditValue.Text + CurrChar; end; Edit_Result.Text := AMask; BuildExample;} // Дизейблим и чистим все нах edSimpleTextBefore.Text := ''; for i := 0 to FControlGroups.Count - 1 do begin MarkControlsGroup := TMarkControlsGroup(FControlGroups[i]); MarkControlsGroup.SetCheckedValue(false); MarkControlsGroup.FValue.Text := GetElementBlock(MarkControlsGroup.FObjectPrefix, 0, biFalse); MarkControlsGroup.FValue.Enabled := false; //if MarkControlsGroup.FExampleValue is TcxSpinEdit then // TcxSpinEdit(MarkControlsGroup.FExampleValue).Value := 0 //else //if MarkControlsGroup.FExampleValue is TcxTextEdit then // TcxTextEdit(MarkControlsGroup.FExampleValue).Text := ''; MarkControlsGroup.FExampleValue.Enabled := false; if MarkControlsGroup.FMinLen <> nil then begin MarkControlsGroup.SetMinLenValue(0); MarkControlsGroup.FMinLen.Enabled := false; end; if MarkControlsGroup.FLetter <> nil then begin MarkControlsGroup.SetLetterValue(false); MarkControlsGroup.FLetter.Enabled := false; end; MarkControlsGroup.FSimpleText.Text := '.'; MarkControlsGroup.FSimpleText.Enabled := false; end; MarkTemplateObjects := TObjectList.Create(true); LoadMarkTemplateObjectsToList(AMask, MarkTemplateObjects); FindedBlockCount := 0; for i := 0 to MarkTemplateObjects.Count - 1 do begin MarkTemplateObj := TMarkTemplateObj(MarkTemplateObjects[i]); MarkControlsGroup := GetMarkControlGroupByPrefix(MarkTemplateObj.FObjPrefix); if MarkControlsGroup <> nil then begin if FindedBlockCount = 0 then edSimpleTextBefore.Text := MarkTemplateObj.FBeforeText; MarkControlsGroup.SetCheckedValue(true); MarkControlsGroup.FValue.Text := GetElementBlock(MarkTemplateObj.FObjPrefix, MarkTemplateObj.FMinIndexLength, MarkTemplateObj.FLetter); MarkControlsGroup.FExampleValue.Enabled := true; if MarkControlsGroup.FMinLen <> nil then begin MarkControlsGroup.SetMinLenValue(MarkTemplateObj.FMinIndexLength); MarkControlsGroup.FMinLen.Enabled := true; end; if MarkControlsGroup.FLetter <> nil then begin MarkControlsGroup.SetLetterValue(IntToBool(MarkTemplateObj.FLetter)); MarkControlsGroup.FLetter.Enabled := true; end; MarkControlsGroup.FSimpleText.Text := MarkTemplateObj.FAfterText; MarkControlsGroup.FSimpleText.Enabled := true; FindedBlockCount := FindedBlockCount + 1; end; end; FreeAndNil(MarkTemplateObjects); if ASetToResult then SetValueToCXTextEditAsNoChange(Edit_Result, AMask); BuildExample; except on E: Exception do AddExceptionToLog('TF_MarkMask.DivideMask: '+E.Message); end; end; // ##### Строит маску ##### procedure TF_MarkMask.BuildMask; var i: Integer; MarkControlsGroup: TMarkControlsGroup; MarkTemplate: string; begin try {Edit_Result.Text := ''; if CheckBox_Project.Checked then Edit_Result.Text := Edit_Result.Text + Edit_ProjValue.Text; if CheckBox_List.Checked then Edit_Result.Text := Edit_Result.Text + Edit_ListValue.Text; if CheckBox_Room.Checked then Edit_Result.Text := Edit_Result.Text + Edit_RoomValue.Text; if CheckBox_Object.Checked then Edit_Result.Text := Edit_Result.Text + Edit_ObjectValue.Text; if CheckBox_TopComponent.Checked then Edit_Result.Text := Edit_Result.Text + Edit_TopComponValue.Text; if CheckBox_Component.Checked then Edit_Result.Text := Edit_Result.Text + Edit_ComponValue.Text; if CheckBox_ComponPort.Checked then Edit_Result.Text := Edit_Result.Text + Edit_ComponPort.Text; if CheckBox_NameShort.Checked and CheckBox_NameShort.Enabled then Edit_Result.Text := Edit_Result.Text + Edit_NameShortValue.Text; BuildExample; } MarkTemplate := edSimpleTextBefore.Text; for i := 0 to FControlGroups.Count - 1 do begin MarkControlsGroup := TMarkControlsGroup(FControlGroups[i]); if MarkControlsGroup.FChecked.Checked then MarkTemplate := MarkTemplate + MarkControlsGroup.FValue.Text + MarkControlsGroup.FSimpleText.Text; end; SetValueToCXTextEditAsNoChange(Edit_Result, MarkTemplate); BuildExample; except on E: Exception do AddExceptionToLog('TF_MarkMask.BuildMask: '+E.Message); end; end; // ##### Строит Пример ##### procedure TF_MarkMask.BuildExample; var MarkTemplateObjects: TObjectList; begin try { Edit_Example.Text := MakeMarkMaskForComponent(SpinEdit_ProjExValue.Value, SpinEdit_ListExValue.Value, SpinEdit_RoomExValue.Value, SpinEdit_ObjExValue.Value, SpinEdit_TopComponExValue.Value, SpinEdit_ComponExValue.Value, SpinEdit_ComponPortExValue.Value, Edit_NameShortExValue.Text, Edit_Result.Text); } MarkTemplateObjects := TObjectList.Create(true); LoadMarkTemplateObjectsToList(Edit_Result.Text, MarkTemplateObjects); Edit_Example.Text := MakeMarkMaskForComponByBlocks(SpinEdit_ProjExValue.Value, SpinEdit_ListExValue.Value, SpinEdit_RoomExValue.Value, SpinEdit_ObjExValue.Value, SpinEdit_TopComponExValue.Value, seParentComponExValue.Value, SpinEdit_ComponExValue.Value, SpinEdit_ComponPortExValue.Value, Edit_NameShortExValue.Text, '', nil, MarkTemplateObjects); FreeAndNil(MarkTemplateObjects); except on E: Exception do AddExceptionToLog('TF_MarkMask.BuildExample: '+E.Message); end; end; procedure TF_MarkMask.AfterCheckBoxChange(ACheckBox, AEditValue, AEditBoxWithExValue: TObject); begin TcxCustomEdit(AEditValue).Enabled := TRzCheckBox(ACheckBox).Checked; TcxCustomEdit(AEditBoxWithExValue).Enabled := TRzCheckBox(ACheckBox).Checked; //TcxTextEdit(AEditValue).Enabled := TcxCheckBox(ACheckBox).Checked; //TcxSpinEdit(ASpinEditExValue).Enabled := TcxCheckBox(ACheckBox).Checked; BuildMask; end; procedure TF_MarkMask.OnChangeTemplateParam(AControl: TObject); var MarkControlsGroup: TMarkControlsGroup; MinLen: Integer; Letter: Integer; begin if (AControl <> nil) and (AControl is TControl) then if TControl(AControl).Tag <> 0 then begin MarkControlsGroup := TMarkControlsGroup(TControl(AControl).Tag); MinLen := 0; Letter := biFalse; if MarkControlsGroup.FMinLen <> nil then MinLen := Trunc(MarkControlsGroup.FMinLen.Value); if MarkControlsGroup.FLetter <> nil then Letter := BoolToInt(MarkControlsGroup.FLetter.Checked); MarkControlsGroup.FValue.Text := GetElementBlock(MarkControlsGroup.FObjectPrefix, MinLen, Letter); BuildMask; end; end; // ##### после изменения обновляет маску и пример ##### procedure TF_MarkMask.Edit_ProjValueKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); begin BuildMask; end; procedure TF_MarkMask.SpinEdit_ProjExValuePropertiesChange( Sender: TObject); begin BuildExample; end; // ##### после изменения обновляет пример ##### procedure TF_MarkMask.Edit_NameShortExValueKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); begin BuildExample; end; // ##### после изменения обновляет пример ##### procedure TF_MarkMask.Edit_ResultKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); begin //BuildExample; end; procedure TF_MarkMask.FormCreate(Sender: TObject); begin FControlGroups := TObjectList.Create(true); AddControlsToGroup(CheckBox_Project, Edit_ProjValue, SpinEdit_ProjExValue, spMinLenProj, cbLetterProj, edSimpleTextProj, 'p'); AddControlsToGroup(CheckBox_List, Edit_ListValue, SpinEdit_ListExValue, spMinLenList, cbLetterList, edSimpleTextList, 'l'); AddControlsToGroup(CheckBox_Room, Edit_RoomValue, SpinEdit_RoomExValue, spMinLenRoom, cbLetterRoom, edSimpleTextRoom, 'r'); AddControlsToGroup(CheckBox_Object, Edit_ObjectValue, SpinEdit_ObjExValue, spMinLenObject, cbLetterObject, edSimpleTextObject, 'o'); AddControlsToGroup(CheckBox_TopComponent, Edit_TopComponValue, SpinEdit_TopComponExValue, spMinLenTopCompon, cbLetterTopCompon, edSimpleTextTopCompon, 'C'); AddControlsToGroup(cbParentComponent, edParentComponValue, seParentComponExValue, spMinLenParentCompon, cbLetterParentCompon, edSimpleTextParentCompon, 'P'); AddControlsToGroup(CheckBox_Component, Edit_ComponValue, SpinEdit_ComponExValue, spMinLenCompon, cbLetterCompon, edSimpleTextCompon, 'c'); AddControlsToGroup(CheckBox_ComponPort, Edit_ComponPort, SpinEdit_ComponPortExValue, spMinLenComponPort, cbLetterComponPort, edSimpleTextComponPort, 't'); AddControlsToGroup(CheckBox_NameShort, Edit_NameShortValue, Edit_NameShortExValue, nil, nil, edSimpleTextNameShort, 's'); pnOkCancelResize(pnOkCancel); end; procedure TF_MarkMask.FormDestroy(Sender: TObject); begin FreeAndNil(FControlGroups); end; procedure TF_MarkMask.pnOkCancelResize(Sender: TObject); begin SetMiddleControlChilds(TControl(Sender), TControl(Self)); end; procedure TF_MarkMask.CheckBox_ElementChange(Sender: TObject); var MarkControlsGroup: TMarkControlsGroup; begin //AfterCheckBoxChange(Sender, Edit_ProjValue, SpinEdit_ProjExValue); if Sender <> nil then if TControl(Sender).Tag <> 0 then begin MarkControlsGroup := TMarkControlsGroup(TControl(Sender).Tag); MarkControlsGroup.FExampleValue.Enabled := MarkControlsGroup.FChecked.Checked; if MarkControlsGroup.FMinLen <> nil then MarkControlsGroup.FMinLen.Enabled := MarkControlsGroup.FChecked.Checked; if MarkControlsGroup.FLetter <> nil then MarkControlsGroup.FLetter.Enabled := MarkControlsGroup.FChecked.Checked; MarkControlsGroup.FSimpleText.Enabled := MarkControlsGroup.FChecked.Checked; BuildMask; end; end; procedure TF_MarkMask.spMinLenPropertiesChange(Sender: TObject); //var // MarkControlsGroup: TMarkControlsGroup; // MinLen: Integer; begin // if Sender <> nil then // if TControl(Sender).Tag <> 0 then // begin // MarkControlsGroup := TMarkControlsGroup(TControl(Sender).Tag); // MinLen := 0; // if MarkControlsGroup.FMinLen <> nil then // MinLen := Trunc(MarkControlsGroup.FMinLen.Value); // // MarkControlsGroup.FValue.Text := GetElementBlock(MarkControlsGroup.FObjectPrefix, MinLen); // // BuildMask; // end; OnChangeTemplateParam(Sender); end; procedure TF_MarkMask.cbLetterClick(Sender: TObject); begin OnChangeTemplateParam(Sender); end; procedure TF_MarkMask.edSimpleTexKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); begin BuildMask; end; procedure TF_MarkMask.Edit_ResultPropertiesChange(Sender: TObject); begin DivideMask(Edit_Result.Text, false); end; procedure TF_MarkMask.FormShow(Sender: TObject); begin ForAllObjOnList.Visible := ShowCheckBoxOnTemplateMarkForm; OnlyForSelectedObj.Visible := ShowCheckBoxOnTemplateMarkForm; end; procedure TF_MarkMask.ForAllObjOnListClick(Sender: TObject); begin try if ForAllObjOnList.Checked then OnlyForSelectedObj.Enabled := True else OnlyForSelectedObj.Enabled := False; except on E: Exception do AddExceptionToLogEx('TF_MasterNewList.cbApplyForAllSCSObjectsClick', E.Message); end; end; procedure TF_MarkMask.RzBitBtn1Click(Sender: TObject); begin with TF_Main(GForm).F_AnswerToQuast do begin GCaption := cMarkMask_Msg1; GAnswer := cMarkMask_Msg2; ShowContextHelp(GCaption, GAnswer); end; end; end.