- •Windows -приложение
- •Среда программирования
- •Встроенный отладчик
- •Использование графики
- •Графические данные и палитра
- •Сохранение проекта
- •Структура приложения
- •Структура модуля
- •Простые типы
- •Символьные типы
- •Логические типы
- •Тип перечень
- •Составной оператор
- •Оператор if
- •Оператор цикла for
- •Оператор цикла while
- •Оператор цикла repeat
- •Пример приложения 6
- •Пример приложения 7
- •Статические массивы
- •Динамические массивы
- •Оператор with
- •Идентичность типов
- •Совместимость типов
- •Преобразование типов
- •Операторы обработки исключительных ситуаций
- •Рекурсия
- •Процедура exit
- •Директивы подпрограммы
- •Класс как объектный тип
- •Наследование
- •Операции is и as
- •Типы ссылки на класс
- •Типизированные файлы
- •Файлы без типа
- •Пример приложения 17
- •Компонент tmainmenii
- •Двунаправленные списки
- •Потоки данных
- •Пример приложения 22
- •Интерфейс drag and drop
- •Пример приложения 24
- •С файлами
- •Пример приложения 26
- •Программные потоки
- •Приоритеты потоков
- •Класс tthread
- •Проблемы синхронизации потоков
Пример приложения 7
Пусть с помощью генератора случайных чисел генерируется некоторый ряд чисел к в диапазоне -п <= к < = п. Организовать список чисел до первого сгенерированного отрицательного числа включительно. Форма для этого примера приводится на рис. 22. На этой форме в виде трех черных прямо-v угольничков изображена метка, с помощью которой отображается ситуация, когда не задан диапазон п. Все остальные размещенные на форме компонен-ты указаны в тексте программы, который приводится ниже.
В примере используется новый компонент TComboBox - свернутый список. Этот элемент представляет собой свернутый TListBox. Для того чтобы просмотреть список, необходимо раскрыть его, например, с помощью! мыши. Список TComboBox состоит собственно из списка и редактируемого поля. В редактируемом поле может находиться какая-нибудь строка из списка или какая-нибудь строка, которую необходимо поместить в список. Дос-
64
к строке редактирования осуществляется с помощью свойства Text. Дос-* к любому элементу списка осуществляется с помощью Items.Strings /свойство Items, Strings задает тип этого свойства), а для указания номера строки i используются квадратные скобки [i].
Рис.22
Генерирование числа осуществляется с помощью функции Random(L), которая генерирует случайные числа от 0 до Z-1. Для инициализации генератора случайных чисел используется процедура Randomize. Она инициализирует генератор, т. е. дает точку отсчета для случайных чисел.
unit prim7;
interface
uses Windows, Messages, SysUtils, Classes, Graphics,
Controls, Forms, Dialogs, StdCtrls, Buttons, ExtCtrls; type
TForm1 = class(TForm)
Panel1: TPanel;
Button1: TButton;
BitBtnl: TBitBtn;
Bevell: TBevel;
Label1: TLabel;
Label2: TLabel;
Edit1: TEdit;
ComboBox1: TComboBox;
Label3: TLabel;
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure Buttoniciick(Sender: TObject);
procedure Edit1Exit(Sender: TObject); end;
var Form1: TForm1; iplementation
(Sr *.dfm}
Procedure TForm1.Edit1KeyPresa(Sender: TObject;
var Key: Char);
if not (key in [‘0'..'9',#8]) then key:=#0; end;
procedure TForm1.Button1Click(Sender: TObject); var k,i,n:integer; begin
if Length(Edit1.Text)=O then Edit1.Text: = '0'; if Edit1.Text-'O' then begin
Label3.Caption:='HeT диапазона n'; ComboBox1.Visible:=false; end else begin
ComboBox1.Visible:=true;
ComboBox1.Clear;
Label3.Caption:='';
n:-StrToInt(Edit1.Text);
Randomize;
i:=0;
While true do begin
k:=Random(2*n + 1) - n ;
inc(i);
CoraboBoxl.Items.Add{IntToStr(i)+'-e число= '+
IntToStr(k)); if k>=0 then Continue else begin
ComboBox1.Text:=ComboBox1.Items.Strings[i-1];
Break;
end;
end;
end;
end;
procedure TForm1.Edit1Exit(Sender: TObject);
begin
if Abs{StrToInt(Edit1.Text))>100 then if Application.MessageBox('Введите число Х',' Число jX] < 100 \MB_OK)=IDOK then Edit1 .SetFocus ;
end;
end.
В данном случае используется бесконечный цикл while true.... Если очередное полученное число к неотрицательно, то осуществляется переход на начало цикла - процедура Break не выполняется. Если значение к станет отрицательным, то сначала в заголовок интерфейсного элемента ComboBox1 заносится последнее значение числа к (так как нумерация строк в списке начинается с 0, последняя строка имеет номер i-1), а затем уже выполняется процедура выхода из цикла Break.
В данной программе приведен пример использования свойства Visible. Если значение этого свойства равно false (ComboBox1. Visible: =f alse), т° соответствующий объект не отображается на экране. Чтобы вернуть его изс бражение, надо свойству Visible присвоить true.
66
Назначение обработчика Edit1Exit - вернуть фокус на ввод числа п, если не соблюдается условие примера n < 100. Оформлен он так же, как и соответствующий обработчик в примере 6.
МАССИВЫ
Массив представляет собой фиксированное количество однотипных компонентов, снабженных индексами. Массивы соответствуют, например, векторам (одномерный массив), матрицам (двумерный массив) и др.