Форум: "Основная";
Текущий архив: 2002.04.22;
Скачать: [xml.tar.bz2];
ВнизФреймы Найти похожие ветки
← →
Катерина (2002-04-06 15:52) [0]У меня есть несколько отлаженных фреймов. Я хочу на главную форму в одном и том же месте выводить то один, то другой фрейм в зависимости от того или иного события (например, нажатия различных кнопок). Если я добавляю фрейм на этапе создания программы в форму, то я могу описать только какой-то один фрейм, поэтому мне надо запрограммировать создание (TFrame.create) и добавление (?) фрейма в форму, но не получается. Как добавить компонент в форму на этапе выполнения?
← →
ghost_by (2002-04-06 16:46) [1]Размести их все на форме и установи свойство Visible:=false;
Потом в нужное время видимому фрейме делаешь Visible:=false, а тому фрейму, который нужно показать - Visible:=true.
Если фреймов очень много - можно их создавать в рантайме.
← →
Катерина (2002-04-06 16:52) [2]Вот-вот, про RunTime, пожалуйста, поподробнее. Пожалуйста!
← →
ghost_by (2002-04-06 22:05) [3]Вот-вот, про RunTime, пожалуйста, поподробнее. Пожалуйста! - Создаешь все свои фреймы. Для этого, если много фрэймов, можно их всех запихнуть в массив к примеру, или объявить по переменной на каждый фрейм, потом используешь все сие счастье, а затем удаляешь.
1. где-нибудь (при открытии окна) - создаешь фреймы:
f1:=TFrame1.Create(self);
f2:=TFrame1.Create(self);
f3:=TFrame1.Create(self);
2. где-нибудь (при зазрытии окна) - удаляешь фреймы:
f1.Free;
f2.Free;
f3.Free;
3. когда надо показать фрейм - InsertControl("НУЖНЫЙ ФРЕЙМ") - вставляет нужный фрейм. Если надо конкретные координаты - f1.Left:=X;f1.Top:=Y.
4. когда надо спрятать - RemoveControl("РАНЕЕ ВСТАВЛЕННЫЙ ФРЕЙМ").
Когдато делал что-то похожее. У меня было дерево, и в зависимости от уровня выбранного элемента в дереве я показывал тот или иной фрейм. У фреймов я ставил свойство Alligh=client - тогда фрейм занимает все свободное место на форме.
Еще возможен вариант, если много фреймов - создавать не сразу все, а по надобности и удалять все при закрытии окна - вроде побыстрее будет.
← →
Катерина (2002-04-08 12:07) [4]Я именно так и делала, как ты написал, до того, как обратилась за помощью. Но, извини за дурацкий вопрос, где указывать какой именно фрейм загружается.
У меня есть, например, фрейм с формой FRAME_Format1to2 в unit Format1to2. В модуле главной формы unit REFORM я описываю пременную
var Fr : TFrame;
Создаю фрейм
Fr := TFrame.Create(owner);
указываю Parent, добавляю в компоненты главной формы
.AddComp...
описываю размеры, положение, визуализацию и пр. А дальше, как же туда запихать именно фрейм из модуля Format1to2?
← →
[MC]NuClon (2002-04-08 12:54) [5]Люди, используйте NoteBook. Хорошая вешь, просто и понятно
← →
ghost_by (2002-04-08 19:28) [6]Если я правильно тебя понял - ты неверно создаешь фрейм, ты создаешь фрейм TFrame, а нужно FRAME_Format1to2.
То есть - в файле Format1to2 у тебя должно быть что-то вида - TFRAME_Format1to2=class(TFrame), вот и нужно создавать именно этот фрейм:
var my_frame:TFRAME_Format1to2;
...
my_frame:=TFRAME_Format1to2.Create;
...
← →
Катерина (2002-04-09 10:00) [7]Спасибо! Теперь я поняла свою ошибку.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.04.22;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.007 c