Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Плещёв ВУМИП 2012-07-06.doc
Скачиваний:
74
Добавлен:
13.05.2015
Размер:
9.35 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');//файлы

VarI: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);//удаление списка картин

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

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

BeginValue:=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); прорисовка и вывод ячейки таблицы

VarI:integer;Begini:=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);//меняется размер окна

BeginWithDrawGrid1do//присоединение имени таблицы

BeginDefaultColWidth:=ClientRect.RightDiv2 ‑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’); //копирование текста в файл