Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.05.06;
Скачать: CL | DM;

Вниз

RadioButton   Найти похожие ветки 

 
Kirinka   (2007-04-16 06:04) [0]

Здравствуйте, я учусь в колледже на СПО, и мне дали задание сделать тестовую оболочку на 10 вопросов, для выбора вариантов ответа использую Radiobutton помогите как привязать кнопку к правильному или неправильному варианту ответа


 
Думкин ©   (2007-04-16 06:44) [1]

Используй RadioGroup


 
Novice   (2007-04-16 07:22) [2]

Много вариантов... Если дали один конкретный тест, то можно запаять его прямо в программе. Если же планируется возможность добавления тестов (т.е. использование файлов для хранения тестов), то реализация будет уже другой.
Что именно Вам нужно?


 
Kirinka   (2007-04-16 19:27) [3]

Вот что я просила сделать!!! ВСЕМ СПАСИБО, ОФФТОП

var
 Form1: TForm1;
 i: integer;
implementation

{$R *.dfm}

procedure TForm1.Button2Click(Sender: TObject);
begin
if (RadioButton1.Checked) or (RadioButton2.Checked) or (RadioButton3.Checked)
  or (RadioButton4.Checked) then
  begin
   if (RadioButton1.Checked) then i:=i+1;
   Panel2.Visible:=true;
   Panel1.Visible:=false;
   end
  else
   Application.MessageBox("Выберите вариант ответа","Error",0);
end;


 
Kolan ©   (2007-04-16 19:30) [4]

> if (RadioButton1.Checked) then i:=i+1;

Те всегда верный ответ — первый?


 
Kirinka   (2007-04-16 19:40) [5]


> Те всегда верный ответ — первый?

нет почему, это код только для первого вопроса, можно присвоить любой

if (RadioButton1.Checked) then i:=i+1; в данном тесте у меня от 1 до 4


 
Kolan ©   (2007-04-16 19:43) [6]

> нет почему, это код только для первого вопроса, можно присвоить
> любой

Так вы для каждого вопроса дублируете
procedure TForm1.Button2Click(Sender: TObject);
begin
if (RadioButton1.Checked) or (RadioButton2.Checked) or (RadioButton3.Checked)
 or (RadioButton4.Checked) then
 begin
  if (RadioButton1.Checked) then i:=i+1;
  Panel2.Visible:=true;
  Panel1.Visible:=false;
  end
 else
  Application.MessageBox("Выберите вариант ответа","Error",0);
end;

только меняете выделную строку? — Это неправильно. Не проще ли хранить верные ответы в отдельном файле? Ведь список вопросов может изменится и соотв порядок ответов тоже. Не говоря уж о количестве вопросов&#133


 
{RASkov}   (2007-04-16 21:18) [7]

А почему выбор варианта ответа считается ошибкой? :)


 
{RASkov}   (2007-04-16 21:19) [8]

Ай ступил :(


 
{RASkov}   (2007-04-16 22:17) [9]

DFM:
object Form1: TForm1
 Left = 192
 Top = 114
 Width = 381
 Height = 384
 Caption = "Выберите вариант ответа"
 Color = clBtnFace
 Font.Charset = DEFAULT_CHARSET
 Font.Color = clWindowText
 Font.Height = -11
 Font.Name = "MS Sans Serif"
 Font.Style = []
 OldCreateOrder = False
 OnCreate = FormCreate
 PixelsPerInch = 96
 TextHeight = 13
 object Label1: TLabel
   Left = 0
   Top = 0
   Width = 373
   Height = 65
   Align = alTop
   Alignment = taCenter
   AutoSize = False
   Caption = "Label1"
   Layout = tlCenter
 end
 object RadioGroup1: TRadioGroup
   Left = 0
   Top = 65
   Width = 373
   Height = 233
   Align = alTop
   Caption = "Вопрос № 0 "
   TabOrder = 0
 end
 object Button1: TButton
   Left = 292
   Top = 312
   Width = 75
   Height = 25
   Caption = "Дальше"
   TabOrder = 1
   OnClick = Button1Click
 end
end

PAS:
unit Unit1;
interface
uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, ExtCtrls;
type
 TFAQ = record
  ArQwest: String;
  ArAnswer: array of String;
  ArTrueAnswer: Byte;
 end;
 TFAQs = array of TFAQ;

 TForm1 = class(TForm)
   RadioGroup1: TRadioGroup;
   Button1: TButton;
   Label1: TLabel;
   procedure FormCreate(Sender: TObject);
   procedure Button1Click(Sender: TObject);
 private
   Faq: TFAQs;
   NQwest, QResult: Integer;
   procedure LoadQwest(const N: Integer);
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation
{$R *.dfm}
procedure TForm1.LoadQwest(const N: Integer);
var K: Byte;
begin
 Label1.Caption:=Faq[N].ArQwest;
 RadioGroup1.Items.Clear;
 RadioGroup1.Caption:="Вопрос № "+IntToStr(N+1)+" ";
 for K:=0 to Length(Faq[N].ArAnswer)-1 do RadioGroup1.Items.Add(Faq[N].ArAnswer[K]);
end;

function VerQwest(const NQ: Integer; const NA: Byte): Byte;
begin
 Result:=ORD(Form1.Faq[NQ].ArTrueAnswer=NA);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 SetLength(Faq, 3);
 Faq[0].ArQwest:="Сколько будет 2+2";
 SetLength(Faq[0].ArAnswer, 4);
 Faq[0].ArAnswer[0]:="3"; Faq[0].ArAnswer[1]:="4";
 Faq[0].ArAnswer[2]:="5"; Faq[0].ArAnswer[3]:="Незнаю";
 Faq[0].ArTrueAnswer:=1;
 Faq[1].ArQwest:="Почему ежик колючий";
 SetLength(Faq[1].ArAnswer, 3);
 Faq[1].ArAnswer[0]:="Бла-бла"; Faq[1].ArAnswer[1]:="Фик его знает";
 Faq[1].ArAnswer[2]:="Я это не курю";
 Faq[1].ArTrueAnswer:=0;
 Faq[2].ArQwest:="Вам понравился тест";
 SetLength(Faq[2].ArAnswer, 3);
 Faq[2].ArAnswer[0]:="Да"; Faq[2].ArAnswer[1]:="Очень";
 Faq[2].ArAnswer[2]:="А куда деваться";
 Faq[2].ArTrueAnswer:=2;
 NQwest:=0; QResult:=0;
 LoadQwest(NQwest);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 if NQwest=Length(Faq) then begin
  ShowMessage("Вопросы кончились"); Exit;
 end else begin
  if RadioGroup1.ItemIndex<0 then begin
   ShowMessage("Не выбран вариант ответа!"); Exit;
  end;
  QResult:=QResult+VerQwest(NQwest, RadioGroup1.ItemIndex);
  Caption:=Format("Правильных ответов: %d", [QResult]);
  INC(NQwest);
  if NQwest<Length(Faq) then LoadQwest(NQwest) else begin
   ShowMessage(Format("Ваш результат: %d правильных ответов из %d", [QResult, Length(Faq)-1]));
   Button1.Caption:="Всё";
  end;
 end;
end;

end.

Только что придумал :) Надеюсь как заполнять массивы вопросов и ответов сообразишь сам(а).....


 
{RASkov}   (2007-04-16 22:29) [10]

> ShowMessage(Format("Ваш результат: %d правильных ответов из %d", [QResult, Length(Faq)-1]));

ShowMessage(Format("Ваш результат: %d правильных ответов из %d", [QResult, Length(Faq)]));



Страницы: 1 вся ветка

Текущий архив: 2007.05.06;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.014 c
11-1158738217
BMouradov
2006-09-20 11:43
2007.05.06
KOLPrinters подвешивает программу


2-1176837250
BJF.41
2007-04-17 23:14
2007.05.06
SQL Delphi и Foxpro


3-1171435004
DimonS
2007-02-14 09:36
2007.05.06
Обновление БД Access


15-1176028307
Piroxyline
2007-04-08 14:31
2007.05.06
PHP и переменные


2-1176732810
mahab
2007-04-16 18:13
2007.05.06
Timage