Форум: "WinAPI";
Текущий архив: 2003.01.09;
Скачать: [xml.tar.bz2];
ВнизПеремещение между окнами приложения Найти похожие ветки
← →
3asys (2002-11-19 17:10) [0]Есть главная форма приложения (не MDI). В процессе работы создается еще несколько (произвольное количество) форм. Имена создаваемых форм записываются в StringList. Как дать пользователю возможность перемещаться с одного окна на другое в соответствии с их очередностью в StringList, по комбинации горячих клавиш (Ctrl-F1).
Использование SetActiveWindow и SetFocus эффекта не дают. Может быть кто-нибудь приведет маленький отрывок кода, если не трудно.
С Уважением, 3asys
P.S. Исходников моих перед глазами нет, поэтому не привожу, как я пытался это делать.
← →
3asys (2002-11-19 17:15) [1]P.S. Я определял текущее верхнее окно (GetForegroundWindow), а затем находил следующее после него в списке StringList и пытался сделать его активным (SetFocus, SetActiveWindow). Но результата не получил. Следующее окно активным не становится.
Как решить эту проблему? Любым, пусть другим способом?
С Уважением, 3asys
← →
Игорь Шевченко (2002-11-19 17:19) [2]BringWindowToTop ?
The BringWindowToTop function brings the specified window to the top of the Z order. If the window is a top-level window, it is activated. If the window is a child window, the top-level parent window associated with the child window is activated.
С уважением,
← →
Marcus (2002-11-19 17:20) [3]попробуй SetForegroundWindow
← →
Александр Павлов (2002-11-20 13:20) [4]Вот пример, только что состряпаный, думаю, то, что нужно:
procedure TForm1.Action1Execute(Sender: TObject);
var
tgFirst, tgLast,
tgCurr, i : Integer;
begin
tgFirst := 2; // Первая форма в порядке перемещения
tgLast := 4; // Последняя форма в порядке перемещения
tgCurr := Screen.ActiveForm.Tag;
if tgCurr < tgFirst then tgCurr := tgFirst
else if tgCurr < tgLast then Inc(tgCurr)
else tgCurr := tgFirst;
for i := 0 to Screen.FormCount - 1 do
if Screen.Forms[i].Tag = tgCurr then
begin
Screen.Forms[i].Show;
Break;
end;
end;
Принцип перемещения - по кругу, при достижении последнего окна, показывается первое.
В примере используется св-во Tag форм.
При создании новых форм, св-во Tag необходимо инициализировать инкриментом, например, от единицы и далее.
Строки выделенные курсивом можно вынести за пределы процедуры.
В данном случае приложение с 4мя формами (главная + 3дочерних), св-во Tag первой -1, второй -2 и т.д.
Формы показываются в порядке 2-3-4.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2003.01.09;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.007 c