Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.05.06;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.041 c
2-1176795034
Angelka
2007-04-17 11:30
2007.05.06
Работа с Timer


15-1176086186
Slider007
2007-04-09 06:36
2007.05.06
С днем рождения ! 7 апреля


1-1173694564
mavrtuva
2007-03-12 13:16
2007.05.06
Quantum Grid


3-1171531971
Empleado
2007-02-15 12:32
2007.05.06
Концептуальный вопрос по архитектуре БД "Каталог"


2-1176558179
Romm
2007-04-14 17:42
2007.05.06
help meee





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский