- •Белорусский национальный технический университет
- •Конспект лекций по курсу «конструирование программ и языки программирования»
- •1. Введение Общие понятия
- •Недостатки ms-dos
- •Преимущества Windows
- •Основные концепции Windows
- •Объекты Windows
- •Механизмы сообщения
- •2. Основы визуального программирования в delphi Принцип создания приложений в Delphi
- •Процесс создания исполняемого файла в Delphi
- •3. Стандартные визуальные компоненты Формы
- •4. События, обрабатываемые формой
- •5. Свойства стандартных компонент Общие сведения
- •Компонент Tlabel
- •Компонент tButton
- •Компонент tEdit
- •Компонента tMemo
- •Компонента tCheckBox Это кнопка с независимой фиксацией. Такой компонент обладает следующими свойствами:
- •Компонент tRadioGroup
- •Компонент tСheckListBox
- •Компонент tPanel
- •К омпонент tScrollBar
- •К омпонент tMainMenu
- •Компонент tPopupMenu
- •Компонент tListBox
- •Компонент tComboBox
- •6. Графические компоненты Общие свойства
- •Компонент tImage (отображение картинок)
- •Компонент tShape (стандартные фигуры)
- •Компонент tBevel (кромка)
- •Компонент tChart (построитель графиков)
- •Компонент tPaintBox
- •Компонента tImage
- •Компонента tShape
- •Компонент tBevel
- •Поддержка графических операций
- •Свойство объектов Canvas
- •7. Табличное представление данных
- •Компонент tStringGrid
- •Компонент tDrawGrid
- •8. Дополнительные компоненты Компонент tBitBtn
- •Компонент tSpeedButton
- •Компонент tToolBar
- •9. Организация стандартных диалогов
- •Компонент tOpenDialog и tSaveDialog
- •Компонент tOpenPictureDialog и tSavePictuteDialog
- •Компонент tColorDialog
- •Компонент tFontDialog
- •Компонент tPrintDialog
- •10. Программирование печати документов
- •11. Вывод графических изображений
- •Компонент tProgressBar
- •Компонент tAnimate
- •Компонент tDateTimePicker
- •Компонент tMediaPlayer
- •Компонент tAnimate
- •Средства создания мультимедийных приложений Что такое мультимедиа
- •Компонент tMediaPlayer
- •Два вида программ мультимедиа
- •Пример программы с мультимедиа
- •Обработка исключительных ситуаций
- •Структурная обработка исключительных ситуаций
- •Модель исключительных ситуаций в Delphi
- •Синтаксис обработки исключительных ситуаций
- •Примеры обработки исключительных ситуаций
- •Вызов исключительной ситуации
- •Доступ к экземпляру объекта exception
- •Предопределенные обработчики исключительных ситуаций
- •Исключения, возникающие при работе с базами данных
- •Заключение
- •Создание и использование ini-файлов
- •Развертывание приложений. Локализация и интернационализация приложений
- •Литература
- •12. Управление программой с помощью панели инструментов
- •Компонент tImageList
- •Компонент tToolBar- инструментальная панель
- •13. Создание программы с несколькими формами и средства управления ими
- •14. Создание многостраничного документа
- •Литература
7. Табличное представление данных
Таблица – двухмерное представление данных, упорядоченное по столбцам и строкам. Таблицы, как правило, имеют заголовки. В связи с этим таблицы делятся на две части: фиксированную и рабочую. Рабочая часть может содержать произвольное количество строк и столбцов. Если она не помещается в пределах компонента, то в него автоматически встраиваются полосы прокрутки.
Табличное представление можно использовать для ввода и вывода данных, т.е. содержимое ячеек можно редактировать.
В Delphi используются два компонента для представления данных в виде таблицы: TStringGrid и TDrawGrid.
Компонент tStringGrid
TStringGrid |
|
Этот компонент предназначен для создания таблицы, содержащей произвольные текстовые строки. Свойства компонента TStringGrid:
BorderStyle: TBorderStyle;
- определяет наличие внешней рамки таблицы: (bsNone, bsSingle);
ColCount : LongInt;
RowCount : LongInt;
- определяют количество столбцов и строк таблицы;
FixedCols : Integer;
FixedRows : Integer;
- определяют количество столбцов и строк фиксированной части;
Color : TColor;
- определяет цвет рабочей части таблицы;
FixedColor : TColor;
- определяет цвет фиксированной части таблицы;
GridLineWidth : Integer;
- определяет толщину расчерчиваемых линий;
Col : LongInt;
Row : LongInt;
- определяют номер столбца и строки сфокусированной ячейки;
Options : TGridOptions;
Могут быть выбраны значения опций:
[goEditing] – для редактирования ячеек;
[goVertLine] – для рисования вертикальных линий;
[goHorLine] – для рисования горизонтальных линий и др.;
Cells[ACol, ARow: Integer] : String;
- определяет содержимое ячейки с табличными координатами ACol и ARow
Cols[Index: Integer] : TStrings;
Rows[Index: Integer] : TStrings;
- определяют все стринговые значения столбца или строки.
Пример.
Вычислить y=Asin(wt), 0 t 10 с, w = 2 с-1, А = 0.01 м, h = 0.1 c. Результаты вывести в виде таблицы.
В секции public класса TForm1 описать переменные:
a, w, tk, h, y : extended;
N : integer;
В обработчике FormCreate записываем следующее:
Procedure TForm1.FormCreate( );
var
i : integer;
begin
A := 0.01; tk := 10; w := 2; h := 0.1;
N := round(tk/h)+2;
StringGrid1.RowCount := N;
StringGrid1.ColCount := 3;
StringGrid1.Cells[0, 0] := ’N’;
StringGrid1.Cells[1, 0] := ’Время, с’;
StringGrid1.Cells[2, 0] := ’Функция, y’;
StringGrid1.Options := [goVertLine, goHorLine];
t := 0;
y := A * sin (w*t);
for i:=1 to N do
begin //где разместить дальнейшие операторы?
StringGrid1.Cells[0, i] := IntToStr(i);
StringGrid1.Cells[1, i] := FloatToStrF(t, fffixed, 8, 3);
StringGrid1.Cells[2, f] := FloatToStrF(f, fffixed, 8, 3);
y := A * sin (w*t);
t := := t + h;
until t < tk;
end;
end;
Компонент tDrawGrid
TDrawGrid |
|
Как и TStringGrid компонент TDrawGrid предназначен для отображения информации в виде таблицы и, в дополнение можно расположить в ячейках графическую информацию. Свойства компонента аналогичны TStringGrid. У данного компонента имеются следующие методы:
function CellRect (ACol, ARow: LongInt): TRect;
- возвращает координаты ячейки ACol, ARow;
procedure MouseToCell (x,y: Integer; var ACol, ARow: LongInt);
- возвращает табличные координаты ячейки ACol, ARow по экранным координатам;
С данным компонентом связаны события:
OnDrawCell
- возникает при необходимости перерисовать ячейку с табличными координатами ACol, ARow;
OnGetEditText
- возникает при редактировании текста в ячейке ACol, ARow;
OnSetEditText
- возникает при завершении редактирования ячейки ACol, ARow;
П ример. Рассмотрим пример, как показать текст и картинки одновременно, причем чтобы текст можно редактировать.
В секции public введем переменную ListMap типа TStringList. В этой переменной будем хранить список имен файлов с картинками. В обработчике FormCreate создадим и наполним список ListMap.
Procedure TForm1.FormCreat( );
const
FNames : array[0..3] of String = (‘1.bmp’, ‘2.bmp’, ‘3.bmp’,
‘4.bmp’);
Var
k : Integer;
begin
//создадим список строк
ListMap := TStringList.Create;
//вставим в список названия файлов и сами картинки
for k:=0 to 3 do
begin
ListMap.Add(FNames[k]);
ListMap.Objects[k] := TBitmap.Create;
(ListMap.Objects[k] as TBitmap).LoadFromFile(FNames[k]);
end;
end;
Далее поместим на форму компонент DrawGrid1 и установим следующие его свойства:
ColCount = 2;
RowCount = 2;
FixedCols = 0;
FixedRows = 0;
Options.Editing = true;
Создадим для компонента DrawGrid обработчики:
Procedure TForm1.DrawGrid1GetEditText (Sender: TObject; ACol,
ARow: Integer; var Value: String);
//передает для редактирования текст из ячейки
begin
Value := ListMap[2*ACol + ARow];
end;
Procedure TForm1.DrawGrid1SetEditText (Sender: TObject; ACol,
ARow: Integer; Value: String);
//процедура получает текст из редактора и сохраняет его в списке ListMap
begin
ListMap[2*ACol + ARow] := Value;
end;
Procedure TForm1.DrawGrid1DrawCell(Col, Row: Integer; Rect: TRect);
//рисует картинку из списка ListMap.Objects и текст из ListMap
var
k : integer;
begin
//пересчитываем координаты ячейки Col, Row в индекс списка
k := 2*Col + Row;
//уменьшаем размер ячейки таблицы с возможностью вывода в нее текста
Rect.Bottom:=Rect.Bottom-DrawGrid1.Canvas.TextHeight(‘1’)-1;
//рисуем картинку
DrawGrid1.Canvas.StretchDraw(Rect, ListMap.Objects[k] as
TBitmap);
//выводим текст
DrawGrid1.Canvas.TextOut(Rect.Left, Rect.Bottom - 1,
ListMap[k]);
end;