Лекция № 10. Компоненты для редактирования данных в табличной форме.

Компонент StringGrid (Таблица строк)

Использование электронных таблиц пользователями компьютеров стало привычным и достаточно удобным средством в работе с данными. С помощью компонента StringGrid (вкладка Additional) создаются таблицы, в ячейках которых могут содержаться произвольные текстовые данные. Он является прямым потомком компонента DrawGrid, много свойств и методов унаследовано от него.

Основное свойство компонента StringGrid - это двумерный массив Cells[ACol, ARow : integer] типа String с помощью него можно обращаться к содержимому ячеек и изменять их содержание. ACol устанавливает номер столбца, ARow - задает строку в таблице. Этим свойством можно воспользоваться только во время выполнения программы, оно доступно для записи и чтения.

Нумерация строк и столбцов идет с нуля. Свойство ColCount задает число столбцов, RowCount - число строк.

Компонент StringGrid по умолчанию слева и сверху имеет заголовочные области, они имеют серый цвет. Количество подобных строк и столбцов устанавливается в свойствах FixedCols и FixedRow. Если же для таблицы не нужны заголовочные области, то эти свойства должны быть равны нулю.

Для закрепления материала создадим приложение, которое покажет нам таблицу умножения. На форму шириной (Width) равной 365 и высотой (Height) 389 поместим компонент StringGrid. Обработчик onCreate формы (возникает двойным щелчком мыши по форме) будет таким:

procedure TForm1.FormCreate(Sender: TObject);

var

x, y : integer;

begin

// Задаем число столбцов и строк таблицы

StringGrid1.ColCount := 10;

StringGrid1.RowCount := 10;

// Задаем ширину и высоту ячеек

StringGrid1.DefaultColWidth := 30;

StringGrid1.DefaultRowHeight:= 30;

// раставляем цифры от 1 до 9 в

// горизонтальной области заголовка

for x := 1 to StringGrid1.ColCount - 1 do

StringGrid1.Cells[x, 0] := IntToStr(x);

// раставляем цифры от 1 до 9 в

// вертикальной области заголовка

for y := 1 to StringGrid1.ColCount - 1 do

StringGrid1.Cells[0, y] := IntToStr(y);

// выводим результаты умножения в ячейки таблицы

for x := 1 to StringGrid1.ColCount - 1 do

for y := 1 to StringGrid1.RowCount - 1 do

StringGrid1.Cells[x, y] := IntToStr(x*y);

end;

Запустим приложение. Результат будет примерно таким:

Лекция № 10. Компоненты для редактирования данных в табличной форме. - student2.ru

Лекция № 11. Визуальные компоненты для изменения числового значения в заданном диапазоне. Визуальные компоненты для выбора дат. Основные свойства компонентов.

Визуальные компоненты для изменения числового значения в заданном диапазоне.

Компонент TrackBar.

Компонент Delphi TrackBar (вкладка Win32). Его еще называют ползунком, движком, шкалой. В Windows подобный компонент стал стандартным элементом управления. Для примера - вкладка "Громкость" свойства "Звуки и аудио устройства" панели управления Windows XP.

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

Свойство Frequency определяет частоту засечек.

Свойство Orientation - ориентацию: trHorizontal - горизонтальную и trVertical - вертикальную.

Свойство Min и Max - минимальное и максимально значение шкалы.

Если свойство SiderVisible равно FALSE, то сам ползунок будет не виден.

Свойство TickStyle отвечает за способ отображения засечек: автоматически - tsAuto; программно - tsManual; засечки не отображаются - tsNone.

Определяет положение засечек свойство TickMarks: снизу - tmBottomRight; сверху - tmTopLeft; с обеих сторон - tmBoth.

Свойство ThumbLength - задает толщину ползунка.

Визуально внутри шкалы можно выделить синим цветом произвольный диапазон с помощью свойств SelStart и SelEnd, границы будут обозначены треугольными рисками.

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

Лекция № 10. Компоненты для редактирования данных в табличной форме. - student2.ru Пример. Разместим на форме следующие компоненты: 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 опускает квадрат вниз, чтобы он будучи в центре не закрывал нашу шкалу.

Лекция № 10. Компоненты для редактирования данных в табличной форме. - student2.ru Квадрат (Panel1) можно расположить в произвольном месте, но чтобы при загрузке программы он оказался в нужном нам месте, событию onCreate формы присваиваем событие TrackBar1Change, которое создали через инспектор объектов.

Теперь запустив приложение и, перемещая ползунок, мы изменяем размеры нашего квадрата.

Компонент ScrollBar.

Компонент ScrollBar (вкладка Standart) позволяет выбрать целое число, которое будет находиться в диапазоне значений от Min до Maxв свойствах компонента.

Изменить положение ползунка можно мышью, клавишами стрелки вверх, вниз влево, вправо, или Page Up и Page Down. Перемещая ползунок, изменяется свойство Рosition. При необходимости его позицию можно задать программно, за исключением, если позиция будет выходить за пределы диапазона.

Лекция № 10. Компоненты для редактирования данных в табличной форме. - student2.ru Полоса ScrollBar может быть расположена по вертикали или горизонтали, за это отвечает свойство Kind. Значение sbVertical устанавливает вертикальную, а sbHorizontal - горизонтальную полосу прокрутки.

Расположим на форме 3 компонента ScrollBar как показано на рисунке. Свойства Min будут равны 0, а Max - 255, position - 0. Заходим в Object Inspector двойным щелчком на пустом поле рядом с событием OnChange открывает редактор кода. С помощью функции RGB(x,y,z) задаем цвет форме, где x, y, z - целые числа от 0 до 255, в цветовой палитре - красный, зеленый, голубой. У нас должно получиться :

procedure TForm1.ScrollBar1Change(Sender: TObject);

begin

Form1.color:=RGB(ScrollBar1.Position,ScrollBar2.Position,ScrollBar3.Position);

end;

Аналогично данная запись должна присутствовать и для остальных компонент ScrollBar, ее можно добавить из выпадающего меню событий OnChange.

Теперь, перемещая ползунки, можно измененить цвет формы.

Компонент UpDown.

Компонент Delphi UpDownнаходится на странице Win32 Палитры компонентов. Его основное предназначение быть счетчиком. Он может уменьшать или увеличивать числовое поле на заданную целую величину, равную свойству Increment, по умолчанию единице. Диапазон значений задается свойствами Min и Max (возможные значения от -32768 до 32767).

Лекция № 10. Компоненты для редактирования данных в табличной форме. - student2.ru UpDown не имеет поля вывода, в котором отображалось бы изменяемое число. В процессе проектирования приложения его связывают с другим оконным элементом управления. Это может быть одно строчный редактор Edit или компонент StaticText. Надпись Label для этих целей использовать нельзя, т.к. это не оконный элемент. Можно использовать даже компонент Memo.

Первый группа, на рисунке связка с компонентом Edit, вторая - StaticText, третья с - Edit, но связь задается программно (в приложении Edit2 и UpDown будут рядом). И в конце связь Memo c UpDown.

Вид счетчика может быть горизонтальным или вертикальным, это зависит от свойства Orientation.

Взаимосвязь счетчика UpDown к ассоциированному компоненту производиться за счет свойства Associate.

В программном коде:

UpDown3.Associate:=Edit2;
После установления связи счетчик UpDown автоматически состыковывается со своим компонентом партнером. Так как данная пара не имеет своей надписи, то при необходимости пояснить значение рядом с ним необходимо расположить компонент Label.

Производить изменение в программе можно с помощью мыши, или если свойство ArrowKeys имеет значение TRUE (по умолчанию так оно и есть), клавишами: "стрелка вверх" и "стрелка вниз".

Лекция № 10. Компоненты для редактирования данных в табличной форме. - student2.ru Свойство Position определяет текущую позицию счетчика. При выходе значения счетчика за границы диапазона, значение счетчика не измениться если свойство Wrap будет FALSE. Или если свойство Wrap равно TRUE, при значении превышающим максимальное число - Position становиться равным свойству MIN, аналогично для числа меньше минимального становиться равным свойству MAX.

Значения для использования можно брать как из свойств Text, компонента Edit, так и из свойства Position компонента UpDown. Отличаются эти значения тем, что первое будет текстовым, а второе числовым. Применять исходя из того какой тип нам необходим.

При изменении показания счетчика возникает событие onChanging. Расположим на форме компоненты, как на рисунке. Зададим событие onChanging на вкладке Events Инспектора Объектов. Свойство AllowChange - равное TRUЕ разрешает или равное FALSE запрещает изменять счетчик.

В данном примере оно ассоциируется со значением CheckBox1.Checked

procedure TForm1.UpDown1Changing(Sender: TObject;

var AllowChange: Boolean);

begin

if CheckBox1.Checked = true then

begin

AllowChange := True;

Label1.Caption := Edit1.Text;

end

else AllowChange := false;

end;

Наши рекомендации