Форум по Delphi программированию



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ] > Код на шару!
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 31.12.2017, 19:44
vetalgov vetalgov вне форума
Прохожий
 
Регистрация: 20.12.2017
Сообщения: 5
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Помогите написать код для проги (Тест)

Помогите написать код для проги(Тест). Что бы по кнопке менялись и фотка и вопрос и задание.
я уже немного набросал код, только выдало ошибку...
Код:
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  
Старый 01.01.2018, 07:22
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 7,908
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

ну на тебе набросок кода.
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.
Всего 2 обработчика - при создании формы первичная инициализация переменных и показ первого вопроса. Если картинки к вопросу нет, то просто укажи любой текст для ее имени, только что бы такого файла небыло.
При добавлении вопросов КОД МЕНЯТЬ НЕ НАДО, он корректно обработает любое кол-во вопросов.

ЗЫ. Загрузку картинок не проверял, но должно все работать.

Последний раз редактировалось lmikle, 01.01.2018 в 07:25.
Ответить с цитированием
Этот пользователь сказал Спасибо lmikle за это полезное сообщение:
vetalgov (03.01.2018)
  #3  
Старый 13.01.2018, 06:34
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 7,908
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

На тебе. Проект для Delphi 10 Berlin.
Вложения
Тип файла: zip Test.zip (51.9 Кбайт, 5 просмотров)
Ответить с цитированием
Ответ



Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 00:33.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter   Ссылка на Telegram