Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.009 c
1-96672
Дмитрий Баранов
2003-01-21 13:54
2003.01.30
Генерация уникального идентификатора


4-97085
Azerg
2002-12-16 10:52
2003.01.30
Изменение файловой структуры


3-96580
Alexander_K
2003-01-10 15:44
2003.01.30
Может версия не та?


4-97106
RAA
2002-12-13 23:40
2003.01.30
Как сделать форму что-бы размер программы был минимальным?


14-96976
Ixion
2003-01-12 01:04
2003.01.30
Есть ли Lazarus для Win32 ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский