Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Allenum
0 / 0 / 0
Регистрация: 17.01.2016
Сообщений: 69
#1

Цикл должен возобновляться при нажатии Button - Delphi

17.01.2016, 02:13. Просмотров 337. Ответов 9
Метки нет (Все метки)

В чем суть проблемы, пишу тест( в массиве z значения фразы, вопросы и варианты ответов), на форме лейба и 5 кнопок, в которых меняется текст, цикл должен переходить от значения от i=1 к i=2 из-за нажатия одной из кнопок(переменная а - это баллы за правильные ответы(в моём случае в 1 это-2, во 2 это тоже 2 и в 3 правильная кнопка 3 )),после 3-го нажатия на кнопки форма скрывается и открывается новая,добавлял процедуры нажатия с пустым действием(сейчас убрал) не помогло, может кто знает что делать?
ЕСЛИ что-то не так оформил в теме, простите, пишу первый раз
(П.С. s перед лейбой и бутоном это из-за ALpha skina)
Delphi
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
unit Unit5;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, sLabel, sButton;
 
type
  TForm5 = class(TForm)
    sButton1: TsButton;
    sButton2: TsButton;
    sButton3: TsButton;
    sButton4: TsButton;
    sButton5: TsButton;
    sLabel1: TsLabel;
    procedure FormCreate(Sender: TObject);
    procedure FormShow(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form5: TForm5; z: array[1..25,1..6] of string; a,i: integer;
 
implementation
 
uses Unit6;
 
{$R *.dfm}
 
procedure TForm5.FormCreate(Sender: TObject);
begin
z[1,1]:='';
z[1,2]:='';
z[1,3]:='';
z[1,4]:='';
z[1,5]:='';
z[1,6]:='';
z[2,1]:='';
z[2,2]:='';
z[2,3]:='';
z[2,4]:='';
z[2,5]:='';
z[2,6]:='';
z[3,1]:='';
z[3,2]:='';
z[3,3]:='';
z[3,5]:='';
z[3,6]:='';
end;
 
 
 
procedure TForm5.FormShow(Sender: TObject);
begin
for i:=1 to 3 do
begin
slabel1.caption:=z[i,1];
sButton1.caption:=z[i,2];
sButton2.caption:=z[i,3];
sButton3.caption:=z[i,4];
sButton4.caption:=z[i,5];
sButton5.caption:=z[i,6];
 
begin
TForm5.sButton1Click(sender);
if  i=3 then
begin
Form6.Show;
Form5.Visible:=false;
end;
end;
 
begin
sButton2Click(sender);
if (i=1) or (i=2) then a:=a+1;
if  i=3 then
begin
Form6.Show;
Form5.Visible:=false;
end;
end;
 
begin
TForm5.sButton3Click(sender);
if  i=3 then a:=a+1;
if  i=3 then
begin
Form6.Show;
Form5.Visible:=false;
end;
end;
 
begin
TForm5.sButton4Click(sender);
if  i=3 then
begin
Form6.Show;
Form5.Visible:=false;
end;
end;
 
begin
TForm5.sButton5Click(sender);
if  i=3 then
begin
Form6.Show;
Form5.Visible:=false;
end;
end;
end;
end;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.01.2016, 02:13
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Цикл должен возобновляться при нажатии Button (Delphi):

Как написать цикл для кнопки Button, чтобы при нажатии менялся фон в Image?
Подскажите пожалуйста, как написать цикл для кнопки Button чтобы при нажатии...

Переименование Button при нажатии
Есть некое сообщение Label и кнопка Button, нужно, чтобы изначально Label был...

Выдает ошибку при нажатии на button
unit Unit4; interface uses Windows, Messages, SysUtils, Variants,...

Смена записей в listbox при нажатии button
День добрый, вопрос такой, имеется listbox с записями, нужно чтобы при нажатии...

Создание документа word при нажатии на button
При нажатии на button создается документ и вносится туда информация с edit1,...

Отрисовка частиц на Image при нажатии Button
доброе, уже почти утро))) помогите пожалуйста с кодом, нужно чтобы частицы...

9
northener
пофигист широкого профиля
3252 / 2304 / 628
Регистрация: 15.07.2013
Сообщений: 13,599
17.01.2016, 02:30 #2
Чем тебе так нравится слово begin, что ты суёшь его почти всюду? Где надо и где не надо?
0
Allenum
0 / 0 / 0
Регистрация: 17.01.2016
Сообщений: 69
17.01.2016, 02:32  [ТС] #3
ну, я просто думал ,что каждое нажатие надо выделить им
0
D1973
Модератор
3271 / 2319 / 1161
Регистрация: 21.01.2014
Сообщений: 9,643
Записей в блоге: 3
Завершенные тесты: 1
17.01.2016, 10:28 #4
Цитата Сообщение от Allenum Посмотреть сообщение
z[1,1]:='';
z[1,2]:='';
z[1,3]:='';
z[1,4]:='';
z[1,5]:='';
z[1,6]:='';
z[2,1]:='';
z[2,2]:='';
z[2,3]:='';
z[2,4]:='';
z[2,5]:='';
z[2,6]:='';
z[3,1]:='';
z[3,2]:='';
z[3,3]:='';
z[3,5]:='';
z[3,6]:='';
А вот эту красоту разве нельзя так записать?
Delphi
1
2
3
4
5
var i, j : integer;
...
for i := 1 to 3 do
 for j := 1 to 6 do
  Z[i, j] := '';
0
Allenum
0 / 0 / 0
Регистрация: 17.01.2016
Сообщений: 69
17.01.2016, 11:20  [ТС] #5
можно, спасибо, но не в это суть пргоблемы
0
D1973
Модератор
3271 / 2319 / 1161
Регистрация: 21.01.2014
Сообщений: 9,643
Записей в блоге: 3
Завершенные тесты: 1
17.01.2016, 13:17 #6
Цитата Сообщение от Allenum Посмотреть сообщение
но не в это суть пргоблемы
Конечно не в этом... Суть в том, что из твоего описания совершенно ничего не понятно... Единственно, что я понял - это то, что ты пытаешься писать тестовую программу
0
Allenum
0 / 0 / 0
Регистрация: 17.01.2016
Сообщений: 69
17.01.2016, 23:44  [ТС] #7
Ну соглашусь, напортачил, так вот тогда напишу заново, у меня есть цикл
Delphi
1
2
3
4
5
6
7
8
9
10
procedure TForm5.FormShow(Sender: TObject);
begin
for i:=1 to 3 do
slabel1.caption:=z[i,1];
sButton1.caption:=z[i,2];
sButton2.caption:=z[i,3];
sButton3.caption:=z[i,4];  \\ присваиваю лейбе текст вопроса и кнопкам варианты ответов 
sButton4.caption:=z[i,5];
sButton5.caption:=z[i,6];
...
После ... мне нужна процедура нажатия на оду из кнопок которая завершит цикл со значением i=1 и перейдёт к циклу i=2, так вот я не знаю как написать эту процедуру нажатия кнопки

Добавлено через 11 минут
а если быть точным то должно быть такое ветвление
Delphi
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
(нажатие на 1 кнопку(которое я не знаю как написать));
begin 
if i=2 then a:=a+1; \\ a- это баллы за правильные ответы 
if i=3 then  form5.close; \\ завершение теста после последнего вопроса 
end;
 
(нажатие на 2 кнопку) ;
begin 
if i=1 then a:=a+1; 
if i=3 then  form5.close;
end;
 
(нажатие на 3 кнопку);
begin 
if i=3 then a:=a+1;
if i=3 then  form5.close;
end;
 
(нажатие на 4 кнопку) 
begin 
if i=3 then  form5.close;
end;
 
(нажатие на 5 кнопку) 
begin  
if i=3 then  form5.close;
end;
5 и 4 кнопка не могут быть правильным ответом ни к одному из вопросов
0
Arik100
59 / 60 / 37
Регистрация: 24.07.2015
Сообщений: 224
18.01.2016, 17:07 #8
Цитата Сообщение от Allenum
ну, я просто думал ,что каждое нажатие надо выделить им
Для того чтобы создать процедуру нажатия кнопки (самый простой способ): на форме находишь нужную кнопку и щёлкаешь по ней 2 раза. И тогда будет автоматически сгенерирован код в который и вставляешь необходимый тебе функционал.
0
Junkers1989
28 / 28 / 23
Регистрация: 26.12.2015
Сообщений: 154
18.01.2016, 19:29 #9
Криво все , если совсем чуть-чуть выпрямить будет так:
Delphi
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
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  Tvopros=record
  Vopros:string;                   // sam vopros
  Varianty:array [1..5] of string; // varianty otvetov
  verniy:byte;                     // No vernogo varianta
  end;
 
 
  TForm1 = class(TForm)
    Label1: TLabel;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  z: array[1..25] of tvopros;
  NoTecVop:integer; // nomer tekushego voprosa
  a:integer;// kolichestvo vernyh;
implementation
 
{$R *.dfm}
procedure GetQuestion(No:integer);
begin
with form1 do
  begin
  label1.Caption:=z[no].Vopros;
  button1.Caption:=z[no].varianty[1];
  button2.Caption:=z[no].varianty[2];
  button3.Caption:=z[no].varianty[3];
  button4.Caption:=z[no].varianty[4];
  button5.Caption:=z[no].varianty[5];
  end;
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
z[1].Vopros:='Vopros 1';   // pishem vopros 1
z[1].Varianty[1]:='var 1'; // pishem variant 1 voprosa 1
z[1].Varianty[2]:='var 2'; // pishem variant 2 voprosa 1
z[1].Varianty[3]:='var 3'; // pishem variant 3 voprosa 1
z[1].Varianty[4]:='var 4'; // pishem variant 4 voprosa 1
z[1].Varianty[5]:='var 5'; // pishem variant 5 voprosa 1
z[1].verniy:=2;       // ukazivaem No vernogo varianta
 
z[2].Vopros:='';   // pishem vopros 2
z[2].Varianty[1]:=''; // pishem variant 1 voprosa 2
z[2].Varianty[2]:=''; // pishem variant 2 voprosa 2
z[2].Varianty[3]:=''; // pishem variant 3 voprosa 2
z[2].Varianty[4]:=''; // pishem variant 4 voprosa 2
z[2].Varianty[5]:=''; // pishem variant 5 voprosa 2
z[2].verniy:=2;       // ukazivaem No vernogo varianta
 
 
z[3].Vopros:='';   // pishem vopros 3
z[3].Varianty[1]:=''; // pishem variant 1 voprosa 3
z[3].Varianty[2]:=''; // pishem variant 2 voprosa 3
z[3].Varianty[3]:=''; // pishem variant 3 voprosa 3
z[3].Varianty[4]:=''; // pishem variant 4 voprosa 3
z[3].Varianty[5]:=''; // pishem variant 5 voprosa 3
z[3].verniy:=3;       // ukazivaem No vernogo varianta
 
// i tak dalee dlya vseh voprosov
 
a:=0;
NoTecVop:=1;
GetQuestion(NoTecVop);
end;
 
 
procedure TForm1.Button1Click(Sender: TObject); //i button2 i button3... vse v kuchy
var otvet:integer;
begin
if sender = button1 then
otvet:=1;
if sender = button2 then
otvet:=2;
if sender = button3 then
otvet:=3;
if sender = button4 then
otvet:=4;
if sender = button5 then
otvet:=5;
 
if otvet=z[NoTecVop].verniy then inc(a);
Inc(NoTecVop);
if NoTecVop>length(z)then
    begin
    showmessage('test proyden! forma zakrivaysa =)')  ;
    exit;
    end;
GetQuestion(NoTecVop);
end;
 
end.
Думаю смысл понятен, а так лучше бы еще и вопросы с ответами где-нибудь в стороннем файлике хранить.
0
Вложения
Тип файла: rar тест с кнопками.rar (170.7 Кб, 1 просмотров)
Allenum
0 / 0 / 0
Регистрация: 17.01.2016
Сообщений: 69
18.01.2016, 21:03  [ТС] #10
Цитата Сообщение от Junkers1989 Посмотреть сообщение
Криво все , если совсем чуть-чуть выпрямить будет так:
вообще меня просто не поняли я заумно написал) рашение проблемы нашёл методом тыка)
0
18.01.2016, 21:03
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.01.2016, 21:03
Привет! Вот еще темы с решениями:

При нажатии на Label1 Onlick, текст должен стать жирным.
Фото: http://cehennem.ucoz.com/Fayls/snimok.gif Не срабатывающий код:...

Как сделать, чтобы при нажатии на Button появлялся пароль?
Парни как сделать в делфи, при нажатии на Button появлялся пароль, для проверки...

Создать button кнопку, которая при нажатии меняет название
Изменить программный код кнопки button таким образом, что бы при нажатии...

Как при нажатии на Button изменить цвет строки в DBGrid?
Как при нажатии на Button изменить цвет строки в DBGrid. К примеру есть...


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

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

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