[Форум] [Помощь] [Поиск] [Выйти] |
Добро пожаловать, ![]() |
|
|
| ||
Есть чужая прога у которой один из пунктов меню недоступен. Надо его включить. Делаю так: procedure TForm1.Button1Click(Sender: TObject); var wnd: HWND; hMen:HMenu; i:integer; begin wnd:=FindWindow(nil,'Form1'); hMen:=GetMenu(wnd); for i:=0 to 10 do begin EnableMenuItem(hMen,GetMenuItemID(hMen,i),MF_BYCOMMAND or MFS_ENABLED); SendMessage(wnd,wm_Command,i,0); end; end; Пункт меню включается, но не срабатывает событие(команда) на этом пункте. Кто сталкивался с подобным, ткните пальцем в функцию? плз.. Мож кто копался в исходниках TMainMenu? Я там совсем заплутал - где точка в которой под NT можно активизировать пункт меню?? ЗЫ: Если дизаблить пункт в рантайме(EnableMenuItem(hMen,GetMenuItemID(hMen,i),MF_GRAY); ), то потом EnableMenuItem(hMen,GetMenuItemID(hMen,i),MF_BYCOMMAND or MFS_ENABLED); функция проходит на ура и событие срабатывает, если же в дизайнтайме, то только подсветка включается :-( |
| ||
не подскажешь, есть ли в дельфи аналог паскалевского KEYPRESSED? |
| ||
Не понял связи :-( FormKeyDown(Sender: TObject; var Key: Word;Shift: TShiftState) if Key = ... then |
| ||
ну извини, совсем не в тему влез. но твое сообщение свежее и ты ответишь на него :) FormKeyDown не пройдет, т.к. нужен выход из цикла. цикл вывода на принтер, грузит комп. нужно по капе выйти... |
| ||
Загоняешь свой цикл в поток (TThread) и вставляешь в него проверку на флаг Terminated потока.. А в обработчике OnKeyDown формы пишешь че-нить типа: MyThread.Terminate; |
| ||
>FormKeyDown не пройдет, т.к. нужен выход из цикла. ДрАтити :-) Какой поток, какие циклы? А Application.ProcessMessages на что? Делаешь Form1.KeyPreview:=true Потом твой цикл. Внутри цикла после незнаю какой процедуры у тебя там вывода на печать строки делаешь Application.ProcessMessages; (это чтобы очередь сообщений прогнать, а там как раз твое сообщение KeyPressed сидит) и в Form1.FormKeyDown(Sender: TObject; var Key: Word;Shift: TShiftState) if Key = ... then Нет проблем.. Людиии, а мне то помогите? Или может я так переформулирую вопрос. На CBuildere или VisualStudio эти функции API работают так как мне надо?? Попробуйте плз... |
| ||
спасибо за ответ, именно так я и сделал. правда сам догодался (почитал некоторую литературу) :))) именно с процесс мессагами всё и делаеца. причем и комп совершенно не виснет! |