|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
27.04.2007, 22:30 | #1 |
Регистрация: 26.11.2006
Сообщений: 6
|
Как автоматически создать процедуры для множества подменю компонента TMainMenu
В общем столкнулся с такой проблемой. Делаю тест, в нём есть меню, сделано с помощью объекта TMainMenu. Там есть 5 пунктов, в которых существует по 20 подпунктов (названия тестов), мне надо как-то сделать так, чтобы не открывать каждую процедуру (не создавать по одной), а сделать это как-нибудь в цикле (как-нибудь программно), т.к. там будут выполняться практически одни и те же действия. Спасибо всем кто постарается помочь.
|
28.04.2007, 01:53 | #2 |
Баламучу слегка...
Участник клуба
Регистрация: 01.11.2006
Сообщений: 1,585
|
Выделяешь все пункты меню с помощью Ctrl и в инспекторе объектов кликаешь по onClick. Таким образом ты создашь один, общий обработчик для всех пунктов меню. Пишем код:
Код:
|
28.04.2007, 02:13 | #3 |
Форумчанин
Регистрация: 16.04.2007
Сообщений: 298
|
Я бы предложил чуть поконкретней:
Каждому меню проставить свой Tag, дальше как посоветовал Баламут создать единый обработчик и в нем написать: procedure TForm1.N2Click(Sender: TObject); begin case (Sender as TMenuItem).Tag of 0: <пишешь что надо> end; end;
Не надо ничего усложнять. Все достаточно тривиально.
|
28.04.2007, 04:42 | #4 |
Баламучу слегка...
Участник клуба
Регистрация: 01.11.2006
Сообщений: 1,585
|
А по мне так использовать Tag излишне. MenuIndex и так однозначно идентифицирует пункт меню. А потому конструкция типа
case (sender as TMenuItem).MenuIndex of 0: ... 1: ... end; вполне имеет право на существование. |
28.04.2007, 12:13 | #5 |
Регистрация: 26.11.2006
Сообщений: 6
|
Есть проблемка. В общем у меня в меню есть пункты с названиями 1201, 2105, 1111 и т.д. В них есть 20 пунктов с названиями тестов. Мне надо, чтобы выполнилось действие не тогда, когда я нажимаю на 1201, 2105 и т.д., а чтобы оно выполнилось, когда я нажму на название теста. У меня не получилось сделать так =\ Можете, помогите.
|
28.04.2007, 12:19 | #6 |
Регистрация: 26.11.2006
Сообщений: 6
|
Всё я сделал, спасибо всем за помощь =)
У меня есть только ещё один вопрос, как сделать защиту для текстового файла? У меня там находятся вопросы, ответы, номер правильного ответа и т.д. Как можно защитить? |
28.04.2007, 14:16 | #7 |
Форумчанин
Регистрация: 26.04.2007
Сообщений: 143
|
Как можно защищать
А защищать можно несколькими способам, я к примеру предпочитаю шифрование, так называемое криптография... берешь тектовый файл, считываешь его побайтно, и начиная с первого байта шифруешь т.е. производишь какую либо операцию :
var b: byte; key : string; ... key:='test'; ... read(fn, xb) // считывание файла побайтно //запускаешь цикл до последнего байта и в теле цикла пишешь ... xb:= xb XOR ord(key[i]); // сама операция шифровани Ну конечно это самый простой метод, но дети наврядли догадаются (если они конечно не программеры со стажем)...
Свободу клавиатурным самураям...
|
28.04.2007, 18:19 | #8 |
Регистрация: 26.11.2006
Сообщений: 6
|
Мне как раз-таки и нужен простой метод, но шифрование я думаю не подойдёт, т.к. необходимо будет изменять данные.. Надо рассчитывать на то, что это (изменять данные) будет делать не очень хорошо знающий компьютер человек (учитель).
|
02.05.2007, 01:08 | #9 |
Баламучу слегка...
Участник клуба
Регистрация: 01.11.2006
Сообщений: 1,585
|
Ну так сделай интерфейс для изменения текстов, доступ в который предоставляется по паролю. А защитить чем-то иным, кроме шифрования действительно проблематично.
|
13.01.2011, 18:02 | #10 |
Новичок
Джуниор
Регистрация: 21.11.2010
Сообщений: 2
|
У меня аналогичное задание почти. Раз ты сделал, то наверное можешь помочь.
У меня вопрос как ты сделал так, чтобы при нажатии на пункт меню отображался нужный вопрос вариантами из текстового файла? |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как можно изменить цвет полосы меню компонента TMainmenu на форме? | SkAndrew | Общие вопросы Delphi | 6 | 11.08.2008 17:35 |
Поиск динамически созданного компонента | GAGARIN-NEW | Общие вопросы Delphi | 2 | 30.01.2008 17:21 |
Поиск динамически созданного компонента | GAGARIN-NEW | Компоненты Delphi | 2 | 16.12.2007 17:07 |
динамически создать подключение через ADO | А. Долматов | БД в Delphi | 8 | 16.10.2007 20:08 |
TMainMenu и его подменю | Albenous | Компоненты Delphi | 3 | 06.02.2007 07:03 |