Где найти самоучитель по написанию в модуле 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.

Объяснение кода листинга программы

  1. Объявление переменных и кнопок:
    • _form: Form;
    • _textbox: TextBox;
    • AddHead, RemHead: Button;
    • arr: array[1..1000] of TextBox;
    • n: integer := 0;
  2. Процедура добавления элемента в начало стека (_AddStart):
    • Перемещение фокуса на окно ввода.
    • Проверка, не превышает ли количество элементов 36.
    • Циклическое смещение элементов вправо.
    • Если на экране не умещается 18 элементов, то элемент, создающий конфликт, перемещается вниз вручную.
    • Выделение памяти под новый элемент.
    • Копирование текста из окна ввода в новый элемент.
    • Запрет записи в новый элемент.
    • Установка ширины нового элемента.
    • Добавление нового элемента на форму.
    • Очистка окна ввода.
    • Увеличение счетчика количества элементов.
  3. Процедура удаления элемента из начала стека (_RemHead):
    • Проверка, нет ли элементов в стеке.
    • Удаление элемента из головы стека и с формы.
    • Уменьшение счетчика количества элементов.
    • Смещение всех элементов влево на 1 позицию.
    • Если было смещение влево, то откатываем его ручным способом.
    • Очистка элемента, следующего за последним элементом.
  4. Создание формы:
    • Выделение памяти под форму.
    • Установка ширины и высоты формы.
  5. Создание окна ввода контента:
    • Выделение памяти под окно ввода.
    • Установка координат окна ввода.
  6. Создание кнопок для управления добавлением и удалением элементов:
    • Выделение памяти под кнопки.
    • Установка текста на кнопках.
    • Установка обработчиков событий нажатия на кнопки.
  7. Добавление объектов на форму:
    • Добавление окна ввода, кнопок и неизвестного объекта на форму.
  8. Запуск формы:
    • Запуск формы с помощью метода Application.Run().

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.077 из 5
Похожие ответы