Форум: "Основная";
Текущий архив: 2003.01.30;
Скачать: [xml.tar.bz2];
ВнизКак сделать MDIChild окно активным? Найти похожие ветки
← →
Дмитрий Попов (2003-01-21 21:45) [0]Вопрос в следующем:
Я изучаю делфи недавно, потому прошу не ругать за глупый вопрос.
Хочу сделать возможность переключения между MDI-окнами, по нажатию соответствующей кнопки ToolController"а.
При создании нового окна, у меня создается и соответствующая вкладка в тулбаре. Вопрос, наверное банален, но уже неделю мучаю хелп, интернет и литературу, но не могу найти на него ответ:
Как мне сделать MDI окно активным, кроме стандартных (щелчок из windowmenu, или самому окну) способов?
Какие есть для этого программные способы?
Пытался записывать в objectList - нет никаких свойств самого окна.
Пытался фокусировать через MDIChildren[index] - тоже не нашел!
Как же это сделать? Очень прошу мне помоч...
← →
Stager (2003-01-21 22:08) [1]
> Пытался фокусировать через MDIChildren[index] - тоже не
> нашел!
Ну не знаю... У меня всю жизнь работает вот такая команда:
fmMain.MDIChildren[i].SetFocus;
где fmMain - окно-родитель.
← →
Дмитрий Попов (2003-01-21 22:29) [2]Хм... А у меня почему-то не работает.
Создаю я окно так:
for_t:=Tform3.Create(self);
for_t.RichEdit1.Lines.Clear;
for_t.RichEdit1.Lines.Add("
← →
Дмитрий Попов (2003-01-21 22:33) [3]Да, естественно, индекс активного окна - не ноль...
← →
Stager (2003-01-21 23:12) [4]У меня несколько другой случай. Создавал я их примерно таким образом:
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-22 01:01) [5]Не-а...
Попробовал for_t:=Tform3.Create(form1); - результат тот же...
← →
mrcat (2003-01-22 02:05) [6]не помогает - делайте Restore; =))))
← →
Дмитрий Попов (2003-01-22 09:15) [7]mrcat...
В смысле?
← →
smok_er (2003-01-22 10:02) [8]MDIChildren[index] возвращает не форму, созданную по порядку
Пример: вы создали форму1, форму2 и форму3
вышеназванный индекс - это не порядок создания, а порядок активизации окон.
в хелпе об этом написано, сам недавно здесь спрашивал.
Я делаю активным окно методом SHow
← →
smok_er (2003-01-22 10:15) [9]>>соответствующей кнопки ToolController"а
Что за компонент такой?
← →
Дмитрий Попов (2003-01-22 18:57) [10]Огроменное всем спасибо, но проблему удалось все-таки решить!
> вышеназванный индекс - это не порядок создания, а порядок
> активизации окон.
Я это понял, и потому решил другим способом. Вот, что получилось (работает идеально):
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...
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.01.30;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c