Форум: "Основная";
Текущий архив: 2002.02.04;
Скачать: [xml.tar.bz2];
ВнизДинамические объекты Найти похожие ветки
← →
Turalyon (2002-01-15 11:22) [16]ОК.
Вот процедура в которй все варится
procedure TEkzamForm.UpdateAnswer;
var Answ :array [1..2] of array of integer;
CountP, k,i : integer;
SetCif : set of 1..255;
tmpStr : String;
begin
DM.EAnswerQuery.DisableControls;
if DM.EAnswerQuery.State = dsBrowse then
for i := 1 to AnswNum do
begin
if Assigned(ButtonArray[i]) then ButtonArray[i].Free;
ButtonArray[i] := nil;
// ButtonArray[i].Free;
end;
В общем вот весь процесс удаления кнопок, проверка стоит на случай первого токрытия формы, тогда массив еще пустой, ButtonArray - глобальный массив
все что идет дальше - динамичесое построение SQL запроса.
DM.EAnswerQuery.SQL.Clear;
DM.EAnswerQuery.SQL.Add("select * from Answer");
DM.EAnswerQuery.SQL.Add("where A_Quest = " + DM.EQuestQuery.FieldByName("Q_id").AsString);
if Options.CheckBox3.Checked then
begin
SetCif := [];
CountP := 0;
SetLength(Answ[1], DM.EAnswerQuery.RecordCount);
SetLength(Answ[2], DM.EAnswerQuery.RecordCount);
repeat
k := random( length(Answ[1]) + 1);
if(not (k in SetCif))and(k <> 0) then
begin
SetCif:=SetCif +[k];
Answ[2,CountP] := k;
inc(CountP);
end;
until CountP = length(Answ[1]);
for k := 0 to length(Answ[1])-1 do
begin
DM.EAnswerQuery.RecNo := Answ[2,k];
Answ[1,k] := DM.EAnswerQuery.FieldByName("A_id").AsInteger;
end;
DM.EAnswerQuery.Close;
DM.EAnswerQuery.SQL.Clear;
DM.EAnswerQuery.SQL.Add("select * from Answer");
DM.EAnswerQuery.SQL.Add("where A_Quest = " + DM.EQuestQuery.FieldByName("Q_id").AsString);
tmpStr := "and A_id in (";
i:=0;
repeat
tmpStr := tmpStr + inttostr(Answ[1,i])+",";
inc(i);
until i=length(Answ[1])-1;
tmpStr := tmpStr + inttostr(Answ[1,i])+")";
DM.EAnswerQuery.SQL.Add(tmpStr);
end;
DM.EAnswerQuery.Open;
А здесь начинается создание новых кнопочек
AnswNum := DM.EAnswerQuery.RecordCount;
for i := 1 to AnswNum do
begin
ButtonArray[i] := TSpeedButton.Create(Self);
ButtonArray[i].Caption := inttostr(i);
ButtonArray[i].Width := 40;
ButtonArray[i].Height := 25;
ButtonArray[i].Left := 1 + 40*i ;
ButtonArray[i].Top := 18;
ButtonArray[i].Parent := GroupBox2;
ButtonArray[i].OnClick := OnMyButtonClick;
if Options.ComboBox2.ItemIndex = 1 then
begin
Memo1.Lines.Add("");
Memo1.Lines.Add("
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.02.04;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.004 c