home *** CD-ROM | disk | FTP | other *** search
/ Chip 2001 September / Chip_2001-09_cd1.bin / zkuste / delphi / kolekce / d56 / RMCTL.ZIP / rmTreeNonViewEdit.pas < prev    next >
Pascal/Delphi Source File  |  2001-06-22  |  4KB  |  170 lines

  1. {================================================================================
  2. Copyright (C) 1997-2001 Mills Enterprise
  3.  
  4. Unit     : rmTreeNonViewEdit
  5. Purpose  : Property editor for the TrmTreeNonView component.
  6. Date     : 12-01-1999
  7. Author   : Ryan J. Mills
  8. Version  : 1.80
  9. Notes    : This unit was originally based upon the work of Patrick O'Keeffe.
  10.            It was at his request that I took the component over and rm'ified it.
  11. ================================================================================}
  12.  
  13. unit rmTreeNonViewEdit;
  14.  
  15. interface
  16.  
  17. {$I CompilerDefines.INC}
  18.  
  19. {$ifdef BD6}
  20. uses
  21.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  22.   DesignIntf, DesignEditors, Registry, rmTreeNonView, StdCtrls, ComCtrls, rmPathTreeView;
  23. {$else}
  24. uses
  25.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  26.   DsgnIntf, Registry, rmTreeNonView, StdCtrls, ComCtrls, rmPathTreeView;
  27. {$endif}
  28.  
  29.  
  30. type
  31.   TfrmTreeNonViewEditor = class(TForm)
  32.     btnCancel: TButton;
  33.     btnOK: TButton;
  34.     grpItems: TGroupBox;
  35.     tvItems: TrmPathTreeView;
  36.     btnNew: TButton;
  37.     btnNewSub: TButton;
  38.     btnDelete: TButton;
  39.     btnLoad: TButton;
  40.     grpProperties: TGroupBox;
  41.     Label1: TLabel;
  42.     edText: TEdit;
  43.     procedure btnNewClick(Sender: TObject);
  44.     procedure btnNewSubClick(Sender: TObject);
  45.     procedure btnDeleteClick(Sender: TObject);
  46.     procedure edTextKeyUp(Sender: TObject; var Key: Word;
  47.       Shift: TShiftState);
  48.     procedure tvItemsChange(Sender: TObject; Node: TrmTreeNode);
  49.   private
  50.     { Private declarations }
  51.   public
  52.     { Public declarations }
  53.   end;
  54.  
  55.   TrmTreeNonViewItemsProperty = class( TPropertyEditor )
  56.     function GetAttributes: TPropertyAttributes; override;
  57.     function GetValue: string; override;
  58.     procedure Edit; override;
  59.   end;
  60.  
  61. implementation
  62.  
  63. {$R *.DFM}
  64.  
  65. uses
  66.   LibHelp;
  67.  
  68. const
  69.   Section = 'rmTreeNonView Items Editor';
  70.  
  71.  
  72. function TrmTreeNonViewItemsProperty.GetAttributes: TPropertyAttributes;
  73. begin
  74.   Result := [paDialog];                  { Edit method will display a dialog }
  75. end;
  76.  
  77.  
  78. function TrmTreeNonViewItemsProperty.GetValue: string;
  79. begin
  80.   { The GetPropType method is used to retrieve information pertaining to the   }
  81.   { property type being edited.  In this case, the Name of the property class  }
  82.   { is displayed in the value column of the Object Inspector.                  }
  83.  
  84.   Result := Format( '(%s)', [ GetPropType^.Name ] );
  85. end;
  86.  
  87.  
  88. procedure TrmTreeNonViewItemsProperty.Edit;
  89. var
  90.   Component: TComponent;
  91.   Dialog: TfrmTreeNonViewEditor;
  92.   N : TrmTreeNonViewNode;
  93.   A : TrmTreeNode;
  94.  
  95. begin
  96.   Dialog := TfrmTreeNonViewEditor.Create(Application);
  97.   try
  98.     if (PropCount = 1) and (GetComponent(0) is TComponent) then
  99.     begin
  100.       Component := TComponent(GetComponent(0));
  101.  
  102.       with Component as TrmTreeNonView do
  103.       begin
  104.         Dialog.tvItems.SepChar := SepChar;
  105.         N := Items.GetFirstNode;
  106.         while N <> nil do
  107.         begin
  108.           Dialog.tvItems.AddPathNode(nil, NodePath(N));
  109.           N := N.GetNext;
  110.         end;
  111.  
  112.         if Dialog.ShowModal = mrOK then
  113.         begin
  114.           Items.Clear;
  115.           A := Dialog.tvItems.Items.GetFirstNode;
  116.           while A <> nil do
  117.           begin
  118.             AddPathNode(nil, Dialog.tvItems.NodePath(A));
  119.             A := A.GetNext;
  120.           end;
  121.           Modified;
  122.         end;
  123.       end;
  124.     end;
  125.   finally
  126.     Dialog.Free;
  127.   end;
  128. end;
  129.  
  130. procedure TfrmTreeNonViewEditor.btnNewClick(Sender: TObject);
  131. var
  132.   N : TrmTreeNode;
  133.  
  134. begin
  135.   N := tvItems.Items.Add(nil, '');
  136.   N.Selected := True;
  137.   edText.SetFocus;
  138. end;
  139.  
  140. procedure TfrmTreeNonViewEditor.btnNewSubClick(Sender: TObject);
  141. var
  142.   N : TrmTreeNode;
  143.  
  144. begin
  145.   N := tvItems.Items.AddChild(tvItems.Selected, '');
  146.   N.Selected := True;
  147.   edText.SetFocus;
  148. end;
  149.  
  150. procedure TfrmTreeNonViewEditor.btnDeleteClick(Sender: TObject);
  151. begin
  152.   if tvItems.Selected <> nil then
  153.     tvItems.Selected.Delete;
  154. end;
  155.  
  156. procedure TfrmTreeNonViewEditor.edTextKeyUp(Sender: TObject; var Key: Word;
  157.   Shift: TShiftState);
  158. begin
  159.   if tvItems.Selected <> nil then
  160.     tvItems.Selected.Text := edText.Text;
  161. end;
  162.  
  163. procedure TfrmTreeNonViewEditor.tvItemsChange(Sender: TObject;
  164.   Node: TrmTreeNode);
  165. begin
  166.   edText.Text := Node.Text;
  167. end;
  168.  
  169. end.
  170.