|
#1
|
|||
|
|||
Тест-соответствие
Вот состряпал такой тестик http://depositfiles.com/files/61uc3ah6u, спасибо dr. F.I.N. и AleD.
Но вот есть 2 загвоздки: -в форме тестирования(Unit3) не знаю как сделать так, чтобы кнопки (т.е. соответствия) менялись местами(желательно рандомно)? -как сделать так чтобы при выходе все параметры сохранялись(т.е, например, изменил я через форму вопросы и ответы, а после перезахода они снова становятся такими, как до изменения)? -соответствия(они же кнопки в Unit3) по двойному клику исчезают, т.к. их Теги равны самому себе и т.д., кае убрать это исчезновени по даблклику? Люди, помогите пожалуйста. Заранее спасибо! |
#2
|
||||
|
||||
Цитата:
Вот процедура: Подаешь ей координату Y, с которой начинают располагаться объекты (координата X не меняется), подаешь отступ (offset) - расстояние между координатами Y двух соседних объектов, и список (TList) наполненный объектами, которые необходимо рандомно раскидать по вертикали. Не забудь указать в файе .DPR RandomIze. Написано на коленке, но работь должно. Код:
procedure ShowRandom(StartTop, Offset: Integer; ObjList: TList); var x, i: Integer; tempList: TList; begin if ObjList.Count = 0 then Exit; tempList := TList.Create; tempList.Assign(ObjList); x := StartTop; while tempList.Count > 0 do begin i := Random(tempList.Count); TControl(tempList.Items[i]).Top := x; Inc(x, Offset); tempList.Delete(i); end; tempList.Free; end; |
#3
|
||||
|
||||
Цитата:
Вариантов уйма: 1) БД 2) INI-файл 3) Текстовый файл 4) Свой формат файла 5) 2+3+4 + Шифрация |
#4
|
||||
|
||||
Цитата:
Код:
procedure TF_Test.Button1Click(Sender: TObject); begin if SecondClick then begin if (LastButton.Tag = TButton(Sender).Tag) and (LastButton <> TButton(Sender)) then begin LastButton.Hide; TButton(Sender).Hide; Inc(c); Inc(r); If r=1 then BitBtn1.Visible:=true; end else begin Inc(e); ShowMessage('Не верно'); str(e,et); label1.caption:=et; end; SecondClick := false; end else begin LastButton := TButton(Sender); SecondClick := true; end; Кстати, я об этом предупреждал Цитата:
Последний раз редактировалось dr. F.I.N., 04.06.2010 в 08:18. |
#5
|
|||
|
|||
Большое спасибо!
Но вот в первом коде выдаёт ошибку "Undeclared identifier Assign" чем обозначить Assign? или я что-то не правильно делаю? |
#6
|
||||
|
||||
|
#7
|
|||
|
|||
Цитата:
переустановил Дельфи. Вот вроде теперь ошибку не выдаёт, но не работает. Либо я опять делаю что-то не верно... |
#8
|
||||
|
||||
Код:
object Form1: TForm1 Left = 192 Top = 107 Width = 360 Height = 191 Caption = 'Form1' Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'MS Sans Serif' Font.Style = [] OldCreateOrder = False PixelsPerInch = 96 TextHeight = 13 object Button1: TButton Left = 80 Top = 24 Width = 75 Height = 25 Caption = 'Button1' TabOrder = 0 end object Button2: TButton Left = 64 Top = 56 Width = 75 Height = 25 Caption = 'Button2' TabOrder = 1 end object Button3: TButton Left = 48 Top = 88 Width = 75 Height = 25 Caption = 'Button3' TabOrder = 2 end object Button4: TButton Left = 32 Top = 120 Width = 75 Height = 25 Caption = 'Button4' TabOrder = 3 end object Button5: TButton Left = 208 Top = 120 Width = 123 Height = 25 Caption = 'Зарандомить :)' TabOrder = 4 OnClick = Button5Click end end Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; Button5: TButton; procedure Button5Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure ShowRandom(StartTop, Offset: Integer; ObjList: TList); var x, i: Integer; tempList: TList; begin if ObjList.Count = 0 then Exit; tempList := TList.Create; tempList.Assign(ObjList); x := StartTop; while tempList.Count > 0 do begin i := Random(tempList.Count); TControl(tempList.Items[i]).Top := x; Inc(x, Offset); tempList.Delete(i); end; tempList.Free; end; procedure TForm1.Button5Click(Sender: TObject); var Lst: TList; begin Lst := TList.Create; Lst.Add(Button1); Lst.Add(Button2); Lst.Add(Button3); Lst.Add(Button4); ShowRandom(24, 32, Lst); Lst.Clear; Lst.Free; end; end. |
#9
|
|||
|
|||
ага. спасибо! разобрался я, как эта штука работает. а она только по Х координатам умеет? |
#10
|
||||
|
||||
Ну как бы всмотрись в код внимательно Не по X, а по Y. А переделать под свои нужды - дело минутное. Ты же спросил как рандомно раскидать, я рандомно раскидал Конретики же не было как надо
Код:
procedure ShowRandom(StartTop, StartLeft, OffsetY, OffsetX: Integer; ObjList: TList); var x,y, i: Integer; tempList: TList; begin if ObjList.Count = 0 then Exit; tempList := TList.Create; tempList.Assign(ObjList); x := StartLeft; y := StartTop; while tempList.Count > 0 do begin i := Random(tempList.Count); TControl(tempList.Items[i]).Left := x; TControl(tempList.Items[i]).Top := y; Inc(x, OffsetX); Inc(y, OffsetY); tempList.Delete(i); end; tempList.Free; end; Теперь и по х и по y раскидывает. Последний раз редактировалось dr. F.I.N., 05.06.2010 в 13:37. |
#11
|
|||
|
|||
Цитата:
отоночё) ну, спасибо огромное! прям выручили школоло) спасибо ещё раз) |