home *** CD-ROM | disk | FTP | other *** search
/ Delphi Magazine Collection 2001 / Delphi Magazine Collection 20001 (2001).iso / DISKS / Issue69 / System / DeskTesterForm.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  2001-03-22  |  4.9 KB  |  179 lines

  1. unit DeskTesterForm;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  7.   DesktopManager, StdCtrls, ComCtrls, Spin, ExtCtrls;
  8.  
  9. type
  10.   TForm1 = class(TForm)
  11.     dm: TDesktopManager;
  12.     DeskView: TListView;
  13.     RefreshBtn: TButton;
  14.     GroupBox1: TGroupBox;
  15.     Label1: TLabel;
  16.     CurName: TEdit;
  17.     ChangeCaption: TButton;
  18.     Label2: TLabel;
  19.     XPos: TSpinEdit;
  20.     YPos: TSpinEdit;
  21.     Bevel1: TBevel;
  22.     Label3: TLabel;
  23.     Label4: TLabel;
  24.     ChangePos: TButton;
  25.     GroupBox2: TGroupBox;
  26.     Label5: TLabel;
  27.     TextColor: TPanel;
  28.     Label6: TLabel;
  29.     TextBackground: TPanel;
  30.     ColorDialog: TColorDialog;
  31.     MakeTransparent: TButton;
  32.     procedure RefreshBtnClick(Sender: TObject);
  33.     procedure FormCreate(Sender: TObject);
  34.     procedure DeskViewSelectItem(Sender: TObject; Item: TListItem;
  35.       Selected: Boolean);
  36.     procedure CurNameChange(Sender: TObject);
  37.     procedure ChangeCaptionClick(Sender: TObject);
  38.     procedure ChangePosClick(Sender: TObject);
  39.     procedure TextColorClick(Sender: TObject);
  40.     procedure TextBackgroundClick(Sender: TObject);
  41.     procedure MakeTransparentClick(Sender: TObject);
  42.   private
  43.     { Private declarations }
  44.     OriginalName: String;
  45.     OriginalIdx: Integer;
  46.     OriginalPos: TPoint;
  47.   public
  48.     { Public declarations }
  49.   end;
  50.  
  51. var
  52.   Form1: TForm1;
  53.  
  54. implementation
  55.  
  56. {$R *.DFM}
  57.  
  58. procedure TForm1.RefreshBtnClick(Sender: TObject);
  59. var
  60.     pt: TPoint;
  61.     Idx: Integer;
  62.     Item: TListItem;
  63. begin
  64.     RefreshBtn.Enabled := False;
  65.     try
  66.         TextColor.Color := dm.TextColor;
  67.         if dm.BackgroundColor = $ffffffff then begin
  68.             TextBackground.Color := clBtnFace;
  69.             TextBackground.Caption := 'transparent';
  70.         end else begin
  71.             TextBackground.Color := dm.BackgroundColor;
  72.             TextBackground.Caption := '';
  73.         end;
  74.  
  75.         dm.Active := True;
  76.         try
  77.             DeskView.Items.Clear;
  78.             for Idx := 0 to dm.ItemCount - 1 do begin
  79.                 Item := DeskView.Items.Add;
  80.                 Item.Caption := dm.Caption [Idx];
  81.                 pt := dm.Position [Idx];
  82.                 Item.SubItems.Add (IntToStr (pt.x));
  83.                 Item.SubItems.Add (IntToStr (pt.y));
  84.                 if Idx = 0 then DeskView.Selected := Item;
  85.             end;
  86.         finally
  87.             dm.Active := False;
  88.         end;
  89.     finally
  90.         RefreshBtn.Enabled := True;
  91.     end;
  92. end;
  93.  
  94. procedure TForm1.FormCreate(Sender: TObject);
  95. begin
  96.     RefreshBtn.Click;
  97. end;
  98.  
  99. procedure TForm1.DeskViewSelectItem (Sender: TObject; Item: TListItem; Selected: Boolean);
  100. begin
  101.     if Selected then begin
  102.         CurName.Text := Item.Caption;
  103.         XPos.Value := StrToInt (Item.SubItems [0]);
  104.         YPos.Value := StrToInt (Item.SubItems [1]);
  105.         // Backup initial values
  106.         OriginalName := CurName.Text;
  107.         OriginalIdx := DeskView.Items.IndexOf (Item);
  108.         OriginalPos := Point (XPos.Value, YPos.Value);
  109.     end else begin
  110.         CurName.Text := '';
  111.         XPos.Value := 0;
  112.         YPos.Value := 0;
  113.         OriginalIdx := -1;
  114.     end;
  115. end;
  116.  
  117. procedure TForm1.CurNameChange(Sender: TObject);
  118. begin
  119.     ChangeCaption.Enabled := CurName.Text <> '';
  120. end;
  121.  
  122. procedure TForm1.ChangeCaptionClick(Sender: TObject);
  123. begin
  124.     dm.Active := True;
  125.     try
  126.     // Check that the target item still exists with same index
  127.     if dm.Caption [OriginalIdx] = OriginalName then
  128.         if dm.Position [OriginalIdx].x = OriginalPos.x then
  129.             if dm.Position [OriginalIdx].y = OriginalPos.y then begin
  130.                 dm.Caption [OriginalIdx] := CurName.Text;
  131.                 RefreshBtn.Click;
  132.             end;
  133.     finally
  134.         dm.Active := False;
  135.     end;
  136. end;
  137.  
  138. procedure TForm1.ChangePosClick(Sender: TObject);
  139. begin
  140.     dm.Active := True;
  141.     try
  142.     // Check that the target item still exists with same index
  143.     if dm.Caption [OriginalIdx] = OriginalName then
  144.         if dm.Position [OriginalIdx].x = OriginalPos.x then
  145.             if dm.Position [OriginalIdx].y = OriginalPos.y then begin
  146.                 dm.Position [OriginalIdx] := Point (XPos.Value, YPos.Value);
  147.                 RefreshBtn.Click;
  148.             end;
  149.     finally
  150.         dm.Active := False;
  151.     end;
  152. end;
  153.  
  154. procedure TForm1.TextColorClick(Sender: TObject);
  155. begin
  156.     ColorDialog.Color := dm.TextColor;
  157.     if ColorDialog.Execute then begin
  158.         dm.TextColor := ColorDialog.Color;
  159.         RefreshBtnClick (Sender);
  160.     end;
  161. end;
  162.  
  163. procedure TForm1.TextBackgroundClick(Sender: TObject);
  164. begin
  165.     ColorDialog.Color := dm.BackgroundColor;
  166.     if ColorDialog.Execute then begin
  167.         dm.BackgroundColor := ColorDialog.Color;
  168.         RefreshBtnClick (Sender);
  169.     end;
  170. end;
  171.  
  172. procedure TForm1.MakeTransparentClick(Sender: TObject);
  173. begin
  174.     dm.BackgroundColor := $ffffffff;
  175.     RefreshBtnClick (Sender);
  176. end;
  177.  
  178. end.
  179.