home *** CD-ROM | disk | FTP | other *** search
/ PC Plus SuperCD (UK) 2000 March / pcp161b.iso / handson / archive / Issue152 / delphi / D2VisiSplitter / d2vsplit.pas < prev   
Encoding:
Pascal/Delphi Source File  |  1999-02-12  |  1.8 KB  |  66 lines

  1. unit d2vsplit;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  7.   ExtCtrls, StdCtrls;
  8.  
  9. type
  10.   TForm1 = class(TForm)
  11.     Memo1: TMemo;
  12.     Panel1: TPanel;
  13.     Memo2: TMemo;
  14.     procedure Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
  15.       Y: Integer);
  16.     procedure Panel1MouseDown(Sender: TObject; Button: TMouseButton;
  17.       Shift: TShiftState; X, Y: Integer);
  18.     procedure Panel1MouseUp(Sender: TObject; Button: TMouseButton;
  19.       Shift: TShiftState; X, Y: Integer);
  20.   private
  21.     { Private declarations }
  22.   public
  23.     { Public declarations }
  24.     XStart : integer;
  25.   end;
  26.  
  27. var
  28.   Form1: TForm1;
  29.  
  30. implementation
  31.  
  32. {$R *.DFM}
  33.  
  34. procedure TForm1.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
  35.   Y: Integer);
  36.   // move splitter and resize Memos on either side
  37. begin
  38.   if ssLeft in Shift then
  39.   begin            // move panel relative to original pointer position
  40.     panel1.left := panel1.left + X - XStart ;
  41.     Memo1.width := panel1.left;
  42.     Memo2.left  := panel1.left+panel1.width;
  43.     Memo2.width := Form1.ClientWidth - (panel1.left+panel1.width);
  44.   end;
  45. end;
  46.  
  47. procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton;
  48.   Shift: TShiftState; X, Y: Integer);
  49. begin
  50.   if ssLeft in Shift then
  51.   begin
  52.     XStart := X;    // store original pointer position
  53.     panel1.align := alNone;  // make sure Delphi doesn't try to align the controls
  54.     Memo2.align := alNone;   // while they are being moved
  55.   end;
  56. end;                                                       
  57.  
  58. procedure TForm1.Panel1MouseUp(Sender: TObject; Button: TMouseButton;
  59.   Shift: TShiftState; X, Y: Integer);
  60. begin          // reset align properties after splitter move
  61.   panel1.align := alLeft;
  62.   Memo2.align := alClient;
  63. end;
  64.  
  65. end.
  66.