Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.09.19;
Скачать: CL | DM;

Вниз

Динамическая обработка событий меню   Найти похожие ветки 

 
Агент Х-СОМ ©   (2004-08-28 21:41) [0]

Такая проблема: есть меню, в которое в процессе разработки проги добавляются пункты. Проблема в том, что надо динамически обработать событие с считаыванием текста меню (извлечение CD). Все бы ничего, можно подставить событие пункту меню, но оно не сочтет надписи меню. Не подскажет ли кто, как это сделать?


 
TUser ©   (2004-08-28 22:22) [1]

Обработчик добавляется с помощью :=, т.к. это - просто обычное св-во типа TNotifyEvent или еще-какого-нибудь. При счиывавании Caption"а надо учитывать, что там есть символы "&", если они мешаются - убирать StringReplace"ом.

PS. Честно говоря, вопрос понял не очень.


 
GuAV ©   (2004-08-28 22:23) [2]


> но оно не сочтет надписи меню.

может не считать, а может и считать, если сделаешь чтоб считало.
TMenuItem(Sender) или (Sender as TMenuItem)


 
Агент Х-СОМ ©   (2004-08-29 17:25) [3]

Большое спасибо, попробую


 
Агент Х-СОМ ©   (2004-08-29 19:17) [4]

Обработчик добавляется только типа TnotifyEvent, а проблема в том, что так он не может считать Sender, т.е. Свойства меню остаются потерянными. Вопрос в том, как их сохоанить?


 
GuAV ©   (2004-08-29 20:29) [5]


> TnotifyEvent, а проблема в том, что так он не может считать
> Sender,

???

код покажи


 
jack128 ©   (2004-08-29 20:37) [6]

Агент Х-СОМ ©   (29.08.04 19:17) [4]
а проблема в том, что так он не может считать Sender, т.е. Свойства меню остаются потерянными


всмысле? TMenuItem(Sender) ?


 
Агент Х-СОМ ©   (2004-08-29 21:35) [7]


cdLetter:= "#:";
 for i:= 0 to 26 do
 begin
   cdLetter[1]:= Char(Ord("A") + i);
   if (GetLogicalDrives and (1 shl i)) > 0 then begin
     if GetDriveType(Pchar(cdLetter)) = DRIVE_CDROM then begin
       mnuItmE:= TMenuItem.Create(nil);
       mnuItmE.Caption:= cdLetter;
       mnuItmE.OnClick:= {Собственно, здесь и проблема, в этой строке}

       mnuItmI:= TMenuItem.Create(nil);
       mnuItmI.Caption:= cdLetter;
       //mnuItmI.OnClick:= //CloseMenuCD(cdLetter);
       mnuEject.Add(mnuItmE);
       mnuInsert.Add(mnuItmI);
     end;
   end;


 
jack128 ©   (2004-08-29 22:24) [8]

Агент Х-СОМ ©   (29.08.04 21:35) [7]
mnuItmE.OnClick:= {Собственно, здесь и проблема, в этой строке}

Да что за проблема то?? mnuItmE.OnClick:= MyMenuItemClickHandler;


 
jack128 ©   (2004-08-29 22:25) [9]

где MyMenuItemClickHandler описываешь как

TForm1 = class(TForm)
..
public
 procedure MyMenuItemClickHandler(Sender: TObject);
end;


 
jack128 ©   (2004-08-29 22:26) [10]

и вообще на королевстве дельфи есть занимательная статья "Жизнь и смерть в Run - time"  Думаю тебе туда.


 
GuAV ©   (2004-08-29 22:49) [11]

Агент Х-СОМ ©   (29.08.04 21:35) [7]

Выежжалку/заежжалку КД пишешь? Небось и с иконкой в трее?
Знаешь эта уже поднадоевшая тема.


 
jack128 ©   (2004-08-29 22:52) [12]

GuAV ©   (29.08.04 22:49) [11]
а чего поднадоело то?  На каждый выпущенный CD-ROM по отдельной программе ;-)


 
Агент Х-СОМ ©   (2004-09-01 17:26) [13]

Все бы ничего, но дело в том, что кэпшн виртуального меню меняется до 26 раз, и надо их все запомнить, а сохраняется только последний. Массив не подойдет т.к. будет неизвестен7 тндекс. А насчет КД - так это лишь малая часть проги.


 
GuAV ©   (2004-09-01 23:09) [14]


>  кэпшн виртуального меню

у меню нет кэпшн, кэпшн есть у пунктов меню
виртуальным может быть LV, меню - afair нет, и незачем.
И ваще не понял, зачем
> надо их все запомнить


советую ещё раз смотреть
jack128 ©   (29.08.04 20:37) [6]


> А насчет КД - так это лишь малая часть проги.

Колись, что там ещё есть :)


 
Агент Х-СОМ ©   (2004-09-02 19:15) [15]

Извините, пожалуйста! Все получилось, вся ошибка состояла в моей гребаной невнимательности, виноват! Что еще? Много чего: пока реализовано все, кроме скорости печати (там глюки). Вообще, прога называется Таймер & будильник, но от него там мало осталось. Помимо таймера, будилы, есть секундомер, ASCII-перевод, координаты мыши, плавающее окошко, перезагрузка и прочее в этом стиле, скорость печати, настройки, поддержка WinXP, мигание лампочками, монитором, и прочее, и прочее. Возможно, я перешлю релиз по написанию, могу показать скриншоты.



Страницы: 1 вся ветка

Текущий архив: 2004.09.19;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.059 c
6-1089817437
Vova
2004-07-14 19:03
2004.09.19
подскажите как запустит или остоновит сервис


8-1088135797
OFF
2004-06-25 07:56
2004.09.19
Альтернатива TCanvas и указателям?


14-1093527977
Анонимщик
2004-08-26 17:46
2004.09.19
Красное перечеркнутое имя. Удалено модератором.


1-1093831817
Kolt
2004-08-30 06:10
2004.09.19
Компоненты + Библиотека


14-1094137291
=>Alex<=
2004-09-02 19:01
2004.09.19
Рассылка