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

Вниз

Фреймы   Найти похожие ветки 

 
Катерина   (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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.01 c
14-69988
Hel
2002-03-14 13:54
2002.04.22
---|Ветка была без названия|---


1-69766
Янки Дудль
2002-04-10 02:13
2002.04.22
RX Lib для


1-69866
kalinka
2002-04-09 09:48
2002.04.22
Создание и удаление динамических массивов


3-69723
Hermit
2002-04-01 12:18
2002.04.22
DBGrid и режим редактирования


3-69698
Рамиль
2002-03-29 20:13
2002.04.22
Проблема открыть