2.2 Описание механизма программы
Механизм основан на работе с массивом и динамическим созданием компонент. Массив, в свою очередь, состоит из записей с некоторыми полями. Для редактора необходимы процедуры удаления вопроса, редактирования и добавления вопроса, а также "проставление компонент" - удаление динамически созданных объектов, и добавление, ссылки на которые имеются в записи. Создание компонент подбирает размеры и расстояния от левого края и верха формы так, чтобы картинка и радиогруппа не закрывали друг друга. В радиогруппе записывается 4 возможных варианта ответа, в свойство Caption - вопрос. При изменениях в массиве вызывается "проставление компонент", которое отражает нововведения.
procedure TForm1.addcomponents;
var i:integer;
Heightt, Widthh: integer;
HH, WW: real;
begin
Form1.Refresh;
if n>0 then
for i:=0 to n-1 do
begin
if(arr[i].im<>nil) then arr[i].im:=nil;
arr[i].im:=TImage.Create(Form1);
arr[i].im.Name:=im+inttostr(i);
arr[i].im.Parent:=Form1;
arr[i].im.Height:=137;
arr[i].im.Width:=161;
arr[i].im.Left:=24;
if arr[i].fpic<> then
arr[i].im.Picture.LoadFromFile(arr[i].fpic)
else
arr[i].im.Picture.LoadFromFile(ref+Nopic.jpg);
arr[i].im.Top:=8+i*(137+120);
Heightt:=137;
Widthh:=209;
arr[i].im.AutoSize := true;
arr[i].im.AutoSize := false;
HH := arr[i].im.Height / Heightt;
WW := arr[i].im.Width / Widthh;
if (HH > WW) then
begin
arr[i].im.Height := trunc(arr[i].im.Height / HH);
arr[i].im.Width := trunc(arr[i].im.Width / HH);
arr[i].im.Stretch := True;
end
else
begin
arr[i].im.Height := trunc(arr[i].im.Height / WW);
arr[i].im.Width := trunc(arr[i].im.Width / WW);
arr[i].im.Stretch := True;
end;
if(arr[i].r<>nil) then arr[i].r:=nil;
arr[i].r:=TRadioGroup.Create(Form1);
arr[i].r.Name:=r+inttostr(i);
arr[i].r.Parent:=Form1;
arr[i].r.Width:=209;
arr[i].r.Height:=105;
arr[i].r.Left:=24;
arr[i].r.Top:=152+i*(137+105+7);
arr[i].r.Items.Add(1)+arr[i].fans1);
arr[i].r.Items.Add(2)+arr[i].fans2);
arr[i].r.Items.Add(3)+arr[i].fans3);
arr[i].r.Items.Add(4)+arr[i].fans4);
arr[i].r.Caption:=inttostr(i+1)+.+arr[i].fquestion;
arr[i].r.ItemIndex:=0;
arr[i].r.Tag:=arr[i].frightanswer;
end;
end;
procedure TForm1.clearcomponents;
var i:integer;y:boolean;
begin
if n>0 then
for i:=0 to n-1 do
begin
arr[i].r:=TRadioGroup.Create(nil);
arr[i].r.Free;
arr[i].im:=TImage.Create(nil);
arr[i].im.Free;
end;
y:=true;
while(y) do
begin
y:=false;
for i:=0 to Form1.ComponentCount-1 do
if Form1.Components[i].GetParentComponent=Form1 then
begin
begin
if (Form1.Components[i] is TRadioGroup) then
begin
Form1.Components[i].Free;
y:=true;
break;
end;
if (Form1.Components[i] is TImage) then
begin
if Form1.Components[i]<>nil then
(Form1.Components[i] as TImage).Picture.Bitmap.FreeImage;
Form1.Components[i].Free;
y:=true;
break;
end;
end;
end;
end;
end;
procedure TForm1.visualcomp;
begin
clearcomponents;
addcomponents;
end;
- Введение
- Глава 1. Разработка динамически подключаемых библиотек DLL
- 1.1 Аргументы в пользу использования DLL
- 1.2 Основы разработки DLL
- 1.3 Экспорт функций из DLL
- 1.4 Использование DLLProc
- 1.5 Вызов процедур и функций, загруженных из DLL
- Глава 2. Разработка программы
- 2.1 Постановка задачи
- 2.2 Описание механизма программы
- 2.3 Блок схемы
- 2.4 Структуры данных
- 2.5 Системные требования
- Заключение
- 1.Назначение динамически подключаемых библиотек
- 15. Понятие динамически подключаемой библиотеки. Структура dll-библиотеки. Создание dll-библиотеки. Использование dll-библиотеки в программе. Статический и динамический импорт.
- Лабораторная работа 34. Использование динамически подключаемых библиотек (DLL).
- Динамически подключаемые библиотеки (dll)
- 3 Динамически подключаемые библиотеки.
- 11. Динамически подключаемые библиотеки (dll). Явная и неявная загрузка dll.
- 2.5.5.4. Динамически подключаемые библиотеки
- 2.4. Динамически подключаемые библиотеки.
- Разработка библиотек dll