Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Динамическая обработка событий меню [D7, Win2k]


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

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


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

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


GuAV   (2004-09-01 23:09:00) [2]


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

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


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


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

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


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

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


jack128   (2004-08-29 22:52:00) [4]

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


GuAV   (2004-08-29 22:49:00) [5]

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

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


jack128   (2004-08-29 22:26:00) [6]

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


jack128   (2004-08-29 22:25:00) [7]

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

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


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

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

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


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


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 20:37:00) [10]

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


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


GuAV   (2004-08-29 20:29:00) [11]


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

???

код покажи


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

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


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

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


GuAV   (2004-08-28 22:23:00) [14]


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

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


TUser   (2004-08-28 22:22:00) [15]

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

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо