Конструирование Splitter
У меня есть форма с расположенными на ней компонентами TreeView и Memo. Значение свойства align обоих компонентов позволяет им занимать всю форму. Я хотел бы расположить между ними движок типа Splitter, пропорционально меняющий их размеры (один шире, другой меньше и наоборот), но к сожалению я обладаю лишь дистрибутивом Delphi2 (
Splitter вошел в палитру только в Delphi3). Какой компонент мог бы с'имитировать поведение Splitter и как это реализовать?
Предположим, Ваш TreeView расположен в левой, а Memo в правой части формы. Вам нужно сделать следующее:
- Установите свойство Align компонента TreeView на alLeft.
- Вырежьте (Ctrl-X) компонент TMemo из вашей формы.
- Добавьте компонент Panel и присвойте его свойству Align значение alClient.
- Внутри панели разместите другой компонент Panel.
- Установите его ширину, равной 8 пикселам, свойству Align присвойте значение alLeft.
- Скопируйте вырезанный компонент TMemo в панель Panel1 и присвойте свойству Align значение alClient.
Panel2 - движок: теперь вам необходимо добавить процедуры, приведенные ниже. Ваш код будет выглядеть приблизительно так:
|
|
type TForm1 = class(TForm)TreeView1: TTreeview;Panel1: TPanel;Panel2: TPanel;Memo1: TMemo;procedure Panel1MouseDown(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Integer);procedure Panel1MouseUp(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Integer);procedure Panel1MouseMove(Sender: TObject; Shift:TShiftState;X, Y: Integer);privateResizing: Boolean;public...end;
procedure TForm1.Panel2MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);begin Resizing:=true;end;
procedure TForm1.Panel2MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);begin Resizing:=false;end;
procedure TForm1.Panel2MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);begin if Resizing then beginTreeView1.Width:=TreeView1.Width+X;// Предохранение от странных ошибок перерисовки при изменении размеров:Panel1.Invalidate;end;end; |
Код может быть модифицирован для получения горизонтального движка - идея, надеюсь, понятна... [000046]
Содержание
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий