Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.09.19;
Скачать: [xml.tar.bz2];

Вниз

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

 
Агент Х-СОМ ©   (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.053 c
3-1092320934
buka
2004-08-12 18:28
2004.09.19
Принцип срзданиия текстовой базы


1-1094222899
MetalFan
2004-09-03 18:48
2004.09.19
снова про приведение типов)


14-1093546039
ferr
2004-08-26 22:47
2004.09.19
Волейбол


14-1093338584
Piter
2004-08-24 13:09
2004.09.19
Плагин к Miranda - popup


1-1093890542
Arcady
2004-08-30 22:29
2004.09.19
как справиться с генератором тестов





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский