|
Delphi: Тест для Большого Дяди на все 100! Лозовский Александр Xakep, номер #055, стр. 055-066-3 Больше никакие поля мы добавлять не будем, поэтому щелкни правой кнопкой на ClientDataSet1 и выбери Create DataSet. Сделал? Молодец, теперь еще раз то же самое, только теперь менюшка будет ощутимо больше, и в ней появится пункт "Save To MyBase XML Table". Щелкни на него. В появившемся диалоговом окне введи имя файла, например, "xaktest", и жми "сохранить". Все, теперь именно он и будет содержать нашу табличку. Она практически готова, осталось только дать русские заголовки для полей (если, конечно, тебе не нравятся английские) и сбацать соответствующий user interface для добавления вопросов. Дважды кликни на ClientDataSet1, выдели появившееся окошко и нажми Ctrl-F. Таким образом ты добавляешь все поля в редактор (эта комбинация - эквивалент пункта popup-menu под названием "add all fields"). Теперь можешь выделить любое поле и устремить свой пристальный взор на object inspector. Там есть очень много интересных свойств. Например, свойство visible для ключевого поля можно установить в false, а DisplayLabel как раз и определяет заголовок поля, который будет показан юзеру (имена, записанные в FieldDefs, нисколько при этом не страдают). Я дал такие: "Вопросы", "Ответы", "Правильные ответы". А что, незатейливо, зато понятно. Ключевому полю я вообще ничего не дал, да ему это и не надо. Часть 1 - Редактор вопросов Скажу тебе по секрету, у меня всегда получаются простенькие интерфейсы. Поэтому юзеры меня недолюбливают, я злюсь и делаю проги с ключа {$APPTYPE CONSOLE} :). Ах, я же обещал консольную прогу... ладно, все еще впереди, а пока открой закладку Data Controls, достань оттуда компонент DBGrid и кинь его на форму. Ставь ему свойство DataSource в DataSource1, чтобы связать его (или ее?) с нашей таблицей, а align в alTop, пусть побудет сверху. Теперь клади 2 DBEdit и 1 DBMemo из той же закладки. Все они должны быть связаны с таблицей свойством DataSource и с отдельными ее полями с помощью DataField. Логично предположить, что у первого DBEdit’а оно будет Quest, у второго - CorrectAnswer, а у DBMemo - Answers. Внесем ясность, а именно - 3 label, которые будут показывать, что и куда ВВОДИТЬ. Располагай их над соответствующими полями и давай caption’ы: label1 - "Вводи вопрос теста:" label2 - "Вводи список ответов:" label3 - "Вводи правильные ответы (без пробела)" Ну и под занавес - 2 кнопочки с caption’ами: "Создать новую запись" и "Зафиксировать". В OnClick первой пиши: ClientDataSet1.Insert; А для второй он будет побольше: ClientDataSet1.Post; ClientDataSet1.SaveToFile('xaktest.xml'); В принципе, вторую строчку можно забить и в OnDestroy для формы, так намного удобнее, но с некоторого времени я побаиваюсь колебаний напряжения в сети и ненавижу терять данные. Да, и еще одна маленькая деталь-строка: ClientDataSet1.LoadFromFile('xaktest.xml'); Она записана в обработчик OnCreate для формы и позволяет данным загружаться автоматически при запуске проги. В итоге должно получиться что-то вроде этого: |