Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Подкиньте идейку 
V
    Опции темы
SanLLIer
  Дата 23.1.2010, 20:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 9.7.2008

Репутация: нет
Всего: нет



Приветствую всех!
Собственно сабж. Делаю тестирующую программу, а именно редактор тестов. Выглядит примерно так: в мемо пишется вопрос, в "эдиты' ответы, напротив эдитов чекбоксы. Если отметить чекбокс,то ответ считается правильным. По нажатию на кнопку "добавить вопрос" допрос появляется в TreeView в таком виде:

Вкаком году было то-то?
--1965
--468
--2008
--1999
--1566

По нажатию в TreeView на строку мы снова переходим к редактированию вопроса. И здесь у меня затык... Как привязять чекбоксы? Т.е. когда я нажимаю в TreeView на "Вкаком году было то-то?" я заполняю мемо и едиты, а как чекбоксы? Где хранить значения что этот ответ правильный и как потом это все соединить вместе?  smile 

ЗЫ: если непонятно объяснение - спрашивайте...
Надеюсь на Вашу помощь...
PM MAIL   Вверх
DarkProg
Дата 23.1.2010, 21:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Законченный романтик
***


Профиль
Группа: Завсегдатай
Сообщений: 1784
Регистрация: 11.3.2009
Где: Земля

Репутация: 4
Всего: 19



Ну создай какую-нить структуру, типа
  
Код

type Vopros=record
     SamVopros, Variant1, Variant2,..., VariantN:string;//ну как ты понимаешь я написал это Variant1, Variant2,..., VariantN чтобы показать 
                                                                                   //что если числовариантов всегда фиксировано, то ты просто задаёшь нужное число 
                                                                                  //переменных, ну а если число вариантов неизвестно, то 
                                                                                  //тогда задаёшь их уже массивом
     MassivPravilnixOtvetov:array of Boolean; //ну тут тот же смысл что и в предыдущем, просто если фиксированное число элементов тогда 
                                                                     //укажешь фиксированое число, и просто по индексу присваиваешь true или false
 end;


Работать с такой штукой, надеюсь знаешь как, если нет то напиши, отвечу.


--------------------
"И твоя голова всегда в ответе за то куда сядет твой зад..."

"Я студент - скажите с какого я ВУЗа..."

 smile  smile  smile 
PM MAIL   Вверх
SanLLIer
Дата 23.1.2010, 21:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 9.7.2008

Репутация: нет
Всего: нет



Работать знаю как, но вот как прикрутить к TreeView нет... Какой обработчик? Всмысле как узнать какая строка в "дереве" за какой вопрос отвечает.
PM MAIL   Вверх
kami
Дата 23.1.2010, 21:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

Репутация: 22
Всего: 72



Я бы вообще сделал бы каждый вопрос (в смысле - содержание, ответы, № правильного ответа) - объектом. А к Ttreeitem объекты "прикручиваются" элементарно.

Добавлено через 4 минуты и 55 секунд
То есть:
Код

TQuest=class
private
  FAnswerList:TStringList;
  FQuestion:string;
  FRightIndex:integer;
public
  property Question:string;
  property AnswerCount:integer;
  property Answer[i:integer]:string;
  property RightIndex:integer;
end;

PM MAIL WWW   Вверх
SanLLIer
  Дата 24.1.2010, 18:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 9.7.2008

Репутация: нет
Всего: нет



Решил юзать записи. Вроде все сделал кроме самого главного... smile Как связать TreeView и все эти записи? Т.е. как сделать чтобы каждая строка дерева отвечала за свой вопрос?
PM MAIL   Вверх
kami
Дата 24.1.2010, 21:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

Репутация: 22
Всего: 72



Цитата(SanLLIer @  24.1.2010,  18:49 Найти цитируемый пост)
Решил юзать записи.

Хозяин - барин. Но... объекты сохранять/загружать гораздо удобнее, да и функционал расширять тоже (сугубо имхо).

Код

TQuestion=record
 .....
end;
pQuestion=^TQuestion;
.....

procedure TForm1.AddQuestion;
var
  pQ:pQuestion;
  Node:TTreeNode;
begin
  New(pQ);
  pQ^.Quest:=Memo1.Text;
  ....
  Node:=TreeView1.Add(nil, Memo1.Text);
  Node.Data:=pQ;
end;


Доступ:
Код

procedure TForm1.ShowQuestion;
var
  pQ:pQuestion;
  Node:TTreeNode;
begin
  Node:=TreeView1.Selected;
  if Assigned(Node) then
    begin
      pQ:=pQuestion(Node.Data);
      Memo1.Text:=pQ^.Quest;
      .....
    end;
end;


Самое главное (чтобы не было утечек):

Код

procedure TForm1.TreeView1OnDeletion(Sender: TObject; Node: TTreeNode);
var
  pQ:pQuestion;
begin
  pQ:=pQuestion(Node.Data);
  Dispose(pQ);
end;

PM MAIL WWW   Вверх
SanLLIer
Дата 25.1.2010, 15:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 9.7.2008

Репутация: нет
Всего: нет



Выдает ошибку : Missing operator or semicon, подчеркивая строку new(pQ)
Код

procedure TEditor.AddQuestion;
var
  pQ:   myQuest;
  Node: TTreeNode; 
begin
new(pQ);
pQ^.Quest:=qm.Lines.Text;
Node:=Tree.Add(nil, Memo1.Text);
Node.Data:=pQ;
end;

Код

type
  Quest = record
    quest: string; 
  end;
myQuest=^Quest;

PM MAIL   Вверх
SanLLIer
Дата 25.1.2010, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 9.7.2008

Репутация: нет
Всего: нет



Я в окончательном ступоре... Сделал новый проект, только чтобы потестить как это работает - все норм. Но как только я пишу процедуру в сою прогу, то вылетает ошибка... И вроде ж все правильно делаю smile 

UPD: Все разобрался... Это просто ###! smile  Оказывается у меня на форме была кнопка new(!)  smile  и когда я писал new(...), компиль думал, что я к ней обращаюсь...

Это сообщение отредактировал(а) SanLLIer - 25.1.2010, 17:48
PM MAIL   Вверх
kami
Дата 26.1.2010, 00:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

Репутация: 22
Всего: 72



Цитата(SanLLIer @  25.1.2010,  15:24 Найти цитируемый пост)
Оказывается у меня на форме была кнопка new(!) 

Вот от таких случаев безумно помогает привычка давать префиксы используемым компонентам. (для TButton, к примеру, btnNew).

Upd: Поставь, пожалуйста, галочку, что вопрос решен.

Это сообщение отредактировал(а) kami - 26.1.2010, 00:36
PM MAIL WWW   Вверх
SanLLIer
Дата 2.2.2010, 19:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 9.7.2008

Репутация: нет
Всего: нет



Сенк
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0517 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.