Alvin Seville
334 / 266 / 132
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 9
1

Создание нескольких окон в PascalABC.Net

24.08.2014, 19:54. Показов 7055. Ответов 4
Метки нет (Все метки)

Как создать программу, работающую сразу с двумя графическими окнами?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.08.2014, 19:54
Ответы с готовыми решениями:

Дизайн окон - PascalABC.NET
Дизайн окон.

Создание рабочего окна в PascalABC.NET
Мне нужно создать такое окно, чтобы в белой штуки была информация, а клавишами 1-4 управлять. Меню...

Создание серьезных приложений на PascalABC.NET
Можно ли создавать серьезные приложения на PascalABC.NET (именно на нем) или же все-таки пора...

Создание своего модуля для PascalABC.net
Здравствуйте уважаемые форумчане, подскажите как создать из файла Pas файл PCU. Чем и как его можно...

4
158 / 137 / 106
Регистрация: 18.05.2013
Сообщений: 289
25.08.2014, 00:07 2
Вот так:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
{$reference System.Windows.Forms.dll}
{$reference System.Drawing.dll}
{$apptype windows}
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
    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();
  mainForm.Text := 'Main Form';
  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.
1
Alvin Seville
334 / 266 / 132
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 9
25.08.2014, 07:46  [ТС] 3
Прошу прощения, но можно с комментариями, так как я мало с эти знаком.

Добавлено через 4 минуты
Если предоставляется возможным описать кратко алгоритм создания окон, то буду благодарен.

Добавлено через 5 минут
Можно ли подключить вместо System.Drawing GraphABC?

Добавлено через 4 минуты
BTW, как создать данное попроще - так чтобы было только два графических окна GraphABC (без всяких кнопочек)?

Добавлено через 6 минут
Опишу причину стольких многих вопросов. Дело в том, что я почти закончил создавать программу (оболочку для создания программ без программирования), но все программы, запускаемые в ней открываются в том же самом окне (что и главное меню). Хочется сделать возможность открытия нового окна при запуске программ и возможность его закрытия и перехода на главное окно программы (создание его активным).
0
158 / 137 / 106
Регистрация: 18.05.2013
Сообщений: 289
25.08.2014, 12:09 4
Лучший ответ Сообщение было отмечено Volobuev Ilya как решение

Решение

Цитата Сообщение от Volobuev Ilya Посмотреть сообщение
Можно ли подключить вместо System.Drawing GraphABC?
Не думаю. В GraphABC по дефолту создается единственное графическое окно, с которым вы работаете. А вообще, раз вы используете среду разработки, поддерживающую .NET, зачем ограничиваться лишь стандартными методами? Это как купить спорткар и ездить на нем только в соседний квартал за хлебом.
Я понимаю, если вы новичок и раньше не работали с .NET, это может показаться странным и сложным, но, поверьте, вы скоро привыкните и освоитесь, и тогда поймете, насколько это мощный и удобный инструмент разработки.
Цитата Сообщение от Volobuev Ilya Посмотреть сообщение
Прошу прощения, но можно с комментариями, так как я мало с эти знаком.
Нужно:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
//Подключаем ссылки на библиотеки .NET, которые нам понадобятся
{$reference System.Windows.Forms.dll}
{$reference System.Drawing.dll}
//Приложение - оконное (не консольное, то бишь)
{$apptype windows}
 
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.
Добавлено через 8 минут
Цитата Сообщение от Volobuev Ilya Посмотреть сообщение
оболочку для создания программ без программирования
Ничто не ново под луной
Сам писал подобное, используя именно .NET. Поверьте, это очень сильно облегчает написание оконных приложений. Настоятельно рекомендую хотя бы бегло ознакомиться с основными методами этой платформы. Удачи!
0
Alvin Seville
334 / 266 / 132
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 9
27.08.2014, 19:17  [ТС] 5
Спасибо.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.08.2014, 19:17
Помогаю со студенческими работами здесь

Создание byte-переменной через new запрещено в контексте PascalABC.Net
begin typeof(System.Byte).GetConstructors.PrintLines; end. Выводит пустоту. Но, следующий...

В чем разница PascalABC.net и PascalABC
Скажите в чем разница PascalABC.net И PascalABC. Помню когда-то давно программы работающие в...

Установится ли PascalABC.NET на систему, где установлен только .NET 4.6.1?
Привет всем. Вопрос, собственно, озвучен выше. Конкретнее: есть компьютер со свежеустановленной...

VK.API на PascalABC.NET
Доброго времени суток, написал модуль для PascalABC.NET, с помощью которого можно использовать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru