Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

C++Builder. Учебный курс

.pdf
Скачиваний:
14
Добавлен:
15.11.2022
Размер:
9.54 Mб
Скачать

Если значение свойства W antT abs равно tr u e , то в тексте можно использовать символы табуляции.

Если значение свойства W a n tR e tu rn s равно f a l s e , то для перевода курсора в начало следующей строки необходимо нажать комбинацию клавиш C tr l+ E n te r .

Примечание. Если свойство S c r o llB a r s содержит ssB o th или s s H o r i z o n t a l , свойство W ordwrap игнорируется, и длин­ ные строки будут отсекаться границами компонента без переноса текста на новую строку.

С помощью свойств и методов свойства L in e s (C ount, Add, D e le te , C l e a r и т.д.) можно динамически формировать содер­ жимое компонента. Свойство C ount указывает число строк в тек­ сте. Для очистки текста в окне необходимо выполнить метод C le a r . Для занесения новой строки в конец текста окна редакти­ рования можно воспользоваться методами Add или Append свой­ ства L in e s .

Для загрузки текста из файла применяется метод LoadFrom - F i l e . Сохранение текста в файле осуществляется методом S ave-

T o F ile .

Ускорение работы ТМето. Если в программе происходит добавление большого количества строк в компонент ТМешо, то операцию можно значительно ускорить. Для этого нужно вызвать метод B e g in U p d a te перед добавлением строк и метод EndUp- d a t e после добавления:

Memol->Lines->BeginUpdate;

// добавление строк

Memol->Lines->EndUpdate;

Вышесказанное в равной степени относится к компоненту T L is tB o x и его свойству Ite m s , а также к другим компонентам, которые имеют свойства типа T S tr in g s .

Вопросы для самоконтроля

1.Какие компоненты можно использовать для редактирова­ ния текстовой информации?

2.Приведите примеры использования компонента T E d it в известных приложениях Windows?

3.Приведите примеры использования компонента ТМешо в известных приложениях Windows?

4.

В чем заключается основное отличие компонентов T E d it

и T L a b e l?

5.

В чем заключается основное отличие компонентов T E d it

иT M ask E d it?

6.В чем заключается основное отличие компонентов T E d it

иТМешо?

7.В чем заключается основное отличие компонентов ТМешо

иT R ic h E d it?

8.Какие комбинации горячих клавиш используются в компо­ нентах?

9.Как задать максимальную длину вводимого текста в ком­ понентах?

10.Какое свойство компонентов показывает, проводилось ли редактирование текста в компоненте или нет.

11.Какое свойство позволяет использовать компоненты ре­ дактирования только для чтения?

12.Перечислите основные методы компонентов.

13.Почему нельзя выравнивать текст в компоненте T E d it?

14.Назначение свойства C h a rC a se компонента T E d it?

15.Как можно использовать компонент T E d it для ввода па­

роля?

16.Как можно ограничивать ввод в компоненте T E d it?

17.Какое свойство содержит текст в компоненте ТМешо?

18.Перечислите основные методы свойства L in e s компо­ нента ТМешо.

Упражнения

1.Создайте приложение с использованим компонента T E d it для ввода только числовой информации.

2.Создайте приложение, в котором диалоговое окно появит­ ся лишь в том случае, если пользователь правильно введет пароль.

4.2.3.

Таблицы

Компоненты T D raw G rid

и

T S tr in g G rid предназначен

для создания таблиц. Компонент

T D raw G rid используется для

создания в приложении таблицы, которая может содержать графи­ ческие изображения. В ячейках таблицы компонента T S t r in g G r i d могут располагаться как графические строки, так и произвольные текстовые строки. Он является прямым потомком T D raw G rid, от которого им унаследовано большинство свойств и методов.

Таблица делится на две части - фиксированную и рабочую. Фиксированная служит для показа заголовков столбцов/рядов

и для ручного управления их размерами. Обычно фиксированная часть занимает крайний левый столбец и самый верхний ряд таб­ лицы, однако с помощью свойств F ix e d C o ls и FixedRows мож­ но задать другое количество фиксированных столбцов и рядов (ес­ ли эти свойства имеют 0, таблица не содержит фиксированной зо­ ны). Цвет фона фиксированных ячеек определяется свойством

F ix e d C o lo r .

Рабочая часть - это остальная часть таблицы. Она может со­ держать произвольное количество столбцов и рядов, более того, эти величины могут изменяться программно. Рабочая часть может не умещаться целиком в пределах окна компонента, в этом случае в него автоматически помещаются нужные полосы прокрутки. При прокрутке рабочей области фиксированная область не исчезает, но меняется ее содержимое - заголовки строк и рядов.

Общее число столбцов в таблице задается свойством

C o l Count, число строк - свойством RowCount.

Свойства D e f a u ltC o lW id th и D e fa u ltR o w H e ig h t со­

держат используемые по умолчанию соответственно ширину и высоту ячейки таблицы.

Свойства Row и C o l, доступные при выполнении приложе­ ния, содержат соответственно номер строки и номер столбца ак­ тивной (сфокусированной)ячейки.

Свойство O p tio n s позволяет управлять некоторыми опция­ ми таблицы, например:

- возможность редактирования содержимого ячеек

(g o E d itin g );

-наличие горизонтальных и вертикальных разделительных

линий

в

фиксированных

(g o F ix e d H o rz L in e

и

g o F ix e d V e rtL in e ) и нефиксированных (g o H o rz L in e

и

g o V e rtL in e ) ячейках;

- возможность для пользователя изменять с помощью мыши

размеры строк и столбцов (g o R o w S iz in g и g o C o lS iz in g ) ;

- возможность перемещать строки и столбцы (goRow M oving

и goC olM oving);

-возможность перемещения по ячейкам клавишами T ab и

S h if t+ T a b (g o T ab s) и т.д.;

- возможность выбора нескольких ячеек (g o R a n g e S e le c t);

-выделение

текущей ячейки

цветом (g o D raw F o c u sS e -

l e c t e d ) и т.д.

 

 

 

Компоненты

T D raw G rid

и

T S t r in g G r i d имеют канву

C an v as, на которой можно размещать изображение.

 

4.2.3.1. Компонент TStringGrid

Компонент T S t r in g G r i d ,

используемый для отображения

информации в табличном виде, расположен на странице A d d i­ t i o n a l палитры компонентов. Содержимое таблицы задается двумерным массивом строк C e l l s . Каждая ячейка таблицы имеет тип A n s i S t r i n g и доступна только при выполнении приложе­

ния. Для обращения к ячейке необходимо использовать следую­ щий формат:

S t r i n g G r i d l - > C e l l s [номер столбц а][н ом ер строки]

Примечание. Строки и столбцы нумеруются с нуля.

Свойства F ix ed R o w s и F ix e d C o ls позволяют задать число

фиксированных строк и столбцов, которые используются для за­ дания заголовков. Цвет фона фиксированных ячеек определяется свойством F ix e d C o lo r .

Свойство S e l e c t i o n определяет диапазон выбранных ячеек. Среди множества событий компонента T S tr in g G rid следу­

ет отметить событие O n S e le c tC e ll, возникающее в момент вы­ бора пользователем ячейки. В обработчик этого события переда­ ются параметры A Col и ARow (столбец и строка выделенной ячейки) и булев параметр C a n S e le c t - допустимость выбора. Это событие можно использовать для какой-либо реакции про­ граммы на выделение пользователя.

Нередко при разработке приложений, использующих таблич­ ный вывод данных, требуется отобразить те или иные строки таб­ лиц нестандартным образом, например, с целью привлечения вни­ мания пользователя к этим строкам. Ниже приведен пример ис­

пользования события

O nD raw C ell для

выделения четвертой

строки компонента S t r i n g G r i d l :

 

void __fastcall

T F o rm l: :S tr in g G rid lD ra w C e ll (TObject

♦ S e n d e r, int ACol,

i n t ARow, TRect

&Rect, TGridDraw-

S t a t e S t a t e )

 

 

 

{

 

 

 

 

if

(ARow==3 ScSc A C o l! =0)

 

{

 

 

 

 

/ / ----------------------------------------------------------------------

 

 

 

/ /

Выделение

строки

 

/ / ----------------------------------------------------------------------

 

 

 

S tr in g G r id l - > C a n v a s - > B r u s h - > C o lo r = c lT e a l;

S tr in g G r id l - > C a n v a s - > F o n t - > C o lo r =

clW h ite ;

S t r i n g G r i d l - > C a n v a s - ^ F i l l R e c t (Rect)

;

- Создайте обработчик события OnChange компонента

C S p in E d itl .

void __fastcall T Form l: :C SpinE ditlC hange (TObject ♦Sender)

{

S tr in g G r id l- >RowCount

= C S p in E d itl-> V alu e;

S tr in g G r id l- >H eight =

S trin g G rid l - >RowCount*

(S trin g G r id l - >Def aultR ow H eight+2) ;

}

-Аналогично создайте самостоятельно обработчик события

O nC hange компонента C S p in E d it2 .

- Создайте обработчик события O n C lick кнопки B u tto n l.

void __fastcall

T Form l:: B u tto n lC lic k (TObj e c t

♦Sender)

 

 

 

 

 

 

{

 

 

 

 

 

 

 

 

const int N=6,

 

M= 6;

 

int

a[N ][M ], i ,

j ,

n,

m;

n

=

S trin g G rid l-> R o w C o u n t;

m

=

S trin g G rid l-> C o lC o u n t;

ra n d o m iz e ( );

 

 

 

 

for (i = 0; i

<

n ;

i++)

 

for (j

=

0;

j

<

m;

j++)

 

 

a [ i ]

[j]

=

random(lOOO) ;

for (i = 0; i

<

n ;

i++)

 

for (j

=

0;

j

<

m;

j++)

S tr in g G r id l- > C e lls

[j ] [i] = a [i] [ j] ;

}

 

4.2.3.2. Компонент TDrawGrid

Компонент T D raw G rid

расположен на странице A d d i­

t i o n a l палитры компонентов и используется для создания в при­ ложении таблицы, которая может содержать графические изобра­ жения. Этот компонент подобен компоненту T S trin g G rid , по­

скольку последний является производным от T D raw G rid . Поэто­ му в T D raw G rid присутствуют все свойства, методы и события

компонента T S tr in g G r id , кроме относящихся к тексту, напри­

мер C e l ls . С этой точки зрения, компонент T S t r in g G r i d обла­

дает существенно большими возможностями, чем T D raw G rid, поскольку он может хранить в ячейках изображения и тексты.

Для заполнения ячеек используется событие O n D raw C ell. Ниже приведен пример представления информации в четвертом столбце компонента T D raw G rid в графическом виде:

void __fastcall T F o r m l: : D r a w G r id lD r a w C e ll( T O b je c t

* S e n d e r, int ACol, int ARow, T R ect &Rect, TG ridD raw - S t a t e S t a t e )

{

T R ect

R e c t i ;

int

d,

W id th ;

d =

2;

 

if

(ACol ==4 ScSc ARow ! =0)

{

D r a w G r id l- > C a n v a s - > B ru s h - > C o lo r = c lG r a y ;

D ra w G rid l- > C anvas- > F o n t- > C o lo r = c l W h i t e ;

W idth = ( R e c t . R ig h t R e c t . L e f t ) * 0

. 2*ARow;

R e c t i . L e f t = R e c t . L e f t + d ;

 

R e c t i . T o p = R e c t.T o p + d ;

 

R e c t i . R i g h t = R e c t i . L e f t + W id th ;

 

R e c t i . B o t t o m = R e c t . B o tto m d ;

D r a w G r i d l - > C a n v a s - > F i l l R e c t ( R e c t i ) ;

}

}

Вопросы для самоконтроля

1. В чем основное отличие компонентов T D raw G rid и

T S tr in g G r id ?

2.На какие части делится таблица?

3.Какие свойства определяют размеры ячейки?

4.Какие свойства определяют количество строк и столбцов таблицы?

5.Какие возможности можно предоставить пользователю вашей программы за счет изменения свойства O p tio n s ?

6.

Какое свойство компонента T S tr in g G rid необходимо

изменить, чтобы он стал доступен для редактирования?

7.

Основное свойство компонента TStringGrid.

Упражнения

1. Написать программу, которая управляет опциями свойства

O p tio n s компонента T S tr in g G rid .

2. Написать программу, с помощью которой можно изменять количество строк и столбцов компонента T S trin g G rid .

4.3. Формы и диалоговые окна

4.3.1. Формы

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

Форм в приложении может быть несколько, при необходимо­ сти можно добавлять и удалять их. Каждая форма представлена тремя файлами:

-файлом модуля с исходным текстом на языке C++ (расши­ рение . с р р );

-заголовочным файлом (расширение . h);

-файлом формы с описанием ее ресурсов (файл . d f ш).

Для добавления новой формы в проект используется команда меню

File->New->Form C++Builder.