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

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

17.01.2016, 02:13. Просмотров 344. Ответов 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, чтобы при нажатии менялся фон в Image?
Подскажите пожалуйста, как написать цикл для кнопки Button чтобы при нажатии...

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

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

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

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

9
northener
пофигист широкого профиля
3423 / 2323 / 630
Регистрация: 15.07.2013
Сообщений: 13,742
17.01.2016, 02:30 2
Чем тебе так нравится слово begin, что ты суёшь его почти всюду? Где надо и где не надо?
0
Allenum
0 / 0 / 0
Регистрация: 17.01.2016
Сообщений: 69
17.01.2016, 02:32  [ТС] 3
ну, я просто думал ,что каждое нажатие надо выделить им
0
D1973
Модератор
3476 / 2496 / 1229
Регистрация: 21.01.2014
Сообщений: 10,388
Записей в блоге: 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
Модератор
3476 / 2496 / 1229
Регистрация: 21.01.2014
Сообщений: 10,388
Записей в блоге: 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

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

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

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


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

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

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