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

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

Не работает Tab в форме [D2005]


Alex_Y ©   (2009-03-26 12:24:00) 

Привет всем.
Столкнулся со следующим:
В dll создаю форму

function ShowInfoDialog(const App : HWND) : HWND; stdCall;
begin
 Result := 0;
 Application.Handle := App;
 with TfmInfo.Create(Application) do
 try
   Result := Handle;
   Show;
 except on E: Exception do begin
   MessageBox(Application.Handle, pChar(E.Message), MSG_ERROR, MB_OK);
   Free;    
 end; end;
end;

На форме несколько едитов.
Вызываю из другого приложения. Все нормально открывается, работает как надо, но не работают клавиши Tab, Esc и пр., только бип звучит что типа нажатие недоступно.
Хотя если вместо Show сделать ShowModal, то все прекрасно работает.
Мож кто сталкивался? Где я чего мог пропустить, а то голова уже не варит под вечер.

Заранее спасибо.


Alex_Y   (2009-03-26 14:30:00) [1]

понятно, будем пробовать, спасибо за подсказку


Сергей М.   (2009-03-26 14:22:00) [2]

см. SetWindowLong


Alex_Y   (2009-03-26 14:21:00) [3]

а как это сделать, если не секрет?


Сергей М.   (2009-03-26 14:13:00) [4]

Подменять оконную ф-цию переданного окна на свою.
Это и будет ректальным способом)


Alex_Y   (2009-03-26 14:03:00) [5]

да, так и есть, я это прекрасно понимаю, только чего делать-то?


Сергей М.   (2009-03-26 13:57:00) [6]


> в мою lkk передаю хэндл этого приложения


У приложения нетхэндла.
Требуемый в твоей lkk хэндл есть хэндл окна. И не просто какого-то там окна. а некоего "главного окна".


Alex_Y   (2009-03-26 13:38:00) [7]

идея в чем - есть сторонне приложение, в нем свой макроязык, на этом языке из этого приложения вызываю функию показа моего окна из моей длл.
в мою lkk передаю хэндл этого приложения


Сергей М.   (2009-03-26 13:37:00) [8]


> этого приложения


Чего "этого приложения" ?


Alex_Y   (2009-03-26 13:36:00) [9]

этого приложения


Сергей М.   (2009-03-26 13:35:00) [10]


> я оттуда могу даже интерфейс передать


Не понял, откуда куда "можешь" и что за интерфейс ?


Сергей М.   (2009-03-26 13:33:00) [11]


> приходит HWND этого приложения


Приложения может не создавать ни единого окна, равно как может создавать множество окон, да еще и в разных кодовых потоках.

Так я и задаю вопрос : хэндл какогоиз окон тебе передает это самое "конкретное левое приложение" ? Или ему фиолетово какой передавать ? Или тебе фиолетово какой ожидать ?


Alex_Y   (2009-03-26 13:31:00) [12]

в принципе я оттуда могу даже интерфейс передать (что и делаю) но для данной проблемы это не поможет


Alex_Y   (2009-03-26 13:28:00) [13]

Сергей М.
функция вызывается из конкретного приложения, приходит HWND этого приложения. приложение левое, со своим метаязыком из которого и вызываю


clickmaker   (2009-03-26 13:21:00) [14]

> Хотя если вместо Show сделать ShowModal, то все прекрасно
> работает.

ShowModal запускает отдельный цикл обработки сообщений, независимый от основного. Поэтому и работает.


Сергей М.   (2009-03-26 13:19:00) [15]

Не надо решать задачу через задний проход.

Вопрос тебе на засыпку: хендл какого окна ты ожидаешь получать параметром в свой ф-ции, если она будет вызвана, например, из приложения, разработанного в среде Visual Suahili ?


Alex_Y   (2009-03-26 12:56:00) [16]

например?


Сергей М.   (2009-03-26 12:45:00) [17]

Решаемо, но искл-но ректальным способом


Alex_Y   (2009-03-26 12:40:00) [18]

а это решаемо?


Сергей М.   (2009-03-26 12:37:00) [19]


> Где я чего мог пропустить


Чужое приложение попросту знать ничего не знает о том как обрабатывать WM_TAB в твоейформе


Наверх

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