C++Builder. Учебный курс
.pdfЕсли значение свойства 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.