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

Вниз

Как сделать 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.015 c
1-96818
Sergey_El'f
2003-01-20 16:33
2003.01.30
Возврат в приложение после CreateProcess


1-96722
Adventure
2003-01-22 11:32
2003.01.30
Может у меня что-то с головой?


3-96608
oleon
2003-01-13 18:17
2003.01.30
Как мне получить величину нового ID при добалении новой записи...


8-96897
old_mole
2002-10-14 11:13
2003.01.30
Рисование на FastDIB


14-96973
ZeroDivide
2003-01-10 15:41
2003.01.30
Игры программеров (задачка по теме)