Где найти самоучитель по написанию в модуле FormsABC - PascalABC.NET
Формулировка задачи:
Где найти самоучитель по написанию в модуле FormsABC
Решение задачи: «Где найти самоучитель по написанию в модуле FormsABC»
textual
Листинг программы
#apptype 'windows'//Тип подключаемой системы #reference 'System.Windows.Forms.dll'//Файл-библиотека uses System, System.Windows.Forms;//Типы из библоитек var _form: Form;//Переменная формы _textbox: TextBox;//Переменная окна ввода AddHead, RemHead: Button;//Переменные для кнопок arr: array[1..1000] of TextBox;//Массив обьектов, графически представляющих этек n: integer := 0;//Количество текущих обьектов стека на экране procedure _AddStart(sender: object; e: EventArgs);//Процедура добавления обьекта в начало стека begin _textbox.Focus;//Установка мигающего курсора в окно вводда if n = 36 then EXIT;//Если превышено число обьектов на экране, то процедура прерывается for var i := n downto 1 do//Циклическое смещение обьектов вправо begin arr[i + 1] := arr[i];//Смещение в массиве arr[i + 1].Left := arr[i + 1].Left + 30;//Смещение на экране end; if n >= 18 then//Если не умещается на одну строку, то обьект, создающий конфликт элемент перемещается вручную вниз begin arr[19].Top := 70;//Отступ сверху arr[19].Left := 30;//Отступ слева end; arr[1] := new System.Windows.Forms.TextBox;//Выделение памяти под ноый обьект arr[1].Text := _textbox.Text.ToString;//Текст из окна ввода копируется в окошко текста, представляющего ячейку стека arr[1].Enabled := false;//Запрещаем писать в окошке текста, представляющего ячейку стека arr[1].Width := 20;//Ширина обьекта arr[1].Top := 20;//Отступ сверху arr[1].Left := 30;//Отступ слева _form.Controls.Add(arr[1]);//Добавляем его на форму _textbox.Text := '';//Очищаем окошко ввода Inc(n);//Увеличиваем счетчик кол-ва элементов стека end; procedure _RemHead(sender: object; e: EventArgs);//Процедура удаления обьекта из начала стека begin if n = 0 then EXIT;//Если элементов нет, то процедура прерывается arr[1].Dispose;//Удаляем элемент из головы стека и с формы Dec(n);//Уменьшаем счетчик кол-ва элементов стека for var i := 1 to n do//Смещаем все обьекты влево на 1 позицию begin arr[i] := arr[i + 1];//Смещаем в массиве arr[i].Left := arr[i].Left - 30;//Смещаем на экране end; if n >= 18 then //Если имело место быть переполнение, то откатываем его "ручным" спомобом begin arr[18].Top := 20;//Отступ сверху arr[18].Left := 30 * 18;//Отступ слева end; arr[n + 1] := nil;//Очищаем элемент, следующий за последним элементом, так как имело место смещение влево end; begin //Создание формы _form := new Form();//Выделение памяти _form.Width := 600;//Ширина _form.Height := 200;//Высота //Создание окна ввода контента _textbox := new TextBox();//Выделение памяти _textbox.Left := 0;//Отступ слева _textbox.Top := 138;//Отступ сверху _textbox.Width := 150;//Ширина //Создание кнопки для управления добавлением элементов в стека AddHead := new System.Windows.Forms.Button();//Выделение памяти AddHead.Left := 151;//Отступ слева AddHead.Top := 138;//Отступ сверху AddHead.Text := 'Add Head';//Надпись на кнопке //Создание кнопки для управления удалением элементов из стека RemHead := new System.Windows.Forms.Button();//Выделение памяти RemHead.Left := 225;//Отступ слева RemHead.Top := 138;//Отступ сверху RemHead.Text := 'Rem Head';//Надпись на кнопке //Программирование обработчиков событий нажатия на кнопки AddHead.Click += _AddStart;//Добавление в стек RemHead.Click += _RemHead; //Удаление из стека //Добавление на форму объектов, описанных выше _form.Controls.Add(_textbox);//Добавление на форму окна ввода _form.Controls.Add(AddHead);//Добавление на форму кнопки добавления _form.Controls.Add(RemHead);//Добавление на форму кнопки удаления _form.Controls.Add(arr[1]);//Добавление на форму не помню чего. Application.Run(_form);//Запуск формы end.
Объяснение кода листинга программы
- Объявление переменных и кнопок:
- _form: Form;
- _textbox: TextBox;
- AddHead, RemHead: Button;
- arr: array[1..1000] of TextBox;
- n: integer := 0;
- Процедура добавления элемента в начало стека (_AddStart):
- Перемещение фокуса на окно ввода.
- Проверка, не превышает ли количество элементов 36.
- Циклическое смещение элементов вправо.
- Если на экране не умещается 18 элементов, то элемент, создающий конфликт, перемещается вниз вручную.
- Выделение памяти под новый элемент.
- Копирование текста из окна ввода в новый элемент.
- Запрет записи в новый элемент.
- Установка ширины нового элемента.
- Добавление нового элемента на форму.
- Очистка окна ввода.
- Увеличение счетчика количества элементов.
- Процедура удаления элемента из начала стека (_RemHead):
- Проверка, нет ли элементов в стеке.
- Удаление элемента из головы стека и с формы.
- Уменьшение счетчика количества элементов.
- Смещение всех элементов влево на 1 позицию.
- Если было смещение влево, то откатываем его
ручным
способом. - Очистка элемента, следующего за последним элементом.
- Создание формы:
- Выделение памяти под форму.
- Установка ширины и высоты формы.
- Создание окна ввода контента:
- Выделение памяти под окно ввода.
- Установка координат окна ввода.
- Создание кнопок для управления добавлением и удалением элементов:
- Выделение памяти под кнопки.
- Установка текста на кнопках.
- Установка обработчиков событий нажатия на кнопки.
- Добавление объектов на форму:
- Добавление окна ввода, кнопок и неизвестного объекта на форму.
- Запуск формы:
- Запуск формы с помощью метода Application.Run().
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д