Samo da napomenem da se radi o aplikaciji vezanoj za izradu elektronskih testova.
Evo kako izgleda i kod:
Code:
unit Main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TfrmTest = class(TForm)
btnDone: TButton;
btnExit: TButton;
SkinData1: TSkinData;
procedure btnExitClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormMouseWheel(Sender: TObject; Shift: TShiftState;
WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
procedure FormDestroy(Sender: TObject);
procedure btnDoneClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
lstRadio: TList;
procedure LoadDataFromFile(FileName: String);
end;
var
frmTest: TfrmTest;
implementation
{$R *.dfm}
procedure TfrmTest.btnExitClick(Sender: TObject);
begin
Application.Terminate;
end;
procedure TfrmTest.LoadDataFromFile(FileName: String);
var
lstStr, lstData: TStringList;
grpRadio: TRadioGroup;
I, J, grpTop: Integer;
begin
lstStr := TStringList.Create;
lstStr.LoadFromFile(FileName);
lstData := TStringList.Create;
grpTop := 8;
for I := 0 to lstStr.Count - 1 do
begin
lstData.CommaText := lstStr[I];
grpRadio := TRadioGroup.Create(Self);
grpRadio.Parent := Self;
grpRadio.Anchors := grpRadio.Anchors + [akRight];
grpRadio.Caption := lstData.Values['Pitanje'];
lstRadio.Add(grpRadio);
J := 0;
repeat
grpRadio.Items.Add(lstData.Values['Odgovor' + IntToStr(J)]);
Inc(J);
until lstData.Values['Odgovor' + IntToStr(J)] = '';
grpRadio.Tag := StrToIntDef(lstData.Values['Tacno'], 0);
grpRadio.Left := 8;
grpRadio.Top := grpTop;
grpRadio.Width := ClientWidth - 16;
grpRadio.Height := 25 + 16 * J;
grpRadio.ItemIndex := 0;
grpTop := grpTop + grpRadio.Height + 4;
end;
btnDone.Top := grpTop + 4;
btnExit.Top := btnDone.Top;
VertScrollBar.Range := VertScrollBar.Range + 8;
lstData.Free;
lstStr.Free;
end;
procedure TfrmTest.FormCreate(Sender: TObject);
begin
lstRadio := TList.Create;
LoadDataFromFile('Pitanja.dat');
ActiveControl := TRadioGroup(lstRadio[0]);
end;
procedure TfrmTest.FormMouseWheel(Sender: TObject; Shift: TShiftState;
WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
begin
VertScrollBar.Position := VertScrollBar.Position - (WheelDelta div 10);
end;
procedure TfrmTest.FormDestroy(Sender: TObject);
begin
lstRadio.Free;
end;
procedure TfrmTest.btnDoneClick(Sender: TObject);
var
I, R: Integer;
begin
R := 0;
for I := 0 to lstRadio.Count - 1 do
with TRadioGroup(lstRadio[I]) do
if Tag = ItemIndex then
Inc(R);
ShowMessage(Format('Od %d pitanja odgovorili ste tacno na %d (%.2f%%)',
[lstRadio.Count, R, R / lstRadio.Count * 100]));
end;
end.
Pa ako je neko zainteresovan nek javi...
P.S. Srki_82 je pisao ovaj kod kao odgovor na jednu od ranijih mojih tema na cemu sam mu veoma zahvalan...
[Ovu poruku je menjao VladaLe dana 28.04.2006. u 16:55 GMT+1]