Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теория Win32 и Dialog.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
729.97 Кб
Скачать

Компонент Delphi TrackBar

Компонент Delphi TrackBar находиться на странице Win32 Палитры компонентов. Его еще называют ползунком, движком, шкалой.

Рисунок 5 – Пример использования компонента TrackBar

В Windows  подобный компонент  стал стандартным элементом управления. Для примера привожу вкладку "Громкость" свойства "Звуки и аудио устройства" панели управления Windows XP.

Компонент TrackBar применяется там, где надо задать с помощью мыши, на глаз, приблизительное значение какого либо параметра. Значение задается и определяется перетаскиванием ползунка по шкале. Свойство определяющее положение ползунка - это свойство Position.

Свойство Frequency определяет частоту засечек. Orientation - ориентацию: trHorizontal - горизонтальную и trVertical - вертикальную.  Min и Max - минимальное и максимально значение шкалы. Если свойство SiderVisible равно FALSE то сам  ползунок будет не виден. Свойство TickStyle отвечает за способ отображения засечек: автоматически - tsAuto; программно - tsManual; засечки не отображаются - tsNone. Определяет положение засечек свойство TickMarks: снизу - tmBottomRight; сверху - tmTopLeft; с обеих сторон - tmBoth. ThumbLength - задает толщину ползунка. Визуально внутри шкалы можно выделить синим цветом произвольный диапазон с помощью  свойств SelStart и SelEnd, границы будут обозначены треугольными рисками.

SetTick(Value: Integer) - метод, с помощью которого на шкале, где находиться ползунок ставиться засечка.

Рисунок 6 – Добавления компонента на форму

Для закрепления материала давайте разберем такой пример. Разместим на форме следующие компоненты: TrackBar и Panel, как показано на рисунке. На панели можно было написать какой нибудь осмысленный текст, однако я оставил надпись по умолчанию Panel1. Свойству Frequency компонента TrackBar присвоим значение равное 10. Свойствам Min - 30, Max -90 соответственно.

Теперь напишем обработчик onChange:

procedure TForm1.TrackBar1Change(Sender: TObject);

begin

Panel1.Height := TrackBar1.Position;

Panel1.Width := TrackBar1.Position;

Panel1.Left := ClientWidth div 2 - Panel1.Width div 2;

Panel1.Top := ClientHeight div 2 + 30 - Panel1.Height div 2;

end;

Первые две строчки определяют длину стороны квадрата (компонент Panel), третья строка определяет левый край квадрата. Четвертая верхний край квадрата, цифра  30 опускает квадрат вниз, чтобы он будучи в центре не закрывал нашу шкалу.

Рисунок 7 – Созданное событие OnCreate формы

Квадрат (Panel1) можно расположить в произвольном месте, но чтобы при загрузке программы он оказался в нужном нам месте, событию onCreate формы присваиваем событие TrackBar1Change. Его мы только что создали через инспектор объектов (см. рисунок 7). Теперь запустив приложение и перемещая ползунок мы изменяем размеры нашего квадрата.

Компонент Delphi Progressbar

Компонент  Delphi Progressbar находиться  в Палитре компонентов на странице Win32. Внешний вид представляет собой графическую полосу показывающую процесс работы продолжительной операции. Процесс заполнения полосы идет пропорционально, согласно проценту выполненных действий, слева направо синими кубиками. Цвет компонента изменить нельзя, цвет заполнения имеет синий цвет.

Min и Max свойства компонента, отвечающие за диапазон значений, соответственно минимальной и максимальное значение принадлежащее к целым числам.

Position - позиция, на которой находится в данный момент индикатор.

Рисунок 8 – Пример добавленного на форму компонента Progressbar

Расположим на форме компоненты Label, Button и  Progressbar, см. образец на рисунке.

Мы сделаем перебор целых чисел (переменная i) от 0 до 50000 (Max), компонент Label будет показывать какое сейчас обрабатывается число и немного притормаживать выполнение приложения. Proc вычисляет процент проделанной работы.

Напишем обработчик кнопки Пуск.

procedure TForm1.Button1Click(Sender: TObject);

var

i, proc, Max : integer;

begin

Max := 50000;

for i:=0 to Max do

begin

proc := ((i * 100) div Max);

Label1.Caption := IntToStr(i);

ProgressBar1.Position := proc ;

Application.ProcessMessages;

end;

end;

Application.ProcessMessages; - дает возможность нашему приложению не зависнуть в процессе вычисления. В противном случае нам придется дождаться окончания вычислений, после чего мы увидим результат, а до этого приложение не будет подавать признаков жизни.