home *** CD-ROM | disk | FTP | other *** search
- unit d2vsplit;
-
- interface
-
- uses
- Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
- ExtCtrls, StdCtrls;
-
- type
- TForm1 = class(TForm)
- Memo1: TMemo;
- Panel1: TPanel;
- Memo2: TMemo;
- procedure Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
- Y: Integer);
- procedure Panel1MouseDown(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
- procedure Panel1MouseUp(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
- private
- { Private declarations }
- public
- { Public declarations }
- XStart : integer;
- end;
-
- var
- Form1: TForm1;
-
- implementation
-
- {$R *.DFM}
-
- procedure TForm1.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
- Y: Integer);
- // move splitter and resize Memos on either side
- begin
- if ssLeft in Shift then
- begin // move panel relative to original pointer position
- panel1.left := panel1.left + X - XStart ;
- Memo1.width := panel1.left;
- Memo2.left := panel1.left+panel1.width;
- Memo2.width := Form1.ClientWidth - (panel1.left+panel1.width);
- end;
- end;
-
- procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
- begin
- if ssLeft in Shift then
- begin
- XStart := X; // store original pointer position
- panel1.align := alNone; // make sure Delphi doesn't try to align the controls
- Memo2.align := alNone; // while they are being moved
- end;
- end;
-
- procedure TForm1.Panel1MouseUp(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
- begin // reset align properties after splitter move
- panel1.align := alLeft;
- Memo2.align := alClient;
- end;
-
- end.
-