Коллеги, кто с учащимися создавал оконные приложения в PascalABC.Net? Подскажите пожалуйста, как реализовать многооконное приложение (связать две формы и передать данные из первой во вторую). Информации по данной среде программирования в интернете очень мало... С Delphi таких проблем не возникало.
Не занимался этим, но стало интересно. Вот, тупо скопировал отсюда. Работает. Может пригодится...
Код
uses System.Windows.Forms, System.Drawing;
var graphForm, mainForm: Form; //Две формы (два окна, грубо говоря) button: Button; //Кнопка draw_circle := false;
//Происходит при пере-/отрисовке графического окна procedure OnPaint(sender: object; e: PaintEventArgs); begin if draw_circle then //Рисуем в нашем графическом окне красной "ручкой" эллипс, который вписан в прямоугольник с координатой левого верхнего угла (90, 90) //(считая от ЛВ угла графического окна) и размером 100х100 e.Graphics.DrawEllipse(new Pen(Color.Red), new Rectangle(90, 90, 100, 100)); end;
//Происходит при нажатии на кнопку procedure OnClick(sender: object; e: System.EventArgs); begin draw_circle := not draw_circle; graphForm.Invalidate(); //Перерисовываем граф окно end; begin mainForm := new Form(); //Создаем новый экземпляр класса Form mainForm.Text := 'Main Form'; //Текст формы(окна) (аналог Window.Caption в GraphABC) mainForm.Size := new System.Drawing.Size(150, 200); //Задаем размер окна mainForm.MinimizeBox := false; //Убираем кнопку "скрыть" mainForm.MaximizeBox := false; //Убираем кнопку "развернуть" mainForm.StartPosition := FormStartPosition.Manual; //Вручную задаем положение окна mainForm.Location := new System.Drawing.Point(200, 200); //Координаты ЛВ угла
button := new System.Windows.Forms.Button(); //Создаем новую кнопку button.Location := new System.Drawing.Point(30, 10); //Тут понятно: задаем положение, отсчитывая от ЛВ угла формы, в которую мы поместим эту кнопку button.Text := 'Draw Circle'; //Текст на кнопке button.Click += OnClick; //Прописываем обработчик на событие клика mainForm.Controls.Add(button); //Добавляем кнопку на главную форму
//Тут по аналогии с первой формой(окном) graphForm := new Form(); graphForm.Text := 'Graph Form'; graphForm.Size := new System.Drawing.Size(300, 300); graphForm.StartPosition := FormStartPosition.Manual; graphForm.Location := new System.Drawing.Point(400, 200); graphForm.Paint += OnPaint; //Обработчик на событие отрисовки graphForm.Show(); //Показываем (запускаем) форму
Application.EnableVisualStyles(); //Это чтобы все было красивенько //Запускаем наше приложение, показывая главную форму и делая ее основной, т.е. при закрытии этой формы программа прекращает работу Application.Run(mainForm); end.