Среда, 18.06.2025, 16:07
Приветствую Вас Гость | RSS
Меню сайта
fff
  • Индексация
  • Девочки
    Форма входа
    Категории раздела
    Теория алгоритмов [3]
    Теория алгоритмов
    Code Snippets [1]
    Code Snippets
    Все о PHP [20]
    Все о PHP
    Visual C++ [13]
    Visual C++
    WIN32 API [7]
    WIN32 API
    Delphi [72]
    Delphi
    ASP [2]
    ASP
    Java [67]
    Java
    VBScript [6]
    VBScript
    CGI [2]
    CGI
    VRML [2]
    VRML
    PERL [9]
    PERL
    HTML [4]
    HTML
    XML [10]
    XML
    Архив записей

    Статьи по Оптимизации

    ПРОГРАММИРОВАНИЕ! СОЗДАНИЕ САЙТОВ И ИХ ОПТИМИЗАЦИЯ

    Главная » Статьи » Программирование » Delphi

    Конструирование Splitter
    Конструирование Splitter
    У меня есть форма с расположенными на ней компонентами TreeView и Memo. Значение свойства align обоих компонентов позволяет им занимать всю форму. Я хотел бы расположить между ними движок типа Splitter, пропорционально меняющий их размеры (один шире, другой меньше и наоборот). Какой компонент мог бы симитировать поведение 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);
    private
    Resizing: 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 begin
    TreeView1.Width:=TreeView1.Width+X;
    // Предохранение от странных ошибок перерисовки при изменении размеров:
    Panel1.Invalidate;
    end;
    end;

    Код может быть модифицирован для получения горизонтального движка - идея, надеюсь, понятна.

    Категория: Delphi | Добавил: Merlin (07.12.2009)
    Просмотров: 864 | Рейтинг: 0.0/0
    Всего комментариев: 0
    Имя *:
    Email *:
    Код *: