![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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.
|