Главная страница
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.02 c
8-96887
Ал
2002-10-16 15:36
2003.01.30
ZLib и как с ним работать?


14-97038
Вадим
2003-01-13 02:13
2003.01.30
Кино


3-96528
valmont
2003-01-14 18:12
2003.01.30
Удаление из таблицы


14-96979
korvet
2002-12-12 17:08
2003.01.30
Server windows 2000


3-96622
YurikV
2003-01-14 09:57
2003.01.30
ODBC & Access