Текущий архив: 2010.01.24;
Скачать: CL | DM;
Вниз
Неактивная форма как Виртуальная клавиатура Windows Найти похожие ветки
← →
v1keeee (2009-02-14 01:01) [0]Уважаемые! Есть проблемка: пишу для себя программку - тулбар для работы с текстовыми данными, необходимо чтобы форма не получала фокус ввода так, как это делает "Виртуальная клавиатура" Windows. Т.е чтобы при нажатии кнопки на форме активным остовалось окно приграммы с которой работаю. Нашел решение проблемы так (привожу пример с окном "Блокнота"):
procedure TForm1.Button1Click(Sender: TObject);
begin
//делаю активным окно "блокнота"
SetForeGroundWindow(findwindow(nil,"Безымянный - Блокнот"));
//посылаю ему сообщение о нажатии клавишы "Enter"
postmessage(findwindowEX(findwindow("Notepad","Безымянный - Блокнот"),findwindow("edit",nil),"Edit",nil),WM_KEYUP,13,0);
end;
в таком виде все работает, НО визуально видно что сперва активным становится окно моей формы, а потом уже "Блокнота".
Делал по другому:
//по событию таймера с интервалом 25 мсек.
//постоянно держу активным окошко "Блокнота"
SetForeGroundWindow(findwindow(nil,"Безымянный - Блокнот"));
и все равно эффект такой же как в первом примере :(.
Хотелось бы реализовать как в "Виртуальной клавиатуре" Windows
Кто что думает по этому поводу?
← →
Eraser © (2009-02-14 01:48) [1]> [0] v1keeee (14.02.09 01:01)
нужно добавить окну стиль WS_EX_NOACTIVATE.
удобнее всего это сделать в CreateParams после Inherited примерно так
Params.ExStyle := Params.ExStyle or WS_EX_NOACTIVATE;
← →
Игорь © (2009-02-14 09:33) [2]Я вообще делаю так
var
Draging: Boolean;
X0, Y0: integer;
FormCreate
SetWindowLong(Handle, GWL_EXSTYLE, WS_DISABLED);
FormMouseDown
Draging := True;
X0 := X;
Y0 := Y;
FormMouseMove
if Draging = True then
begin
Left := Left + X - X0;
Top := Top + Y - Y0;
end;
FormMouseUp
Draging := False;
Ну и FormResize ручками тоже делаю
← →
Игорь © (2009-02-14 09:35) [3]У меня у формы BorderStyle = bsNone и заголовок окна рисую сам, а так то же надо что то с этим делать
← →
v1keeee (2009-02-14 10:06) [4]Уважаемый Игорь огромное спасибо за совет! вот второй способ применил и это именно то что мне нада! :)
← →
Игорь © (2009-02-14 10:22) [5]
> v1keeee (14.02.09 10:06) [4]
Надеюсь ты понимаешь что с этим возникнет много проблемм, например компоненты на форме не будут получать фокус ввода клавиатуры, scrollbar бары не будут реагировать и т.д.
← →
v1keeee (2009-02-14 10:34) [6]А мне и не нужен фокус ввода кроме кнопок на форме ничего нет :).
Чесно скажу вчера сидел на 20 страницах гугля пересмотрел каждую ссылку по запросам: "Неактивное окно в Delphi" и "форма не получает фокус ввода как виртуальная клавиатура Widows" так ничего толкового и ненарыл :( а про стили окна как то даже и не подумал (ибо не знал). Поэтому еще раз благодарю :).
Страницы: 1 вся ветка
Текущий архив: 2010.01.24;
Скачать: CL | DM;
Память: 0.48 MB
Время: 0.007 c