Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/25: Рейтинг темы: голосов - 25, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 23.09.2013
Сообщений: 20
1

Windows.Forms вместо GraphABC

11.02.2016, 13:13. Показов 4428. Ответов 4
Метки нет (Все метки)

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

Самый главный вопрос: Как сделать так, чтобы таблица по критериям (запускайте программу) состояла из ячеек, на которые можно было бы кликать, и вводить в них текст. Данные же можно было записывать в массив.



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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
Program One ;
Uses GraphABC, System.Windows.Forms;
Var q2,q,c,kx,z,z0: string;
       k,a,i,i2: integer;
       m: array [1..196] of string;
Begin
SetWindowWidth(510);
SetWindowHeight(650);
CenterWindow;
SetWindowCaption('Программа для расчётов');
SetWindowIsFixedSize(True);
 
SetFontColor(clDarkRed);
DrawTextCentered(10,600,500,620,'Введите цель исследования...');
SetFontColor(clBlack);
Read(c);
Rectangle(5,5,505,55);
SetPenWidth(2);
Rectangle(10,10,500,50);
SetPenWidth(1);
q:='Цель исследования: ';
q:=q+c;
DrawTextCentered(10,10,500,50,q);
 
SetPenColor(clWhite);
Rectangle(10,600,500,620);
SetPenColor(clBlack);
SetFontColor(clDarkRed);
DrawTextCentered(10,600,500,620,'Введите количество критериев...');
SetFontColor(clBlack);
Read(k);
While (k<2) or (k>14) do
  Begin
    SetPenColor(clWhite);
    FillRectangle(201,61,239,99);
    SetPenColor(clWhite);
    Rectangle(10,600,500,620);
    SetPenColor(clBlack);
    SetFontColor(clDarkRed);
    DrawTextCentered(10,600,500,620,'Ошибка! (1<N<15) ');
    SetFontColor(clBlack);
    Readln(k);
  End;
Rectangle(10,60,240,100);
if (k=2) or (k=3) or (k=4) then q:=' критерия'
else q:=' критериев';
q:=k+q;
DrawTextCentered(10,60,240,100,q);
 
SetPenColor(clWhite);
Rectangle(10,600,500,620);
SetPenColor(clBlack);
SetFontColor(clDarkRed);
DrawTextCentered(10,600,500,620,'Введите количество альтернатив...');
SetFontColor(clBlack);
Read(a);
While (a<2) or (a>14) do
  Begin
    SetPenColor(clWhite);
    FillRectangle(201,61,239,99);
    SetPenColor(clWhite);
    Rectangle(10,600,500,620);
    SetPenColor(clBlack);
    SetFontColor(clDarkRed);
    DrawTextCentered(10,600,500,620,'Ошибка! (1<N<15) ');
    SetFontColor(clBlack);
    Readln(a);
  End;
Rectangle(260,60,490,100);
if (a=2) or (a=3) or (a=4) then q:=' альтернативы'
else q:=' альтернатив';
q:=a+q;
DrawTextCentered(260,60,490,100,q);
  
SetPenColor(clWhite);
Rectangle(10,600,500,620);
SetPenColor(clBlack);
 
SetFontSize(11);
SetFontColor(clDarkRed);
DrawTextCentered(10,600,500,620,'Введите 1-ый критерий');
SetFontColor(clBlack);
Readln(kx);
Rectangle(10,65+(40),240,85+(40));
Readln(m[1]);
DrawTextCentered(10,65+(40),240,85+(40),m[1]);
SetPenColor(clWhite);
Rectangle(10,600,500,620);
SetPenColor(clBlack);
For i:= 2 to k do
  Begin
    q:='Введите ';
    q2:='-ый критерий';
    q+=i;
    q+=q2;
    SetFontColor(clDarkRed);
    DrawTextCentered(10,600,500,620,q);
    SetFontColor(clBlack);
    Rectangle(10,65+(35*i),240,85+(35*i));
    Readln(m[i]);
    DrawTextCentered(10,65+(35*i),240,85+(35*i),m[i]);
    SetPenColor(clWhite);
    Rectangle(10,600,500,620);
    SetPenColor(clBlack);
  End;
  
SetFontColor(clDarkRed);
DrawTextCentered(10,600,500,620,'Введите 1-ую альтернативу');
SetFontColor(clBlack);
Rectangle(260,65+(40),490,85+(40));
Readln(kx);
DrawTextCentered(260,65+(40),490,85+(40),kx);
SetPenColor(clWhite);
Rectangle(10,600,500,620);
SetPenColor(clBlack);
For i:= 2 to a do
  Begin
    q:='Введите ';
    q2:='-ую альтернативу';
    q+=i;
    q+=q2;
    SetFontColor(clDarkRed);
    DrawTextCentered(10,600,500,620,q);
    SetFontColor(clBlack);
    Rectangle(260,65+(35*i),490,85+(35*i));
    Readln(kx);
    DrawTextCentered(260,65+(35*i),490,85+(35*i),kx);
    SetPenColor(clWhite);
    Rectangle(10,600,500,620);
    SetPenColor(clBlack);
  End;
 
//==========================================//
 
ClearWindow;
SetWindowWidth(750);
SetWindowHeight(750);
CenterWindow;
For i:= 0 to k do For i2:= 0 to k do Rectangle(0+(50*i2),0+(50*i),50+(50*i2),50+(50*i));
For i:= 1 to k do DrawTextCentered(0+(50*i),0+(50*i),50+(50*i),50+(50*i),'1');
For i:= 0 to k do For i2:= 0 to k do FloodFill(1+(50*i),1,clYellow);
For i:= 0 to k do For i2:= 0 to k do FloodFill(1,1+(50*i),clYellow);
SetFontSize(6);
DrawTextCentered(0,0,50,50,c);
For i:= 1 to k do DrawTextCentered(0+(50*i),0,50+(50*i),50,m[i]);
For i:= 1 to k do DrawTextCentered(0,0+(50*i),50,50+(50*i),m[i]);
SetFontSize(11);
 
For i:= 2 to (k+1) do for i2:= (1+i) to (k+1) do
Begin
  FloodFill(51*(i2-1),51*(i-1),clSilver);
  Readln(z);
  While (z<>'1') and (z<>'2') and (z<>'3') and (z<>'4') and (z<>'5') and (z<>'6') and (z<>'7') and (z<>'8') and (z<>'9') and (z<>'1/2') and (z<>'1/3') and (z<>'1/4') and (z<>'1/5') and (z<>'1/6') and (z<>'1/7') and (z<>'1/8') and (z<>'1/9') do Readln(z);
  If z='1' then z0:='1'
    Else If z='2' then z0:='1/2'
      Else If z='3' then z0:='1/3'
        Else If z='4' then z0:='1/4'
          Else If z='5' then z0:='1/5'
            Else If z='6' then z0:='1/6'
              Else If z='7' then z0:='1/7'
                Else If z='8' then z0:='1/8'
                  Else If z='9' then z0:='1/9'
    Else If z='1/2' then z0:='2'                              
      Else If z='1/3' then z0:='3'
        Else If z='1/4' then z0:='4'
          Else If z='1/5' then z0:='5'
            Else If z='1/6' then z0:='6'
              Else If z='1/7' then z0:='7'
                Else If z='1/8' then z0:='8'
                  Else If z='1/9' then z0:='9';
  FloodFill(51*(i2-1),51*(i-1),clWhite);
  DrawTextCentered(50*(i2-1),50*(i-1),50*i2,50*i,z);
  DrawTextCentered(50*(i-1),50*(i2-1),50*i,50*i2,z0);
End;
End.


Добавлено через 15 часов 7 минут
Вот кое-что нашёл. Написал вот такую программу:
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
{$apptype windows}
{$reference 'System.Windows.Forms.dll'}
Uses
  GraphABC,
  System, 
  System.Windows.Forms;
Var
  i: string;
  MyForm: System.Windows.Forms.Form;
  But: Button;
  Lab: System.Windows.Forms.Label;
  
Procedure Click(Sender: Object; Args: System.EventArgs);
  Begin
    Readln(i);
    But.Text:=i;
  End;
 
Begin
  MyForm:= System.Windows.Forms.Form.Create;
  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:=System.Windows.Forms.Label.Create;
  Lab.text:='Какая цифра вам больше всего нравиться?';
  Lab.Left:=50;
  Lab.Top:=20;
  Lab.Width:=500;
  Lab.Height:=50;
  MyForm.Controls.Add(Lab);
 
  Application.Run(MyForm);
End.
При нажатии на кнопку, нас просят ввести текст. После ввода он отображается на кнопке, но возникает проблема. Если не использовать GraphABC, то ввод текста осуществляется через командную строку, но даже так приходиться работать с двумя окнами.
Вопрос: Можно ли сделать так, чтобы данные вводились в одном (первом) окне, не используя GraphABC и командную строку?
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.02.2016, 13:13
Ответы с готовыми решениями:

System.Windows.Forms+GraphABC в одном окне
Здравствуйте, есть графическая программа написанная в обычном pascal abc с использованием модуля...

Windows.Forms - Процедуры, цикл for и System.Windows.Forms.Button
Доброго времени суток. Есть WinForms программа: ... private ClickedButtonId, ClickedButtonX,...

Установить курсор из файла *.cur имея Windows.Forms и Windows.Input
Имеется форма на Windows.Forms. Нужно заменить стандартный курсор, на курсор расположенный например...

Код для Windows Forms не работает в Web Forms?
В том году я делал лабораторки по Winforms. Естественно, они все у меня сохранились, и я полез в их...

4
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
31038 / 20273 / 7896
Регистрация: 22.10.2011
Сообщений: 35,174
Записей в блоге: 6
11.02.2016, 13:16 2
Лучший ответ Сообщение было отмечено Zerrox как решение

Решение

Можно. Использовать WinForm-овское поле ввода (TextBox), а не ReadLn, например.
1
0 / 0 / 0
Регистрация: 23.09.2013
Сообщений: 20
11.02.2016, 19:46  [ТС] 3
Благодарю, именно это мне и было нужно. Теперь есть другая проблема. Я плохо в этом понимаю, так что...
Я объявляю новую переменную
Pascal
1
Text: System.Windows.Forms.TextBox;
или
Pascal
1
Text: System.Windows.Forms.TextBoxBase;
, но в метаданных не могу найти такой обработчик события:

Мы вводим текст в TextBox, а затем нажимая клавишу ВВОД запускаем событие (Как например But.Click += Click; в программе выше). Может я не вижу, а может нужно использовать что-то другое?

Ну и второй вопрос: Как сделать так, чтобы курсор автоматически ставился в TextBox (Не приходилось нажимать на пустое место, для последующего ввода данных) ?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
31038 / 20273 / 7896
Регистрация: 22.10.2011
Сообщений: 35,174
Записей в блоге: 6
11.02.2016, 21:19 4
Лучший ответ Сообщение было отмечено Zerrox как решение

Решение

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
59
{$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.
1
0 / 0 / 0
Регистрация: 23.09.2013
Сообщений: 20
11.02.2016, 22:58  [ТС] 5
Огромное спасибо! Дальше я уже сам.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.02.2016, 22:58

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Выражение типа "System.Windows.Forms.Control" не может быть выражением типа "System.Windows.Forms.Menu"
Перевёл проект с версии 2008 на версию 2010 Наткнулся при компиляции на кучу не объявленных...

Установка Windows 8 вместо Windows 7, которая установлена рядом с Windows xp
Есть windows 7. Она установлена рядом с windows xp ( раздел 1 (C:\) windows xp, раздел 2 (D:\) мои...

Как переделать Windows Forms приложение в Windows Service с UI?
Здравствуйте, уважаемые посетители форума! Вопрос такой. У меня есть приложение C# Win Forms с...

Будут ли работать приложения написанные на Windows Forms на Windows 8
Будут ли работать приложения написанные на Windows Forms на Windows 8? И собсно еще вопрос, вы...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.