FDXPPathsDialog.pas 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. // FDXPOptions
  2. {
  3. DXP Paths Dialog.
  4. Licensed under MPL (http://www.mozilla.org/MPL/)
  5. Copyright 2003 - Eric Grange
  6. }
  7. unit FDXPPathsDialog;
  8. interface
  9. uses
  10. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  11. Dialogs, StdCtrls, Buttons, ExtCtrls, ActnList;
  12. type
  13. TDXPPathsDialog = class(TForm)
  14. Panel1: TPanel;
  15. BBReplace: TBitBtn;
  16. BBAdd: TBitBtn;
  17. BBRemove: TBitBtn;
  18. EDPath: TEdit;
  19. BBPickPath: TBitBtn;
  20. BBDown: TBitBtn;
  21. BBUp: TBitBtn;
  22. Panel2: TPanel;
  23. BUOk: TButton;
  24. BUCancel: TButton;
  25. LBPaths: TListBox;
  26. ActionList: TActionList;
  27. procedure BBUpClick(Sender: TObject);
  28. procedure BBDownClick(Sender: TObject);
  29. procedure BBReplaceClick(Sender: TObject);
  30. procedure BBAddClick(Sender: TObject);
  31. procedure BBRemoveClick(Sender: TObject);
  32. procedure BBPickPathClick(Sender: TObject);
  33. procedure LBPathsClick(Sender: TObject);
  34. procedure LBPathsKeyPress(Sender: TObject; var Key: Char);
  35. procedure EDPathChange(Sender: TObject);
  36. private
  37. { Déclarations privées }
  38. public
  39. { Déclarations publiques }
  40. function Execute(var paths : String) : Boolean;
  41. end;
  42. function DXPPathsDialog(var paths : String) : Boolean;
  43. implementation
  44. {$R *.dfm}
  45. uses FDXPDirectoryDialog, DXPUtils;
  46. // DXPPathsDialog
  47. //
  48. function DXPPathsDialog(var paths : String) : Boolean;
  49. begin
  50. with TDXPPathsDialog.Create(nil) do begin
  51. try
  52. Result:=Execute(paths);
  53. finally
  54. Free;
  55. end;
  56. end;
  57. end;
  58. // Execute
  59. //
  60. function TDXPPathsDialog.Execute(var paths : String) : Boolean;
  61. begin
  62. StringToPaths(paths, LBPaths.Items);
  63. LBPathsClick(Self);
  64. Result:=(ShowModal=mrOk);
  65. if Result then
  66. paths:=PathsToString(LBPaths.Items);
  67. end;
  68. procedure TDXPPathsDialog.LBPathsClick(Sender: TObject);
  69. var
  70. sel : Boolean;
  71. begin
  72. with LBPaths do begin
  73. sel:=(ItemIndex>=0);
  74. BBUp.Enabled:=(ItemIndex>0);
  75. BBDown.Enabled:=sel and (ItemIndex<Items.Count-1);
  76. BBReplace.Enabled:=sel and (EDPath.Text<>'') and (EDPath.Text<>Items[ItemIndex]);
  77. BBAdd.Enabled:=(EDPath.Text<>'') and (Items.IndexOf(EDPath.Text)<0);
  78. BBRemove.Enabled:=sel;
  79. if (Sender<>nil) and sel then
  80. EDPath.Text:=Items[ItemIndex];
  81. end;
  82. end;
  83. procedure TDXPPathsDialog.BBUpClick(Sender: TObject);
  84. var
  85. i : Integer;
  86. begin
  87. with LBPaths do begin
  88. i:=ItemIndex;
  89. Items.Move(i, i-1);
  90. ItemIndex:=i-1;
  91. end;
  92. LBPathsClick(Self);
  93. end;
  94. procedure TDXPPathsDialog.BBDownClick(Sender: TObject);
  95. var
  96. i : Integer;
  97. begin
  98. with LBPaths do begin
  99. i:=ItemIndex;
  100. Items.Move(i, i+1);
  101. ItemIndex:=i+1;
  102. end;
  103. LBPathsClick(Self);
  104. end;
  105. procedure TDXPPathsDialog.BBReplaceClick(Sender: TObject);
  106. begin
  107. with LBPaths do
  108. Items[ItemIndex]:=EDPath.Text;
  109. LBPathsClick(Self);
  110. end;
  111. procedure TDXPPathsDialog.BBAddClick(Sender: TObject);
  112. begin
  113. with LBPaths do begin
  114. Items.Add(EDPath.Text);
  115. ItemIndex:=Items.Count-1;
  116. end;
  117. LBPathsClick(Self);
  118. end;
  119. procedure TDXPPathsDialog.BBRemoveClick(Sender: TObject);
  120. var
  121. i : Integer;
  122. begin
  123. with LBPaths do begin
  124. i:=ItemIndex;
  125. Items.Delete(i);
  126. if i<Items.Count then
  127. ItemIndex:=i
  128. else ItemIndex:=Items.Count-1;
  129. end;
  130. LBPathsClick(Self);
  131. end;
  132. procedure TDXPPathsDialog.BBPickPathClick(Sender: TObject);
  133. begin
  134. DXPDirectoryDialog(EDPath);
  135. end;
  136. procedure TDXPPathsDialog.LBPathsKeyPress(Sender: TObject; var Key: Char);
  137. begin
  138. LBPathsClick(Self);
  139. end;
  140. procedure TDXPPathsDialog.EDPathChange(Sender: TObject);
  141. begin
  142. LBPathsClick(nil);
  143. end;
  144. end.