Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Высокоуровневые методы информатики и программир...docx
Скачиваний:
25
Добавлен:
12.11.2019
Размер:
6.53 Mб
Скачать

2 .3.2.5. Рисуемая таблица (DrawGrid)

К омпонент (панель Additional) используется для создания и использования двумерной таблицы с прорисованными самим пользователем ячейками, в которых хранятся произвольные объекты. Большинство свойств аналогичны одноименным свойствам таблицы строк, но есть и другие, и нет свойств Cells и Objects.

Специфичные события

OnDrawCell ‑ прорисовка очередной ячейки перед выводом ее на экран.

OnGetEditText, OnSetEditTextвозникают перед и после редактирования содержимого ячейки соответственно.

Пример получения таблицы картин в заставке данного пункта:

Свойства таблицы: Align=alClient, ColCount=2, RowCount=1, FixedCols=0, FixedRow=0, Options.goEditing=True, ScrollBars=sbNone.

В разделе Var модуля формы Unit1 объявим переменную списка:

Spisokkartin:TstringList. Далее соcтавим процедуры вывода таблицы.

Procedure TForm1.FormCreate(Sender: TObject);//создание списка картин

Const FileNames:Array [0..1] of String=('athena.bmp','technlgy.bmp');//файлы

Var I:Integer; Begin //создание пустого списка (п.2.2.7)

Spisokkartin:=TStringList.Create; With Spisokkartin Do//присв.имени списка

For i:=0 To 1 Do Begin Add(FileNames[i]); //добавление имени файла

Objects[i]:=TBitMap.Create; //создание пустого BMP‑объекта для картины

(Objects[i] as TBitMap).LoadFromFile(FileNames[i]); //загрузка картины

End;{конец цикла создания списка картин}End; //конец процедуры

Procedure TForm1.Formdestroy(Sender:Tobject);//удаление списка картин

Begin Spisokkartin.Free; End; //списки удаляются при удалении формы

Procedure TForm1.DrawGrid1GetEditText(Sender:TObject;ACol,ARow: Integer;var Value:String);//начало редактирования текста ячейки табл.

Begin Value:=Spisokkartin[2*ACol+Arow]{передача текста редактору}End;

Procedure TForm1.DrawGrid1SetEditText(Sender: TObject; ACol, ARow: Integer;const Value:String);//конец редактирования текста ячейки табл.

Begin Spisokkartin[2*ACol+Arow]:=Value;{сохранить отредакт.текст}End;

Procedure TForm1.DrawGrid1DrawCell(Sender: TObject; Col, Row: Integer;

Rect: TRect;State:TGridDrawState); прорисовка и вывод ячейки таблицы

Var I:integer;Begin i:=2*row+col;//формирование индекса списка.

With DrawGrid1.Canvas, Rect, Spisokkartin do Begin //присоединение имен

Bottom:=Bottom‑TextHeight('с')‑2; //уменьшение высоты картинки

StretchDraw(Rect,(Objects[i] as TBitmap));//вывод картинки из списка

TextOut(Left,Bottom+1,Strings[i]){вывод имени файла из списка}End; End;

Procedure TForm1.FormResize(Sender: TObject);//меняется размер окна

Begin With DrawGrid1 do //присоединение имени таблицы

Begin DefaultColWidth:=ClientRect.Right Div 2 ‑1;//новая высота ячейки

DefaultRowHeight:=ClientRect.Bottom;{новая ширина ячейки}End; End;

2.3.2.6. Многострочный редактор текста в формате rtf (RichEdit)

Р едактор работает с расширенным текстовым форматом RTF. Для каждого абзаца создается объект класса TParaAttributes с атрибутами абзаца.

Основные свойства TParaAttributes

Alignment ‑ выравнивание: taLeftJustify (влево), taCenter (по центру), taRightJustify (вправо).

FirstIndent, LeftIndent, RightIndent ‑ отступ в пикселях первой строки, между левой и правой границами и границами панели редактора.

Numbering=nsBullet ‑ превращение текста в маркированный список.

Специфичные свойства

Lines ‑ вводимый и редактируемый текст в виде массива строк.

HideScrollBars ‑ вставляются полосы прокрутки при отсечении текста.

PageRect ‑ размеры страницы при печати.

Paragraph ‑ содержит атрибуты шрифта текущего абзаца (п.2.2.8.1).

SelAttributes ‑ шрифтовые атрибуты выделенного абзаца.

PlainText ‑ запрещает (True) ввод и вывод в файл служебной информации формата RTF.

Специфичные методы

GetCaretPos ‑ возвращает текущую позицию курсора.

GetSelText ‑ копирует выделенный текст в переменную.

Примеры:

RichEdit1.Paragraph.Numbering:=nsBullet; //преобразование в список

RichEdit1.Paragraph.Numbering:=nsCenter; //центровка абзаца

RichEdit1.SelAttributes.Name:=’New Times Cyr’//установка шрифта

RichEdit1.PlainText:=False;//разрешить копирование служебной информ.

RichEdit1.Lines.SaveToFile(‘Text.Rtf’); //копирование текста в файл