Форум: "Начинающим";
Текущий архив: 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;
только меняете выделную строку? — Это неправильно. Не проще ли хранить верные ответы в отдельном файле? Ведь список вопросов может изменится и соотв порядок ответов тоже. Не говоря уж о количестве вопросов…
← →
{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