Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.01.09;
Скачать: CL | DM;

Вниз

Перемещение между окнами приложения   Найти похожие ветки 

 
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 вся ветка

Текущий архив: 2003.01.09;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.013 c
4-25150
Cosmic
2002-11-21 21:27
2003.01.09
Виснет GetWindowsText...


7-25123
Iogan
2002-10-29 16:10
2003.01.09
Как выдать через модем звуковой файл в телефонную линию


1-24838
n/a.STealth
2002-12-25 15:15
2003.01.09
TNotifyEvent


3-24817
Karbo
2002-12-15 17:26
2003.01.09
SQL : вопрос про COUNT( )


1-24964
mer
2002-12-27 07:17
2003.01.09
разность дат