Работа с таблицей и списками.
Выбери формат для чтения
Загружаем конспект в формате pdf
Это займет всего пару минут! А пока ты можешь прочитать работу в формате Word 👇
Работа с таблицей и списками.
Кнопка с рисунком
Компонент BitBtn
(страница Additional). Кнопка отличается от стандартной
кнопки тем, что кроме заголовка на ней можно отобразить картинку. Большинство свойств,
методов, событий для всех видов кнопок одинаковы.
Свойство
Gluph
Kind
Описание
Устанавливает
рисунок
на
кнопке. Вызывается диалоговое окно по
кнопке Load
Примеры
По умолчанию значение None.
Для данной кнопки в Delphi поставляет стандартный набор для
кнопок картинок, расположенный в папке Program Files\Common
Files\ Borland Shared\Images\Buttons
Устанавливает
вид кнопки. По
умолчанию bk
Custom.
Некоторые константы видов кнопок определяют не только рисунки на кнопках, но и
действия, выполняемые этими кнопками.
Кнопка (свойство Kind)
bk Yes
bk No
bkOk
bkClose
mbCancel
Свойство
Default=True
(Нажатие Enter)
Cancel=True
(Нажатие Esc)
Default=True
(Нажатие Enter)
При нажатии на кнопку
автоматически закрывается форма
Cancel=True
(Нажатие Esc)
Значение ModalResult
mrYes
mrNo
mrOk
mrClose
mrCancel
Таблица String Grid
Компонент String Grid (страница Additional) используется при решении задач с видом
какой либо последовательности чисел, букв (массива). Компонент представляет собой таблицу, ячейки которой содержат строки символов. Таблица состоит из N столбцов и M строк
для отображения двумерной информации. Если зафиксировать необходимое количество
строк и столбцов, то можно задавать заголовки постоянно присутствующие у компонента.
Каждая ячейка находится на пересечении строк и столбцов, нумерация которых начинается с нуля.
Адрес ячейки [3,5] – 4 столбец, 6 – строка.
Свойство
Col,
Row
ColCount,
RowCount
ColWidths[j]
Описание
Примеры
Задает столбец (строку) в котором нахо- Свойство доступно на этапе выдится активная ячейка.
полнения приложения
Задает число столбцов(строк) в таблице
Задает ширину каждого столбца в таблице.
RowHeights[i]
Задает высоту каждой строки отдельно в
таблице.
Default ColWidth Задает ширину всех столбцов.
DefaultRowHeight Задает высоту всех строк.
DefaultDrawing
Внешний вид таблицы
FixedCols
FixedRows
FixedColor
Cells[col,row]
Доступно только на этапе выполнения программы
Доступно только на этапе выполнения программы
True – прорисовка ячеек автоматическая
Задает число фиксированных столбцов.
По умолчанию 1.
Задает число фиксированных строк. По
умолчанию 1.
Задает цвет фиксированных ячеек (заголовков)
Основное свойство. Обращение к ячейке. Свойство доступно на этапе выполнения программы.
Ячейка может находится в одном из 5-ти состояний:
1. пассивном;
4. фиксированном (выделена особым
2. выделенном (цветом);
цветом);
3. выделенном рамкой из точек (ак5. состоянии редактирования.
тивном);
Для
определения
поведения
таблицы
используется
свойство
Options
, принимающее значения False & True.
Рассмотрим вложенные свойства исходя из того, что каждое из них находится в значении
True:
– фиксированные ячейки разделяются вертикальными линиями;
– фиксированные ячейки разделяются горизонтальными линиями;
– все ячейки (кроме фиксированных) разделены вертикальными линиями;
– все ячейки (кроме фиксированных) разделены горизонтальными линиями;
– допустимо выделение нескольких ячеек;
– активная ячейка закрашивается тем же цветом что и выделенная, иначе (false)
цветом нейтральных ячеек;
– высота строк может меняться;
– ширина столбцов может меняться;
– строки могут перемещаться (обмен);
– столбцы могут перемещаться (обмен);
– ячейки могут редактироваться;
– перемещение между ячейками возможно клавишей Tab или Shift+Tab;
– выделение только целых строк таблицы. Отдельно ячейку (false).
– признак нахождения ячейки в режиме редактирования. Если false, то для того
чтобы ячейке появился курсор (ввод текста), нажать клавишу F2 или щелкнуть
мышью.
– перемещение подвижной части таблицы синхронно с перемещением полосы
прокрутки (ползунка). Если false, то ползунок опустится до конца, а потом будет двигаться таблица.
Рассмотрим пример работы с компонентом StringGrid для нахождения среднего арифметического элементов одномерного массива.
На этапе конструирования
Имена компонентов
Метка «Введите массив целых
чисел» LaInf
Метка «результат» LaRes
Таблица SgMass
Кнопка «вычислить» BtVithisl
Кнопка «выход» BbExit
На этапе выполнения
Формирование заголовков в таблице.
Для этого вызываем процедуру двойным щелчком по форме
Программный код для кнопки «Вычисления »
Модификация программы для исключения ошибок ввода
Для этого формируем процедуру обработки события OnKeyPress. Ее задачи
1. Переходить в следующую ячейку по нажатию клавиши Enter.
2. Ввод только цифр.
3. Отделять дробную часть только запятой или точкой. Ввод остальных символов заменять на
«.» либо «,». Определить , какой символ допустим в текущей настройке Windows можно
при помощи глобальной переменной DecimalSeparator.
Внимание! Разделитель разрядов целой и дробной частей установлен в настройках ОС Windows как правило по умолчанию это «,».
Пуск
Настройка
Панель управления Язык и региональные стандарты
страница Региональные параметры кнопка Настройки
разделитель целой и дробной части
При работе с массивами возникают ошибки времени выполнения. Например, заявлен массив с индексами от 1 до 5 , а в программе просмотр элементов массива организован с i=0.
Var
A: array [1..5] of real;
Begin
For i := 0 to 4 do
A[i] := StrToFloat ( StringGrid.cells[i,1]);{ошибка контроля диапазона}
Для исключения ошибки контроля диапазона необходимо воспользоваться пунктом главного меню Project/Options и на странице Compiler установить переключатель Range checking
Контроль диапазона в случае
ошибки времени
выполнения
Работа со списками
Список представляет собой упорядоченную совокупность элементов, являющихся текстовыми строками. Списки широко применяются в Windows, например, для отображения перечня
шрифтов в текстовом редакторе. Элементы списка могут быть отсортированы в алфавитном порядке, списки позволяют добавлять, удалять и выбирать отдельные их элементы.
Простой список
Простой список ListBox
(страница Standard) представляет собой прямоугольную область,
в которой располагаются его строки.
Свойство
Описание
Примеры
Номер выбран- Label1.Caption := ‘В списке выбрана’ + IntToStr(ListBox1.ItemIndex) + ‘строка’;
ного элемента Начальное значение задается в инспекторе объектов. По умолсписка. Нуме- чанию ItemIndex=-1(ни один из элементов не выбран).
ItemIndex рация начина- Для выбора нужного элемента в начале работы необходимо в
ется с нуля.
обработчике события формы OnCreate ввести оператор ListBox1.ItemIndex:=0
Items[i]
Это свойство имеет тот же тип TStrings, что и свойство Lines
Основное
редактора Memo, и поэтому работа с ним выполняется точно так
свойство.
Задает элемент же. Нумерация начинается с нуля. Доступ к каждой строке списписка.
ска осуществляется по еѐ номеру в массиве строк Items. Началь-
ное значение устанавливается в инспекторе объектов окне редактирования String List Editor.
Count
MultiSelect
Selected
Sorted
TopIndex
Columns
Хранит число
строк в тексте.
Возможность
одновременного
выделения нескольких элементов
Номер выбранного элемента
списка
Номер первой строки равен 0, номер последней строки равен
Count – 1.
True – да
False – только один
True – да, False – нет, Например, необходимо все выбранные
строки списка заменить текстом Строка выбрана
for i := 0 to ListBox1.Items.Count – 1 do
if ListBox1.Selected[ i ] then ListBox1.Items[ i ] :=
‘Строка выбрана’;
Сортировка
True – да, False – без сортировки
списка в алфа- Если значение свойства True, то при добавлении к отсортировитном порядке ванному списку новых строк методами Insert и Add они размещаются не в указанную позицию или в конец списка, а по алфавиту. В то же время методы Exchange и Move изменяют состояния отсортированного списка. Чтобы заново отсортировать список необходимо сбросить значение свойства Sorted в False, а затем снова установить значение True:
ListBox1.Sorted := False;
ListBox1.Sorted := True;
Номер элемента На этапе выполнения программы
списка отображаемого в видимой
части
списка верхним.
Число колонок, По умолчанию нуль (все колонки видны)
которые одинаково видны в
области списка.
Так как свойство Items основное для компонента для него существуют ряд методов:
Add(const s : string):Integer – добавляет в конец списка строку s и возвращает еѐ номер;
Delete(n : Integer) – удаляет строку с номером n;
Insert(n: Integer; const s : string) – вставляет строку s в позицию n;
Exchange(n1, n2 : Integer) – меняет местами строки с номерами n1 и n2;
Move(n1, n2 : Integer) – перемещает строку с номером n1 в позицию n2;
IndexOf(const s : string) : Integer – возвращает номер строки s или –1, если строки в тексте нет;
LoadFromFile(const FileName : string) – загружает список из файла с именем FileName;
SaveToFile(const FileName : string) – сохраняет список в файле с именем FileName.
При работе с простым списком вертикальная полоса прокрутки появляется по мере необходимости
Горизонталдьную полосу прокрутки можно отобразить, воспользовавшись командой
LB_SetHorizontalExtent.
Например
procedure TForm1.FormCreate(Sender: TObject);
begin
Listbox1.Columns:=0; {виден весь список}
SendMessage(listbox1.Handle,LB_SetHorizontalExtent,1000,0);{посылаем сообщение компоненту}
ListBox1.TopIndex:=3; {верхний 4-ый элемент списка}
end;
Handle – свойство определяет числовой идентификатор окна управления по которому Windows
может обращаться к этому окну на этапе выполнения программы.
Основное событие – OnClick, возникающее при выборе элемента списка. Его можно использовать для обработки выбранных строк.
Комбинированный список
Комбинированный список ComboBox
объединяет поле редактирования и список. Работа
с таким списком практически не отличается от работы с простым списком ListBox. Основное отличие заключается в том, что выбранный пользователем элемент списка отображается в поле редактирования комбинированного списка (в его свойстве Text).
Внешний вид
. При нажатии на кнопку со стрелкой появляется
выпадающий список подобно ListBox.
Наличие строки ввода ComboBox расширяет возможности. По сравнению с обычным списком можно:
− осуществлять поиск нужного элемента;
− отображать активный элемент;
− вводить новый элемент списка, используя строку ввода.
Свойство
Text
Описание
Определяет выбранный пользователем элемент
списка или введенный им текст
Примеры
Если начальное значение не задано, то в момент запуска
приложения пользователь не увидит в окне компонента одно из возможных значений списка и, вероятнее всего, не
очень поймет, что с этим окном надо делать. Если в окне
проводилось редактирование данных, то Itemlndex = –1, то
можно включить введѐнное в поле Text редактора значение
элемента списка.
Номер выбранного
элемента
списка. Нумерация начинается с
нуля.
Свойство аналогично свойству простого списка. Если в окне проводилось редактирование данных, то ItemIndex =-1,
то можно, например, включать введенное в поле Text значение элемента списка
procedure TForm1.ComboBoxDropDown(Sender: TObject);
begin
ItemIndex
if ComboBox.ItemIndex = –1
then ComboBox.Items.Add(ComboBox.Text)
end;
При добавлении элементов в нераскрывающийся список
необходимо включать в программу кнопку «Включить» для
этого сгенерировать событие OnClick
Свойство аналогично свойству простого списка
Основное свойство.
Items[i]
Задает элемент
списка.
Определяет максимальное число
элементов, отоDropDownCount
бражаемое в раскрывающемся
списке.
Указывает, отоTrue – да
бражается
ли
False – нет.
Dropped Down раскрывающийся
Свойство доступно на этапе выполнения программы.
список в данный
момент.
Задает
стиль
отображения
списка (оформления списка)
– выпадающий список со строками одинаковой
высоты и с окном редактирования, позволяющим пользователю вводить или редактировать текст;
csSimple – развернутый список со строками одинаковой высоты и с окном редактирования, позволяющим пользователю вводить или редактировать текст;
csDropDownList – выпадающий список со строками одинаковой высоты без возможности редактирования текста;
csOwnerDrawFixed – выпадающий список со строками одинаковой высоты, в которых могут отображаться изображения и текст;
csDropDown
Style
csOwnerDrawVariable –
выпадающий список со строками раз-
ной высоты.
При работе с комбинированным списком помимо события OnClick генерируются следующие события:
onDropDown – открытие списка (для стиля csSimple не генерируется);
onCloseUp – закрытие списка (для стиля csSimple не генерируется);
OnSelect – выбор элемента;
OnChange – изменение текста в поле редактирования.
Диалоговые окна
Диалоговые окна являются упрощенными окнами по сравнению с формой, у которой больше
функциональных возможностей, а также используют стандартные возможности Windows. Диалоговые окна содержат информацию на том языке, к которому адаптирована ОС (русифицированная). Компоненты, реализующие эти диалоги являются не визуальными и находятся на странице
Dialogs палитры компонентов. Компоненты, реализующие основные стандартные диалоговые окна:
− OpenDialog – выбор открываемого файла;
− SaveDialog – выбор сохраняемого файла;
− OpenPictureDialog – выбор открываемого графического файла;
− SavePictureDialog – выбор сохраняемого графического файла;
− FontDialog – настройка параметров шрифта;
− ColorDialog – выбор цвета;
− PrinterSetupDialog – выбор параметров принтера;
− FindDialog – поиск фрагмента текста;
− ReplaceDialog – поиска и замены фрагмента текста.
Диалоговое окно Open Dialog
выбора имени открываемого файла
ДО позволяет посмотреть содержимое внешних запоминающих устройств и выбрать имя
требуемого файла, который затем можно открыть для работы.
Свойство
Описание
Примеры
Ctrl3D
Определяет внешTrue – Объемное изображение
ний вид элемента
False – плоское
HelpContext
DefaultExt
FileName
Определяет номер
раздела справочной
системы, который
будет выведен на
экран в случае, когда курсор мыши
находится над
компонентом и будет нажата клавиша F1.
Содержит расширение, добавляемое
к имени файла, если у него не указано расширение.
Содержит имя
Свойство целого типа. Если = 0, то используется значение
свойства старшего компонента (Form).
Н-р, txt (без точки). Неболее 3-х символов.
Имя искомого файла Z:\644\Ivanov\Dannye.doc
Files
Filter
FilterIndex
InitialDir
файла, которое помещено в строке.
Имя файла диалогового окна.
Содержит список
имен выделенных
файлов.
Содержит описание масок вызываемых файлов.
FileName – задает
текст фильтра,
Filter – задает сами
фильтры
Определяет номер
элемента фильтра
по умолчанию
Определяет раскрытую папку при
открытии ДО.
Только для чтения
Диалоговое окно
Задание фильтра программным способом
OpenDialog1.Filter:= ‘Текстовые файлы
(*.txt,*.doc)|*.txt,*.doc’
Нумерация элементов начинается с 1. Обычно используется
первый из списка.
Свойство в значении
, в ДО
Если папка не указана либо указана несуществующая, то
показывается содержимое последней открытой в этом окне
папки.
Options
Задает характеристики ДО
Title
Задает заголовок
диалогового окна
Свойство в значении
Заголовок
Для вызова любого стандартного диалогового окна используется метод Execute – функция, возвращающая логическое значение. При закрытии диалога кнопкой Открыть функция Execute возвращает значение True, а при отмене диалога кнопкой Отмена – значение False.
Например, при выборе имени файла в диалоге открытия файла его содержимое загружается в
компонент Memo1.
if OpenDialog1.Execute then Memo1.Lines.LoadFromFile(OpenDialog1.FileName)
Проверить стандартное диалоговое окно можно уже на этапе разработки приложения. При
выборе команды TestDialog (проверить диалог) контекстного меню диалогового окна оно открывается и работает так же, как и при выполнении приложения.
После закрытия диалогового окна оно возвращает через свои свойства значения, выбранные
или установленные в процессе диалога.
Для компонента OpenDialog определены следующие события:
OnFolderChange – событие возникает, когда с помощью окна открывается или закрывается какая-либо папка;
OnSelectionChange – событие возникает, когда изменяется выделенный файл;
OnTypeChange – событие возникает, когда изменяются типы отображаемых в окне файлов, определяемые заданным фильтром.
Диалоговое окно Save Dialog
выбора имени файла для сохранения информации
Данный компонент имеет аналогичные свойства, что и компонент OpenDialog.
У диалогов открытия (OpenDialog, OpenPictureDialog) и закрытия (SaveDialog, SavePictureDialog) файлов возвращаемым значением является имя выбранного в результате диалога файла –
свойство FileName.
У диалога настройки параметров шрифта возвращаемым значением является шрифт – свойство Font, а у диалога выбора цвета – свойство цвет Color. В следующем примере метка Label1 получает шрифт надписи и цвет фона в результате выполнения соответствующих диалогов:
if FontDialog1.Execute then Label1.Font:=FontDialog1.Font;
if ColorDialog1.Execute then Label1.Color:=ColorDialog1.Color.
Пример. Создать базу фамилий при помощи компонента ComboBox. Ввод фамилий выполнить при помощи диалога InputBox, либо непосредственным вводом в строку компонента ComboBox (методом Add). Предусмотреть возможность удаления одного элемента списка и очистки
всего списка, а также сохранение информации в отдельный файл и возможность считывания информации из файлов. При реализации операций с файлами в своем примере ОБРАТИТЕ СВОЕ
ВНИМАНИЕ НА ПУНКТ ВНИМАНИЕ, расположенный на следующей странице.
Внимание!!! Для загрузки информации из файла необходимо использовать либо комбинацию процедур AssignFile, Reset, CloseFile либо ТОЛЬКО ОДИН МЕТОД LoadFromFile.
Свойства, установленные для диалога открытия файла (так же можно указать и для сохранения).