Мансуров. Основы программирования в среде Lazarus. 2010
.pdfГлава 6 Программирование приложений с графическим интерфейсом
____________________________________________________________________
end;
end;
initialization
{$I unit1.lrs}
end.
6.3.11.4. Создание приложений с изменяемыми размерами окон
Для этих целей используются компоненты TPanel и TSplitter. Компо-
нент TPanel – панель является контейнером, на котором могут размещаться любые другие компоненты. Компонент позволяет создавать на форме отдель-
ные независимые области и группировать в них функционально связанные ин-
терфейсные элементы.
У большинства компонентов, в том числе и у TPanel имеется свойство
Align – выравнивание. Свойство может принимать следующие значения:
alNone – выравнивание отсутствует;
alLeft – компонент занимает левую часть клиентской области компонен-
та-контейнера (на панель можно помещать сколько угодно других компонентов
TPanel)или формы;
alRight – компонент занимает правую часть клиентской области компо-
нента-контейнера;
alTop – компонент занимает верхнюю часть клиентской области компонен-
та-контейнера;
alBottom – компонент занимает нижнюю часть клиентской области ком-
понента-контейнера;
alClient – компонент занимает всю свободную клиентскую область ком-
понента-контейнера;
alCustom – выравнивание определяется родительским компонентом.
Поместите на пустую форму компонент TPanel и поэкспериментируйте с
761
6.3 Визуальное программирование в среде Lazarus
____________________________________________________________________
различными значениями свойства Align компонента. При этом учитывайте следующие моменты. Согласно стандартам графического интерфейса в окне программы первой должна идти строка меню. Если вы поместите на форму компонент TMainMenu и создадите хотя бы один пункт меню, то даже если вы присвоите свойству Align TPanel значение alClient, панель не займет всю область формы. Т.е. меню не будет закрыто панелью!
Значения alTop и alBottom имеют больший приоритет, чем alLeft и alRight. Исходя из сказанного, при проектировании внешнего вида, напри-
мер Проводника, можно создать примерно такой каркас приложения, рис.
6.107.
Рис. 6.107. Пример проектирования внешнего вида приложения
Сначала с помощью TMainMenu создаем хотя бы один пункт меню. Затем помещаем компонент TStatusBar – строку состояния. Компонент имеет по умолчанию свойство Align= alBottom. Помещаем на форму три компонен-
та TPanel. Первой панели присваиваем значение Align= alTop, в нем мы будем размещать панель инструментов, второй панели присваиваем значение
Align= alLeft, сюда мы поместим компонент TTreeView, причем свойст-
ву Align этого компонента присваиваем значение alClient. Третьей панели
762
Глава 6 Программирование приложений с графическим интерфейсом
____________________________________________________________________
присвоим значение Align= alClient, на него мы поместим компонент
TListView и его свойству Align присвоим значение alClient.
Теперь, если пользователь нажмет на кнопку раскрытия окна во весь экран,
все компоненты будут пропорционально изменять свои размеры и ваше прило-
жение в этом случае сохранит "приличный" вид.
Практически у всех компонентов имеется также свойство Anchors с по-
мощью которого осуществляется привязка компонента к родительскому ком-
поненту. Обычно Lazarus в зависимости от значения свойства Align компо-
нента автоматически подставляет наиболее подходящие значения и свойству
Anchors.
Группа свойств TPanel позволяет управлять вешним видом панели. Это такие свойства как BevelInner, BevelOuter, BevelWidth,
BorderStyle, BorderWidth. Просто пробуйте задавать различные значения этим свойствам и вы все сами поймете.
Часто требуется изменять размеры не окна приложения в целом, а размеры компонентов в окне. Например, изменить размеры левого окна Проводника
(компонент TTreeView). Причем в данном случае пользователь может менять только ширину окна. Поэтому правильнее говорить об изменении границ пане-
лей, на которых расположены компоненты. Для этого применяется компонент
TSplitter – разделитель (вкладка Additional). Чтобы вставить раздели-
тель между двумя панелями, необходимо сначала поместить первую панель, за-
дать стиль выравнивания (свойство Align). Для нашего случая задаем для пер-
вой панели Align= alLeft. Затем помещаем на форму TSplitter. По умолчанию он имеет свойство Align= alLeft. Поэтому разделитель автома-
тически прижмется к панели. Теперь помещаем на форму вторую панель и за-
даем Align= alClient. Все, теперь во время работы приложения пользова-
тель может перемещать границы панелей, ухватившись мышью за разделитель.
763
Послесловие
Как сказали ли бы люди в Древнем Востоке, кувшин моих мыслей показы-
вает дно. К сожалению, нами остались нерассмотренными ряд вопросов. Это, в
частности, графика и мультимедиа, базы данных, сетевые приложения, созда-
ние Интернет приложений и многое другое. Но размеры книги приобрели уже столь устрашающие размеры, что пора остановиться!
Автор выражает надежду, что и в таком виде книга принесла вам пользу,
приоткрыла окно в большой и прекрасный мир программирования! Пробудила интерес к этой в высшей степени творческой профессии, коей является профес-
сия программиста.
Безусловно, для овладения хотя бы азами этой профессии, мало прочтения одной книги и, безусловно, знания играют тоже очень большую роль. Но, и ав-
тор это неоднократно подчеркивал, для того, чтобы стать хорошим программи-
стом, прежде всего нужны талант и трудолюбие.
Если вы, уважаемый читатель, решили связать свою дальнейшую жизнь с программированием, автор желает вам успехов и удач в этом трудном, терни-
стом, но чрезвычайно интересном пути!
И в заключение, все свои предложения и замечания по содержанию книги направляйте по адресу: mansurov2002@inbox.ru
С уважением, автор.
764
Литература
1. Демидович Б.П., Марон И.А. "Основы вычислительной математики", М.:
"Наука", 1970.
2. Копченова Н.В., Марон И.А. "Вычислительная математика в примерах и за-
дачах", М.: "Наука", 1972.
3. Гутер Р.С., Овчинский Б.В. " Элементы численного анализа и математиче-
ской обработки результатов опыта", М.: "Наука", 1970.
4.Архангельский А.Я. "Программирование в Delphi 7", М.: "Бином", 2003.
5.Иванова Г.С., Ничушкина Т.Н., Пугачев Е.К. "Объектно-ориентированное программирование", М.: Изд-во МГТУ им. Н.Э. Баумана, 2003.
6.Кэнту М. "Delphi 7: Для профессионалов", СПб.: Питер, 2004.
7.Ершов А.П. "Введение в теоретическое программирование", М.: "Наука",
1977.
8.Вирт Н. "Алгоритмы и структуры данных", М.: Мир, 1989.
9.Кнут Д.Э. "Искусство программирования", т.1. "Основные алгоритмы", М.: "Мир", 1976.
10.Кнут Д.Э. "Искусство программирования", т.3. "Сортировка и поиск", М.: "Мир", 1978.
11.Ламуатье Ж.П. "Упражнения по программированию на Фортране-IV", М.:
Мир, 1978.
12. Дж. Бакнелл "Фундаментальные алгоритмы и структуры данных в Delphi",
СПб ДиаСофтЮП, 2003 г.
13.Сайт FreePascal.ru – http://www.freepascal.ru/
14.Форум сообщества ALT Linux – http://forum.altlinux.org/
15.Форум программистов и сисадминов – http://www.cyberforum.ru/
16.http://freepascal.org/
17.http://lazarus.freepascal.org/
765
Алфавитный указатель
Abstract............................................ |
|
454 |
Actions......... |
См. Механизм действий |
|
ANSI................................................ |
|
169 |
Append ............................................ |
|
234 |
Array................................................ |
|
193 |
ASCII............................................... |
|
169 |
AssignFile........................................ |
|
232 |
Begin.................................................. |
|
55 |
BlockRead ....................................... |
|
252 |
BlockWrite ...................................... |
|
252 |
Boolean.............................................. |
|
50 |
break ................................................ |
|
128 |
Breakpoints...................................... |
|
559 |
Byte.................................................. |
|
162 |
Cardinal ........................................... |
|
162 |
Char ........................................... |
|
50, 172 |
chr .................................................... |
|
173 |
CloseFile.......................................... |
|
233 |
ClrScr............................................... |
|
224 |
Code page ........................................ |
|
169 |
CodeTools ....................................... |
|
488 |
Comp ............................................... |
|
166 |
continue ........................................... |
|
128 |
CP866 .............................................. |
|
170 |
Currency .......................................... |
|
166 |
DateTimeToStr |
................................191 |
|
DateToStr ........................................ |
|
191 |
div ...................................................... |
|
96 |
do ..................................................... |
|
113 |
Double ............................................. |
|
166 |
downto ............................................. |
|
121 |
Dynamic .......................................... |
|
454 |
else................................................... |
|
108 |
End..................................................... |
|
55 |
Eof ................................................... |
|
233 |
Eoln.................................................. |
|
236 |
Erase ................................................ |
|
233 |
Extended .......................................... |
|
166 |
false.................................................. |
|
104 |
FIFO ................................................ |
|
375 |
766 |
|
|
File .................................................. |
|
231 |
FileExists......................................... |
|
233 |
FilePos............................................. |
|
242 |
FileSize............................................ |
|
242 |
finalization ...................................... |
|
218 |
fool-tolerance .................................... |
|
99 |
Free Pascal Compiler ........................ |
|
59 |
GoToXY.......................................... |
|
223 |
GUI (Graphics User Interface) |
...... 465 |
|
heap ................................................. |
|
366 |
High................................................. |
|
202 |
implementation ............................... |
|
217 |
Int64 ................................................ |
|
162 |
Integer ............................................... |
|
50 |
Interface .......................................... |
|
217 |
IntToStr ........................................... |
|
191 |
IOResult .......................... |
129, 233, 258 |
|
KeyPressed...................................... |
|
224 |
Lazarus .............................................. |
|
60 |
IDE ................................................ |
|
61 |
LCL ........................................... |
|
60, 172 |
LIFO................................................ |
|
339 |
LongInt............................................ |
|
162 |
LongWord ....................................... |
|
162 |
mod.................................................... |
|
96 |
nil .................................................... |
|
201 |
ord ................................................... |
|
173 |
Override .......................................... |
|
449 |
pred.......................................... |
173, 308 |
|
Private ............................................. |
|
416 |
Property........................................... |
|
422 |
Protected.......................................... |
|
416 |
Public .............................................. |
|
416 |
Published......................................... |
|
483 |
RAD-системы .................................. |
|
30 |
Read .................................. |
57, 234, 241 |
|
readkey ............................................ |
|
224 |
Readln ....................................... |
|
57, 234 |
Real ........................................... |
|
50, 166 |
Real48 ............................................. |
|
166 |
Алфавитный указатель
________________________________________________________________
Rename ............................................ |
233 |
repeat ............................................... |
114 |
Reset ........................................ |
232, 233 |
Rewrite .................................... |
232, 234 |
Seek ................................................. |
241 |
SeekEoln.......................................... |
236 |
Self................................................... |
444 |
Set of................................................ |
163 |
ShortInt ............................................ |
162 |
Single............................................... |
166 |
SmallInt ........................................... |
162 |
String ................................................. |
50 |
StrToDate ........................................ |
191 |
StrToDateTime ................................ |
191 |
StrToInt............................................ |
191 |
succ .......................................... |
173, 308 |
System ............................................. |
222 |
TextBackGround ............................. |
224 |
TextFile............................................ |
230 |
Trim ................................................. |
191 |
true................................................... |
104 |
TStringList....................................... |
571 |
TStrings ........................................... |
562 |
TUTF8Char ..................................... |
175 |
type .................................................. |
228 |
UCS ................................................. |
171 |
Unicode............................................ |
171 |
Unit .................................................. |
217 |
until.................................................. |
114 |
upcase .............................................. |
173 |
UTF-8 .............................................. |
171 |
Virtual.............................................. |
449 |
while ................................................ |
113 |
Window ........................................... |
224 |
with .................................................. |
229 |
Word ................................................ |
162 |
Write .......................... |
56, 223, 235, 241 |
Writeln....................................... |
56, 236 |
Ада Лавлейс ................................... |
168 |
Алгоритм .......................................... |
10 |
Евклида......................................... |
12 |
поиска |
|
бинарный................................ |
321 |
линейный ............................... |
315 |
сортировки |
|
метод вставки ........................ |
289 |
метод выбора ......................... |
282 |
метод пузырька ..................... |
277 |
метод Хоара ........................... |
303 |
эффективность............................. |
11 |
Библиотека визуальных |
|
компонентов LCL........................ |
60 |
Блоксхема ...................................... |
14 |
Буфер ................................................ |
57 |
Вкладка........................................... |
471 |
Гаусса |
|
метод............................................. |
39 |
Главное меню .................................. |
63 |
Главное окно.................................... |
63 |
Граф ................................................ |
334 |
взвешенный ............................... |
334 |
неориентированный .................. |
334 |
ориентированный...................... |
334 |
связный....................................... |
335 |
Дек .................................................. |
375 |
Дерево ............................................ |
335 |
двоичное..................................... |
338 |
двоичное |
|
поиска..................................... |
392 |
обход........................................... |
338 |
обход |
|
сверху ..................................... |
339 |
обход |
|
слева ....................................... |
339 |
обход |
|
снизу ....................................... |
339 |
Директива компилятора |
|
{$-} ............................................. |
129 |
{$+}............................................. |
129 |
{$ELSE} ..................................... |
178 |
{$ENDIF} ................................... |
178 |
{$H-}........................................... |
173 |
{$H+}.......................................... |
173 |
{$I} ............................................. |
481 |
{$IFDEF}.................................... |
178 |
767
Алфавитный указатель
________________________________________________________________
Евклида |
|
алгоритм ....................................... |
12 |
Запись ............................................. |
228 |
Идентификатор ................................ |
49 |
Имя |
|
программы.................................... |
49 |
Инспектор объектов ........................ |
64 |
Интеграл |
|
формула Симпсона...................... |
34 |
Интерфейс |
|
графический ............................... |
465 |
Исключения.................................... |
525 |
классы исключений ................... |
526 |
EAccessViolation .......... |
528 |
EConvertError.................. |
527 |
EDivByZero......................... |
527 |
EIntOverflow .................... |
528 |
EOverflow ........................... |
528 |
ERangeError....................... |
528 |
EUnderflow......................... |
528 |
EZeroDivide....................... |
528 |
обработка.................................... |
528 |
except....................................... |
528 |
finally....................................... |
529 |
try............................................. |
528 |
Код |
|
восьмибитный ............................ |
169 |
двоичный ...................................... |
54 |
исходный ...................................... |
59 |
клавиши ........................................ |
57 |
кодировка ................................... |
169 |
открытый ...................................... |
60 |
программный ............................... |
54 |
семибитный................................ |
169 |
символа ....................................... |
168 |
таблица ................................. |
51, 169 |
Кодировка |
|
UTF-8 .......................................... |
171 |
стандарт ...................................... |
170 |
Кодовая страница .......................... |
169 |
CP-1251....................................... |
169 |
Кодовая таблица ............................ |
169 |
Комментарий ................................... |
54 |
многострочный............................ |
54 |
однострочный.............................. |
54 |
Компоненты........................... |
473, 489 |
TActionList ................................. |
749 |
TBitBtn ....................................... |
509 |
TButton ....................................... |
509 |
TChart ......................................... |
730 |
TCheckBox ................................. |
647 |
TCheckGroup.............................. |
650 |
TColorDialog .............................. |
570 |
TComboBox................................ |
635 |
TEdit............................................ |
513 |
TFloatSpinEdit............................ |
555 |
TFontDialog ................................ |
567 |
TImageList .................................. |
654 |
TLabel ......................................... |
493 |
TLabeledEdit............................... |
521 |
TListBox ..................................... |
625 |
TListView ................................... |
687 |
TMainMenu ................................ |
726 |
TMaskEdit................................... |
537 |
TMemo........................................ |
562 |
TOpenDialog............................... |
577 |
TPanel ......................................... |
770 |
TRadioButton.............................. |
649 |
TRadioGroup .............................. |
650 |
TSaveDialog ............................... |
577 |
TSpeedButton ............................. |
512 |
TSpinEdit .................................... |
555 |
TSplitter ...................................... |
772 |
TStatusBar................................... |
521 |
TStringGrid ................................. |
616 |
TToolBar..................................... |
745 |
TTReeView................................. |
653 |
TUpDown ................................... |
556 |
визуальные......................... |
473, 489 |
палитра ............................... |
473, 492 |
Компьютер ....................................... |
10 |
Консольное приложение ................ |
69 |
Константа......................................... |
53 |
Линейка .......................................... |
468 |
Прокрутки .................................. |
468 |
768
Алфавитный указатель
________________________________________________________________
Массив ............................................ |
|
193 |
динамический ............................ |
|
200 |
индекс ......................................... |
|
194 |
символов..................................... |
|
173 |
Метод ................................................ |
|
26 |
Гаусса............................................ |
|
39 |
двойного пересчета ..................... |
|
34 |
наименьших квадратов ....... |
37, 730 |
|
пошаговой детализации .............. |
26 |
|
пузырька ..................................... |
|
277 |
сортировки вставками............... |
|
289 |
сортировки выбором ................. |
|
283 |
Хоара........................................... |
|
303 |
Механизм действий....................... |
|
749 |
Модель.............................................. |
|
29 |
информационная.......................... |
|
29 |
математическая............................ |
|
29 |
Модуль............................................ |
|
216 |
CRT ............................... |
85, 222, 223 |
|
Dos............................................... |
|
222 |
FileUtil........................................... |
|
85 |
Graph ........................................... |
|
222 |
LCLProc ...................................... |
|
181 |
LConvEncoding........................... |
|
178 |
System ......................................... |
|
222 |
интерфейсный раздел................ |
|
217 |
исходный .................................... |
|
216 |
объектный .................................. |
|
216 |
раздел реализации ..................... |
|
217 |
структура .................................... |
|
217 |
Объектно-ориентированное |
|
|
программирование (ООП) ........ |
400 |
|
абстракция.................................. |
|
402 |
инкапсуляция ..................... |
|
402, 411 |
свойства .................................. |
|
422 |
спецификаторы доступа........ |
416 |
|
класс............................................ |
|
403 |
деструктор .............................. |
|
463 |
дочерний................................. |
|
432 |
конструктор............................ |
|
455 |
метод |
|
|
виртуальный....................... |
|
450 |
динамический .................... |
|
454 |
поля......................................... |
403 |
родительский ......................... |
432 |
члены ...................................... |
403 |
экземпляр ............................... |
403 |
классификация........................... |
402 |
наследование ..................... |
402, 432 |
объект ......................................... |
400 |
полиморфизм ..................... |
403, 443 |
позднее связывание............... |
449 |
раннее связывание ................ |
444 |
Окно................................................ |
483 |
наблюдений ............................... |
559 |
сообщений ................................... |
66 |
Оператор .......................................... |
48 |
ввода |
|
read............................................ |
57 |
readln......................................... |
57 |
выбора case ................................ |
124 |
вывода |
|
write .......................................... |
56 |
writeln ....................................... |
56 |
декремента |
|
dec ............................................. |
58 |
инкремента |
|
inc.............................................. |
58 |
присоединения with .................. |
229 |
составной ................................... |
110 |
условный |
|
if..then ..................................... |
106 |
if..then..else ............................. |
108 |
цикла |
|
с параметром.......................... |
120 |
с постусловием ...................... |
114 |
с предусловием...................... |
113 |
Отладка .......................................... |
558 |
Очередь .......................................... |
375 |
Палитра компонентов ..................... |
64 |
Панель инструментов ............. |
63, 468 |
Параметры |
|
передача |
|
как констант........................... |
158 |
по значению........................... |
156 |
по ссылке ............................... |
157 |
769
Алфавитный указатель
________________________________________________________________
фактические ............................... |
144 |
формальные................................ |
144 |
Переключатель .............................. |
473 |
Переменная |
|
булевая........................................ |
104 |
глобальная .................................. |
146 |
имя................................................. |
49 |
локальная.................................... |
146 |
область видимости .................... |
146 |
статическая................................. |
149 |
тип ................................................. |
50 |
вещественный ........................ |
164 |
Comp ................................... |
166 |
Currency .............................. |
166 |
Double ................................. |
166 |
Extended.............................. |
166 |
Real...................................... |
166 |
Real48.................................. |
166 |
Single................................... |
166 |
даты и времени ...................... |
161 |
интервальный......................... |
162 |
логический ............................. |
164 |
множество .............................. |
163 |
перечислимый........................ |
163 |
пользовательский .................. |
160 |
простой |
|
порядковый ........................ |
161 |
стандартный ............................. |
50 |
boolean .................................. |
50 |
char ................................ |
50, 172 |
integer.................................... |
50 |
real ......................................... |
50 |
string .............................. |
50, 173 |
строковый............................... |
161 |
TUTF8Char ......................... |
175 |
структурированный............... |
161 |
указатель......................... |
161, 166 |
файловый................................ |
230 |
целый ...................................... |
161 |
Byte ..................................... |
162 |
Cardinal ............................... |
162 |
Int64..................................... |
162 |
Integer.................................. |
162 |
LongInt................................ |
162 |
LongWord ........................... |
162 |
ShortInt ............................... |
162 |
SmallInt............................... |
162 |
Word ................................... |
162 |
Поиск .............................................. |
315 |
бинарный.................................... |
321 |
линейный ................................... |
315 |
Программа ....................................... |
16 |
исполняемая............................... |
217 |
Программирование ......................... |
16 |
Процедура ...................................... |
143 |
Append ........................................ |
234 |
AssignFile ................................... |
231 |
BlockRead................................... |
252 |
BlockWrite .................................. |
252 |
CloseFile ..................................... |
233 |
ClrScr .......................................... |
224 |
Delete .......................................... |
183 |
Dispose........................................ |
367 |
Erase............................................ |
233 |
exit............................................... |
160 |
Freemem ..................................... |
367 |
Getmem....................................... |
367 |
GoToXY ..................................... |
223 |
halt............................................... |
160 |
Insert............................................ |
184 |
New ............................................. |
367 |
Read .................................... |
234, 241 |
Readln ......................................... |
234 |
Rename........................................ |
233 |
Reset............................ |
232, 233, 252 |
Rewrite ........................ |
232, 234, 252 |
Seek............................................. |
241 |
SetLength .................................... |
182 |
Str ................................................ |
187 |
TextBackGround......................... |
224 |
TextColor .................................... |
223 |
UTF8Delete................................. |
183 |
Val ............................................... |
188 |
Window....................................... |
224 |
Write............................ |
223, 235, 241 |
Writeln ........................................ |
236 |
770