NewProjectFrm.pas 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. unit NewProjectFrm;
  2. interface
  3. uses
  4. UtilMethods, ZhAPI, sdIDTree,
  5. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  6. Dialogs, StdCtrls, ExtCtrls;
  7. type
  8. TNewProjectForm = class(TForm)
  9. ldeValue: TLabeledEdit;
  10. labTip: TLabel;
  11. btnOK: TButton;
  12. btnCancel: TButton;
  13. procedure btnCancelClick(Sender: TObject);
  14. procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  15. private
  16. FParent: TsdIDTreeNode;
  17. FCurID: Integer;
  18. function CheckLegalChar: Boolean;
  19. function CheckSameFileName: Boolean;
  20. public
  21. function GetValue: string;
  22. procedure SetValue(const AValue: string; ACurID: Integer);
  23. property Parent: TsdIDTreeNode read FParent write FParent;
  24. end;
  25. function InputNewProjectName(var FileName: string;
  26. const Caption: string; AParent: TsdIDTreeNode; ACurID: Integer = -1): Boolean;
  27. implementation
  28. uses
  29. Globals, ConstUnit, ProjectManagerDm;
  30. {$R *.dfm}
  31. function InputNewProjectName(var FileName: string;
  32. const Caption: string; AParent: TsdIDTreeNode;
  33. ACurID: Integer = -1): Boolean;
  34. var
  35. NewProjectForm: TNewProjectForm;
  36. begin
  37. NewProjectForm := TNewProjectForm.Create(nil);
  38. try
  39. NewProjectForm.Caption := Caption;
  40. NewProjectForm.SetValue(FileName, ACurID);
  41. NewProjectForm.Parent := AParent;
  42. NewProjectForm.CheckSameFileName;
  43. Result := NewProjectForm.ShowModal = mrOk;
  44. FileName := NewProjectForm.GetValue;
  45. finally
  46. NewProjectForm.Free;
  47. end;
  48. end;
  49. procedure TNewProjectForm.btnCancelClick(Sender: TObject);
  50. begin
  51. Close;
  52. end;
  53. function TNewProjectForm.GetValue: string;
  54. begin
  55. Result := ldeValue.Text;
  56. end;
  57. procedure TNewProjectForm.FormCloseQuery(Sender: TObject;
  58. var CanClose: Boolean);
  59. begin
  60. CanClose := (CheckLegalChar and not CheckSameFileName) or (ModalResult = mrCancel);
  61. end;
  62. function TNewProjectForm.CheckLegalChar: Boolean;
  63. begin
  64. Result := CheckFileNameLegal(GetValue);
  65. if not Result then
  66. labTip.Caption := '不能包含特殊字符[/ \ : * ? " < > |],请重新输入!';
  67. end;
  68. procedure TNewProjectForm.SetValue(const AValue: string; ACurID: Integer);
  69. begin
  70. ldeValue.Text := AValue;
  71. FCurID := ACurID;
  72. end;
  73. function TNewProjectForm.CheckSameFileName: Boolean;
  74. var
  75. iSameNameID: Integer;
  76. begin
  77. Result := False;
  78. // 云版只认ID,随便重名不会怀孕
  79. if G_IsCloud then Exit;
  80. if ldeValue.Text <> '' then
  81. begin
  82. iSameNameID := ProjectManager.ProjectID(ldeValue.Text, Parent);
  83. Result := (iSameNameID <> FCurID) and (iSameNameID <> -1);
  84. if Result then
  85. labTip.Caption := '存在同名文件,请修改标段名称!';
  86. end;
  87. end;
  88. end.