Changeset 434
Author: nrymanov@gmail.com
(2010/02/01 11:26) About 2 years ago
see #29 - Редизайн и унификация пользовательского интерфейса
Author: nrymanov@gmail.com
(2010/02/01 11:26) About 2 years ago
see #29 - Редизайн и унификация пользовательского интерфейса
ClientHeight = 216ClientHeight = 133OnShow = FormShowobject gbInfo: TGroupBoxobject Label1: TLabelAlignWithMargins = TrueLeft = 8Left = 3Top = 13Top = 3Width = 48Width = 352Height = 13Height = 102Caption = '&'#1060#1072#1084#1080#1083#1080#1103':'Align = alTopFocusControl = edLastNameTabOrder = 0object Label1: TLabelLeft = 9Top = 17Width = 48Height = 13Caption = '&'#1060#1072#1084#1080#1083#1080#1103':'FocusControl = edFamilyendobject Label2: TLabelLeft = 9Top = 44Width = 23Height = 13Caption = '&'#1048#1084#1103':'FocusControl = edNameendobject Label3: TLabelLeft = 9Top = 71Width = 53Height = 13Caption = #1054'&'#1090#1095#1077#1089#1090#1074#1086':'FocusControl = edMiddleendobject edFamily: TEditLeft = 73Top = 14Width = 270Height = 21TabOrder = 0endobject edName: TEditLeft = 73Top = 41Width = 270Height = 21TabOrder = 1endobject edMiddle: TEditLeft = 73Top = 68Width = 270Height = 21TabOrder = 2endobject gbAddNew: TGroupBoxobject Label2: TLabelAlignWithMargins = TrueLeft = 8Left = 3Top = 40Top = 108Width = 23Width = 352Height = 13Height = 61Caption = '&'#1048#1084#1103':'Margins.Top = 0FocusControl = edFirstNameMargins.Bottom = 0Align = alTopCaption = #1054'&'#1087#1094#1080#1080TabOrder = 1Visible = Falseobject cbAddNew: TCheckBoxLeft = 17Top = 28Width = 85Height = 15Caption = '&'#1053#1086#1074#1099#1081' '#1072#1074#1090#1086#1088TabOrder = 0endobject cbSaveLinks: TCheckBoxLeft = 158Top = 28Width = 108Height = 15Caption = #1057#1086'&'#1093#1088#1072#1085#1080#1090#1100' '#1089#1074#1103#1079#1080TabOrder = 1endTop = 175Top = 92TabOrder = 2TabOrder = 3ExplicitTop = 175gbInfo: TGroupBox;edFamily: TEdit;edName: TEdit;edMiddle: TEdit;gbAddNew: TGroupBox;edLastName: TEdit;cbAddNew: TCheckBox;edFirstName: TEdit;cbSaveLinks: TCheckBox;edMiddleName: TEdit;procedure FormShow(Sender: TObject);function GetAddNewState: boolean;function GetFirstName: string;function GetSaveLinks: boolean;function GetLastName: string;procedure SetShowCheckBoxes(const Value: boolean);function GetMidName: string;{ Private declarations }procedure SetFirstName(const Value: string);procedure SetLastName(const Value: string);procedure SetMidName(const Value: string);{ Public declarations }property LastName: string read GetLastName write SetLastName;property ShowCheckBoxes: boolean write SetShowCheckBoxes default False;property FirstName: string read GetFirstName write SetFirstName;property AddNew: boolean read GetAddNewState;property MidName: string read GetMidName write SetMidName;property SaveLinks: boolean read GetSaveLinks;{$R *.dfm}{$R *.dfm}{ TfrmEditAuthor }{ TfrmEditAuthorData }procedure TfrmEditAuthorData.FormShow(Sender: TObject);function TfrmEditAuthorData.GetFirstName: string;ActiveControl := edFamily;Result := Trim(edFirstName.Text);function TfrmEditAuthorData.GetAddNewState: boolean;function TfrmEditAuthorData.GetLastName: string;Result := cbAddNew.Checked;Result := Trim(edLastName.Text);function TfrmEditAuthorData.GetSaveLinks: boolean;function TfrmEditAuthorData.GetMidName: string;Result := cbSaveLinks.Checked;Result := Trim(edMiddleName.Text);procedure TfrmEditAuthorData.SetShowCheckBoxes(const Value: boolean);procedure TfrmEditAuthorData.SetFirstName(const Value: string);gbAddNew.Visible := Value;edFirstName.Text := Value;Family.Caption := frmEditAuthor.edFamily.Text;Family.Caption := frmEditAuthor.LastName;Family.SubItems.Add(frmEditAuthor.edName.Text);Family.SubItems.Add(frmEditAuthor.FirstName);Family.SubItems.Add(frmEditAuthor.edMiddle.Text);Family.SubItems.Add(frmEditAuthor.MidName);frmEditAuthor.edFamily.Text := Family.Caption;frmEditAuthor.LastName := Family.Caption;frmEditAuthor.edName.Text := Family.SubItems[0];frmEditAuthor.FirstName := Family.SubItems[0];frmEditAuthor.edMiddle.Text := Family.SubItems[1];frmEditAuthor.MidName := Family.SubItems[1];Family.Caption := frmEditAuthor.edFamily.Text;Family.Caption := frmEditAuthor.LastName;Family.SubItems[0] := frmEditAuthor.edName.Text;Family.SubItems[0] := frmEditAuthor.FirstName;Family.SubItems[1] := frmEditAuthor.edMiddle.Text;Family.SubItems[1] := frmEditAuthor.MidName;frm_ConverToFBD;frm_ConverToFBD,frmEditAuthorEx;dmCollection.tblAuthors.Locate('A_ID', dmCollection.tblAuthor_List['AL_AuthID'], []);dmCollection.tblAuthors.Locate('A_ID', dmCollection.tblAuthor_List['AL_AuthID'], []);frmEditAuthorData.edFamily.Text := dmCollection.tblAuthors.FieldByName('A_Family').AsString;frmEditAuthor := TfrmEditAuthorDataEx.Create(Self);frmEditAuthorData.edName.Text := dmCollection.tblAuthors.FieldByName('A_Name').AsString;tryfrmEditAuthorData.edMiddle.Text := dmCollection.tblAuthors.FieldByName('A_Middle').AsString;frmEditAuthor.LastName := dmCollection.tblAuthors.FieldByName('A_Family').AsString;frmEditAuthor.FirstName := dmCollection.tblAuthors.FieldByName('A_Name').AsString;frmEditAuthor.MidName := dmCollection.tblAuthors.FieldByName('A_Middle').AsString;frmEditAuthorData.ShowCheckBoxes := True;if frmEditAuthor.ShowModal = mrOk thenbeginS := Trim(AnsiUpperCase(frmEditAuthor.LastName + ' ' +frmEditAuthor.FirstName + ' ' +frmEditAuthor.MidName));if frmEditAuthorData.ShowModal = mrOk thenif (not frmEditAuthor.AddNew) and (not frmEditAuthor.SaveLinks) thenbegin// , if dmCollection.tblAuthors.Locate('A_Family;A_Name;A_Middle',VarArrayOf([frmEditAuthor.LastName, frmEditAuthor.FirstName, frmEditAuthor.MidName]),[loCaseInsensitive])thenbegin// , ()new_AiD := dmCollection.tblAuthorsID.Value;repeat// Id { TODO -oNickR -cRefactoring : UPDATE }dmCollection.tblAuthor_List.MasterSource := nil;S := trim(AnsiUpperCase(frmEditAuthorData.edFamily.Text + ' ' +Res := dmCollection.tblAuthor_List.Locate('AL_AuthID',old_Aid,[]);frmEditAuthorData.edName.Text + ' ' +if Res thenfrmEditAuthorData.edMiddle.Text));begindmCollection.tblAuthor_List.Edit;dmCollection.tblAuthor_ListAL_AuthID.Value := new_AiD;dmCollection.tblAuthor_List.Post;end;until not Res;if (not frmEditAuthorData.AddNew) and (not frmEditAuthorData.SaveLinks) thenrepeatbegin // ,Res := dmCollection.tblBooks.Locate('FullName', AnsiUpperCase(Data.FullName), [loCaseInsensitive]);if dmCollection.tblAuthors.Locate('A_Family;A_Name;A_Middle',if Res thenVarArrayOf([frmEditAuthorData.edFamily.Text,beginfrmEditAuthorData.edName.Text,dmCollection.tblBooks.Edit;frmEditAuthorData.edMiddle.Text]),dmCollection.tblBooksFullName.Value := S;[loCaseInsensitive]) thendmCollection.tblBooks.Post;begin // , ()end;new_AiD := dmCollection.tblAuthorsID.Value;until not Res;repeat// Id // { TODO -oNickR -cRefactoring : UPDATE }dmCollection.tblAuthor_List.MasterSource := nil;Res := dmCollection.tblAuthor_List.Locate('AL_AuthID',old_Aid,[]);//if Res thenif dmCollection.tblAuthors.Locate('A_ID', old_Aid,[]) thenbegindmCollection.tblAuthors.Delete;dmCollection.tblAuthor_List.Edit;dmCollection.tblAuthor_ListAL_AuthID.Value := new_AiD;dmCollection.tblAuthor_List.Post;end;until not Res;// { TODO -oNickR -cRefactoring : UPDATE }dmCollection.tblAuthor_List.MasterSource := dmCollection.dsAuthors;end // if Locateelse // -begindmCollection.tblAuthors.Edit;dmCollection.tblAuthorsFamily.Value := frmEditAuthor.LastName;dmCollection.tblAuthorsName.Value := frmEditAuthor.FirstName;dmCollection.tblAuthorsMiddle.Value := frmEditAuthor.MidName;dmCollection.tblAuthors.Post;end;{ TODO -oNickR -cRefactoring : UPDATE }Res := dmCollection.tblBooks.Locate('FullName', AnsiUpperCase(Data.FullName), [loCaseInsensitive]);Res := dmCollection.tblBooks.Locate('FullName', AnsiUpperCase(Data.FullName), [loCaseInsensitive]);if dmCollection.tblAuthors.Locate('A_ID', old_Aid,[]) thendmCollection.tblAuthors.Delete; //dmCollection.tblAuthor_List.MasterSource := dmCollection.dsAuthors;end // if Locateelse // -begindmCollection.tblAuthors.Edit;dmCollection.tblAuthorsFamily.Value := frmEditAuthorData.edFamily.Text;dmCollection.tblAuthorsName.Value := frmEditAuthorData.edName.Text;dmCollection.tblAuthorsMiddle.Value := frmEditAuthorData.edMiddle.Text;dmCollection.tblAuthors.Post;repeatif (frmEditAuthor.AddNew) then{ TODO -oNickR -cRefactoring : UPDATE }begin //Res := dmCollection.tblBooks.Locate('FullName', AnsiUpperCase(Data.FullName), [loCaseInsensitive]);//if Res thenif not dmCollection.tblAuthors.Locate('A_Family;A_Name;A_Middle',VarArrayOf([frmEditAuthor.LastName, frmEditAuthor.FirstName, frmEditAuthor.MidName]),[loCaseInsensitive])thendmCollection.tblBooks.Edit;dmCollection.tblAuthors.Insert;dmCollection.tblBooksFullName.Value := S;dmCollection.tblAuthorsFamily.Value := frmEditAuthor.LastName;dmCollection.tblBooks.Post;dmCollection.tblAuthorsName.Value := frmEditAuthor.FirstName;dmCollection.tblAuthorsMiddle.Value := frmEditAuthor.MidName;dmCollection.tblAuthors.Post;until not Res;end;if (frmEditAuthorData.AddNew) then//begin //dmCollection.tblAuthor_List.MasterSource := nil;//Node := Tree.GetFirst;if not dmCollection.tblAuthors.Locate('A_Family;A_Name;A_Middle',while Node <> Nil doVarArrayOf([frmEditAuthorData.edFamily.Text,frmEditAuthorData.edName.Text,frmEditAuthorData.edMiddle.Text]),[loCaseInsensitive]) thenbegindmCollection.tblAuthors.Insert;dmCollection.tblAuthorsFamily.Value := frmEditAuthorData.edFamily.Text;dmCollection.tblAuthorsName.Value := frmEditAuthorData.edName.Text;dmCollection.tblAuthorsMiddle.Value := frmEditAuthorData.edMiddle.Text;dmCollection.tblAuthors.Post;end;//dmCollection.tblAuthor_List.MasterSource := nil;Node := Tree.GetFirst;while Node <> Nil dobeginData := Tree.GetNodeData(Node);if (Data.nodeType = ntBookInfo) and((Tree.CheckState[Node] = csCheckedNormal) or(Tree.Selected[Node])) thenif not frmEditAuthorData.SaveLinks then //Data := Tree.GetNodeData(Node);if (Data.nodeType = ntBookInfo) and((Tree.CheckState[Node] = csCheckedNormal) or(Tree.Selected[Node])) thenif dmCollection.tblAuthor_List.Locate('AL_BookID',Data.ID,[]) thenif not frmEditAuthor.SaveLinks then //dmCollection.tblAuthor_List.Edit;if dmCollection.tblAuthor_List.Locate('AL_BookID',Data.ID,[]) thenbegindmCollection.tblAuthor_List.Edit;dmCollection.tblAuthor_ListAL_AuthID.Value := dmCollection.tblAuthorsID.Value;dmCollection.tblAuthor_List.Post;endendelsebegin //dmCollection.tblAuthor_List.Insert;dmCollection.tblAuthor_List.Post;dmCollection.tblAuthor_ListAL_BookID.Value := Data.ID;endendelsebegin //dmCollection.tblAuthor_List.Insert;dmCollection.tblAuthor_ListAL_AuthID.Value := dmCollection.tblAuthorsID.Value;dmCollection.tblAuthor_ListAL_BookID.Value := Data.ID;dmCollection.tblAuthor_ListAL_Series.Value := Copy(Data.Series, 1, IndexSize);dmCollection.tblAuthor_ListAL_Title.Value := Copy(Data.Title, 1, IndexSize);dmCollection.tblAuthor_List.Post;end;dmCollection.tblBooks.Locate('ID', Data.ID, []);dmCollection.tblBooks.Edit;dmCollection.tblBooksFullName.Value:= S;dmCollection.tblBooks.Post;dmCollection.tblBooks.Locate('ID', Data.ID, []);Node := Tree.GetNext(Node,False);dmCollection.tblBooks.Edit;dmCollection.tblBooksFullName.Value:= S;dmCollection.tblBooks.Post;Node := Tree.GetNext(Node,False);dmCollection.tblAuthor_List.MasterSource := dmCollection.dsAuthors;dmCollection.tblAuthor_List.MasterSource := dmCollection.dsAuthors;InitCollection(True);InitCollection(True);finallyfrmEditAuthor.Free;frmCreateMask:= TfrmCreateMask.Create(self);// TODO -oNickR -cCode quality : - . if (Sender as TRzButtonEdit).Tag = 785 thenif (sender as TRzButtonEdit).Tag = 785 thenfrmCreateMask.ShowModal;if frmCreateMask.ShowModal = mrOk thenif frmCreateMask.ModalResult = mrOk then(Sender as TRzButtonEdit).Text := frmCreateMask.edTemplate.Text;(Sender as TRzButtonEdit).text := frmCreateMask.edTemplate.Text;frm_create_mask in 'Forms\frm_create_mask.pas' {frmCreateMask},frm_create_mask in 'Forms\frm_create_mask.pas' {frmCreateMask},frame_NCWDownload in 'Wizards\NewCollection\frame_NCWDownload.pas' {frameNCWDownload: TFrame},frame_NCWDownload in 'Wizards\NewCollection\frame_NCWDownload.pas' {frameNCWDownload: TFrame},unit_Templater in 'Units\unit_Templater.pas';unit_Templater in 'Units\unit_Templater.pas',frmEditAuthorEx in 'Forms\frmEditAuthorEx.pas' {frmEditAuthorDataEx};{$R *.res}{$R *.res}// ! // - ! Application.CreateForm(TDMUser, DMUser);// ! // - ! Application.CreateForm(TDMUser, DMUser);Application.CreateForm(TDMCollection, DMCollection);Application.CreateForm(TfrmMain, frmMain);Application.CreateForm(TfrmMain, frmMain);// - ! Application.CreateForm(TDMCollection, DMCollection);Application.CreateForm(TfrmEditAuthorData, frmEditAuthorData);{ ****************************************************************************** }(* *****************************************************************************{ }*{ MyHomeLib }* MyHomeLib{ }*{ Version 1 }* *{ 31.01.2010 }* Version 1.0{ Copyright (c) Matvienko Sergei matv84@mail.ru }* 31.01.2010{ }* Copyright (c) Aleksey Penkov alex.penkov@gmail.com{ }* Author Matvienko Sergei matv84@mail.ru{ ****************************************************************************** }******************************************************************************* *)FTemplate: string;FParsedString: string;FBlocksMap: array of TElement;function SetTemplate(Template: String): TErrorType;function SetTemplate(Template: string): TErrorType;uses SysUtils, unit_Globals, unit_Consts;SysUtils, unit_Globals, unit_Consts;FParsedString := '';FTemplate := '';mask_elements: array [1 .. 8] of string = ('f', 't', 's', 'n', 'id', 'g',mask_elements: array [1 .. 8] of string = ('f', 't', 's', 'n', 'id', 'g', 'fl', 'rg');'fl', 'rg');h, k, i, j, StackPos, ElementPos, ColElements, last_char, last_col_elements: integer;last_col_elements: integer;inc(ColElements);Inc(ColElements);SetLength(FBlocksMap, ColElements);FBlocksMap[i].name := '';inc(k);Inc(k);inc(k);Inc(k);// if TemplatePart[i] = '[' then// if TemplatePart[i] = '[' theninc(StackPos);Inc(StackPos);Result := ErTemplate; // exit;Result := ErTemplate; // exit;// inc(i);// inc(i);inc(i);Inc(i);dec(i);Dec(i);BlocksMap[ElementPos + last_col_elements].name := stack[StackPos]FBlocksMap[ElementPos + last_col_elements].name := stack[StackPos].name;.name;FBlocksMap[ElementPos + last_col_elements].BegBlock := 0;BlocksMap[ElementPos + last_col_elements].BegBlock := 0;FBlocksMap[ElementPos + last_col_elements].EndBlock := 0;BlocksMap[ElementPos + last_col_elements].EndBlock := 0;Inc(ElementPos);inc(ElementPos);exit;Exit;FBlocksMap[ElementPos + last_col_elements].name := stack[StackPos].name;BlocksMap[ElementPos + last_col_elements].BegBlock := stack[StackPos]FBlocksMap[ElementPos + last_col_elements].BegBlock := stack[StackPos].BegBlock + last_char;.BegBlock + last_char;FBlocksMap[ElementPos + last_col_elements].EndBlock := stack[StackPos].EndBlock + last_char;BlocksMap[ElementPos + last_col_elements].EndBlock := stack[StackPos]Inc(ElementPos);.EndBlock + last_char;inc(ElementPos);dec(StackPos);Dec(StackPos);inc(i);Inc(i);for h := Low(BlocksMap) to High(BlocksMap) dofor h := Low(FBlocksMap) to High(FBlocksMap) doif FBlocksMap[h].name <> '' thenbol := false;bol := False;if FBlocksMap[h].name = mask_elements[j] thenbol := true;beginbol := True;Break;end;break;Break;//if StackPos > 0 thenbeginResult := ErBlocks; //exit;end;exit;Exit;inc(last_col_elements, ElementPos);Inc(last_col_elements, ElementPos);// // ( )// // ( )// inc(i);// inc(i);Self.Template := Template;FTemplate := Template;ParsedString := Self.Template;FParsedString := FTemplate;for i := low(R.Authors) to high(R.Authors) dofor i := Low(R.Authors) to High(R.Authors) doif i < high(R.Authors) thenif i < High(R.Authors) thenMaskElements[7].value := R.Authors[ low(R.Authors)].FLastName[1];MaskElements[7].value := R.Authors[Low(R.Authors)].FLastName[1];for j := Low(BlocksMap) to High(BlocksMap) dofor j := Low(FBlocksMap) to High(FBlocksMap) doif (MaskElements[i].templ = BlocksMap[j].name) andif (MaskElements[i].templ = FBlocksMap[j].name) and (MaskElements[i].value = '') then(MaskElements[i].value = '') thenif (FBlocksMap[j].BegBlock <> 0) and (FBlocksMap[j].EndBlock <> 0) thenif (BlocksMap[j].BegBlock <> 0) and (BlocksMap[j].EndBlock <> 0) thenDelete(ParsedString, BlocksMap[j].BegBlock,Delete(FParsedString, FBlocksMap[j].BegBlock, FBlocksMap[j].EndBlock - FBlocksMap[j].BegBlock + 1);BlocksMap[j].EndBlock - BlocksMap[j].BegBlock + 1);ValidateTemplate(FParsedString);for i := Length(FParsedString) downto 1 doif CharInSet(FParsedString[i], ['[', ']']) thenDelete(FParsedString, i, 1);StrReplace('%' + MaskElements[i].templ, MaskElements[i].value,StrReplace('%' + MaskElements[i].templ, MaskElements[i].value, FParsedString);ParsedString);Result := FParsedString;