|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Помогите написать код для проги (Тест)
Помогите написать код для проги(Тест). Что бы по кнопке менялись и фотка и вопрос и задание.
я уже немного набросал код, только выдало ошибку... Код:
unit Unit5; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Jpeg, ExtCtrls; type TForm5 = class(TForm) Image1: TImage; StaticText1: TStaticText; Button1: TButton; RadioGroup1: TRadioGroup; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form5: TForm5; n:integer; answers:array[0..8]of boolean; implementation {$R *.dfm} procedure TForm5.Button1Click(Sender: TObject); var count,i:integer; begin if radiogroup1.ItemIndex=1 then answers[1]:=true else answers[1]:=false; count:=0; for i:=0 to 5 do if answers[i] then inc(count); showmessage('Вы ответили верно на '+inttostr(count)+' из 6ти вопросов'); // смена картинок по кнопке inc(n) Image1.Picture.LoadFromFile(IntToStr(n)+'.jpg'); // вот сдесь у меня первая ошибка if n=1 then statictext1.caption:='Обласний ...'; if n=2 tnen statictext1.caption:='dasdasd' а вот сдесь вторая ошибка if n=3 then statictext1.caption:='Памятник "Скорбящей Матери"'; if n=4 then statictext1.caption:='Памятник двірнику в м.Кропивницькому'; if n=5 then statictext1.caption:='Кіровоградський обласний краєзнавчий музей'; if n=6 then statictext1.caption:='6?'; if n=7 then statictext1.caption:='Де знаходться Перший памятник травмваю?'; if n=8 then statictext1.caption:='Пашкевич' end; end. lmikle: Пользуемся тегами Последний раз редактировалось lmikle, 31.12.2017 в 20:08. |
#2
|
|||
|
|||
ну на тебе набросок кода.
1. Сами вопросы. Я сделал запись для описания вопроса и пример для 2х вопросов. Имя картинки задается без пути, только имя файла, сами картинки должны "лежать" рядом с исполняемым модулем: Код:
unit Unit2; interface type TTest = record Question : String; Image : String; Answers : Array [0..2] Of String; CorrectAnswer : Integer; end; const Tests : Array [1..2] Of TTest = ( (Question : 'Вопрос 1'; Image : 'image1.jpg'; Answers : ('Ответ 1-1','Ответ 1-2','Ответ 1-3'); CorrectAnswer : 0), (Question : 'Вопрос 2'; Image : 'image2.jpg'; Answers : ('Ответ 2-1','Ответ 2-2','Ответ 2-3'); CorrectAnswer : 2) ); implementation end. 2. Теперь собственно обработчик. На форме лежат: метка (для текста вопроса), картинка (для, соотв, картинки) и радиогруппа (для ответов). Весь код: Код:
unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls; type TForm1 = class(TForm) RadioGroup1: TRadioGroup; Button1: TButton; Label1: TLabel; Image1: TImage; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } n : Integer; c : Integer; public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} uses Unit2; procedure TForm1.Button1Click(Sender: TObject); var I : Integer; ImgName : String; begin // Сначала сбираем ответ If n >= Low(Tests) Then Begin If RadioGroup1.ItemIndex < 0 Then Begin ShowMessage('Выберите правильный вариант.'); Exit; End; If RadioGroup1.ItemIndex = Tests[n].CorrectAnswer Then Inc(c); End; // Перехож к сл. вопросу Inc(n); Label1.Caption := ''; Image1.Picture.Graphic := Nil; RadioGroup1.Items.Clear; If n > High(Tests) Then Begin // Текущий вопрос больше чем всего вопросов ShowMessage(Format('Тест окончен. Кол-во правильных ответов: %d из %d',[c,Length(Tests)])); c := 0; n := Low(Tests)-1; End Else Begin // Новый аопрос Label1.Caption := Tests[n].Question; ImgName := IncludeTrailingPathDelimiter(ExtractFilePath(Application.ExeName)) + Tests[n].Image; If FileExists(ImgName) Then Image1.Picture.LoadFromFile(ImgName); For I := Low(Tests[n].Answers) To High(Tests[n].Answers) Do RadioGroup1.Items.Add(Tests[n].Answers[i]); End; end; procedure TForm1.FormCreate(Sender: TObject); begin c := 0; n := Low(Tests)-1; Button1Click(Sender); // Show 1st question end; end. При добавлении вопросов КОД МЕНЯТЬ НЕ НАДО, он корректно обработает любое кол-во вопросов. ЗЫ. Загрузку картинок не проверял, но должно все работать. Последний раз редактировалось lmikle, 01.01.2018 в 07:25. |
Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
vetalgov (03.01.2018)
|
#3
|
|||
|
|||
На тебе. Проект для Delphi 10 Berlin.
|