Windows.Forms вместо GraphABC - PascalABC.NET

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. Решил написать программу. Так как я ещё новичок использовал только известные мне "вещи" и естественно столкнулся с проблемами. Можете написать подобную (простенькую) программу, используя не графику, а формы (кнопочки), а я уж сам пойму, что к чему ().

Самый главный вопрос

: Как сделать так, чтобы таблица по критериям (запускайте программу) состояла из ячеек, на которые можно было бы кликать, и вводить в них текст. Данные же можно было записывать в массив.
Pascal
Вот кое-что нашёл. Написал вот такую программу:
Pascal
При нажатии на кнопку, нас просят ввести текст. После ввода он отображается на кнопке, но возникает проблема. Если не использовать GraphABC, то ввод текста осуществляется через командную строку, но даже так приходиться работать с двумя окнами.

Вопрос: Можно ли сделать так, чтобы данные вводились в одном (первом) окне, не используя GraphABC и командную строку?

Решение задачи: «Windows.Forms вместо GraphABC»

textual
Листинг программы
{$apptype windows}
{$reference 'System.Windows.Forms.dll'}
uses
  System, 
  System.Windows.Forms;
 
var
  i: string;
  MyForm: Form;
  But: Button;
  Lab: &Label;
  Txt: TextBox;
 
procedure Click(Sender: Object; Args: System.EventArgs);
begin
  But.Text := Txt.Text; // это сработает при нажатии кнопки
end;
 
procedure kp(Sender : Object; Args : KeyEventArgs); 
begin
  if Args.KeyCode = Keys.Enter then // это сработает при нажатии Enter-а в TextBox-е
  begin
    But.Text := (Sender as TextBox).Text;
    Args.SuppressKeyPress := true;
  end;
end;
 
begin
  MyForm := new Form;
  MyForm.text := 'Форма';
  MyForm.Height := 400;
  MyForm.Width := 600;
  
  But := new Button;
  But.Width := 100;
  But.Height := 100;
  But.Left := 250;
  But.Top := 100;
  But.Click += Click;
  MyForm.Controls.Add(But);
  
  Lab := new &Label;
  Lab.text := 'Какая цифра вам больше всего нравиться?';
  Lab.Left := 50;
  Lab.Top := 20;
  Lab.Width := 500;
  Lab.Height := 50;
  MyForm.Controls.Add(Lab);
  
  Txt := new TextBox;
  Txt.Left := 50;
  Txt.Top := 80;
  Txt.KeyDown += kp;
  
  MyForm.Controls.Add(Txt);
  MyForm.ActiveControl := Txt; // устанавливаем фокус на TextBox
  
  Application.Run(MyForm);
end.

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

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