![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как сделать MDIChild окно активным? [D7, WinME, WinXP]
Дмитрий Попов © (2003-01-21 21:45:00)Вопрос в следующем:
Я изучаю делфи недавно, потому прошу не ругать за глупый вопрос.
Хочу сделать возможность переключения между MDI-окнами, по нажатию соответствующей кнопки ToolController"а.
При создании нового окна, у меня создается и соответствующая вкладка в тулбаре. Вопрос, наверное банален, но уже неделю мучаю хелп, интернет и литературу, но не могу найти на него ответ:
Как мне сделать MDI окно активным, кроме стандартных (щелчок из windowmenu, или самому окну) способов?
Какие есть для этого программные способы?
Пытался записывать в objectList - нет никаких свойств самого окна.
Пытался фокусировать через MDIChildren[index] - тоже не нашел!
Как же это сделать? Очень прошу мне помоч...
Дмитрий Попов (2003-01-22 18:57:00) [1]Огроменное всем спасибо, но проблему удалось все-таки решить!
> вышеназванный индекс - это не порядок создания, а порядок
> активизации окон.
Я это понял, и потому решил другим способом. Вот, что получилось (работает идеально):
for I:= 0 to MDIChildCount - 1 do
if form1.MDIChildren[I].Caption = page_scrl.Tabs.Strings[page_scrl.TabIndex] then
begin
with MDIChildren[I] do
begin
Show;
if WindowState = wsMinimized then
WindowState:= wsNormal;
end;
Break;
end;
Осталось немного улучшить, и все будет очень даже!
> >>соответствующей кнопки ToolController"а
Конечно-же я ошибся, имелся ввиду TabControl...
smok_er (2003-01-22 10:15:00) [2]>>соответствующей кнопки ToolController"а
Что за компонент такой?
smok_er (2003-01-22 10:02:00) [3]MDIChildren[index] возвращает не форму, созданную по порядку
Пример: вы создали форму1, форму2 и форму3
вышеназванный индекс - это не порядок создания, а порядок активизации окон.
в хелпе об этом написано, сам недавно здесь спрашивал.
Я делаю активным окно методом SHow
Дмитрий Попов (2003-01-22 09:15:00) [4]mrcat...
В смысле?
mrcat (2003-01-22 02:05:00) [5]не помогает - делайте Restore; =))))
Дмитрий Попов (2003-01-22 01:01:00) [6]Не-а...
Попробовал for_t:=Tform3.Create(form1); - результат тот же...
Stager (2003-01-21 23:12:00) [7]У меня несколько другой случай. Создавал я их примерно таким образом:
var
TRKs: array [0..15] of TfmTrk;
....
function CreateMDIChild(N: byte): boolean;
begin
with fmMain do begin
Result:=False;
try
TRKs[fmMain.MDIChildCount]:=TfmTrk.Create(fmMain);
with TRKs[fmMain.MDIChildCount] do begin
{...}
Result:=True;
end;
except
// Error!
end;
end;
end;
Все работало. И работает. :) У меня подозрение на Ваш "Self".
Дмитрий Попов (2003-01-21 22:33:00) [8]Да, естественно, индекс активного окна - не ноль...
Дмитрий Попов (2003-01-21 22:29:00) [9]Хм... А у меня почему-то не работает.
Создаю я окно так:
for_t:=Tform3.Create(self);
for_t.RichEdit1.Lines.Clear;
for_t.RichEdit1.Lines.Add("
Stager (2003-01-21 22:08:00) [10]
> Пытался фокусировать через MDIChildren[index] - тоже не
> нашел!
Ну не знаю... У меня всю жизнь работает вот такая команда:
fmMain.MDIChildren[i].SetFocus;
где fmMain- окно-родитель.