Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.03.23;
Скачать: [xml.tar.bz2];

Вниз

Динамическая вставка фрейма в форму?   Найти похожие ветки 

 
dusha ©   (2008-02-06 17:33) [0]

Помогите динамически вставить фрейм в форму


 
clickmaker ©   (2008-02-06 17:36) [1]

Frame.Parent := Form;
Frame.Left :=
Frame.Top :=
или
Frame.Align :=


 
dusha ©   (2008-02-06 18:16) [2]

не получается, прорисовывается только форма, фрейма не видно


 
clickmaker ©   (2008-02-06 18:27) [3]

Visible = true?


 
dusha ©   (2008-02-06 18:34) [4]

конечно


 
clickmaker ©   (2008-02-06 18:40) [5]


>  [4] dusha ©   (06.02.08 18:34)

тогда показывай код


 
Dusha ©   (2008-02-06 21:57) [6]

пробовал так:
procedure TFStart.CreateFStart(Sender: TObject);
begin
   ClientHeight:=502;
   ClientWidth:=722;
   Position:=poDesktopCenter;
   Frame.Parent:=FStart;
   Frame.Left:=10;
   Frame.Top:=10;
   Frame.Visible:=true;
 end;
попробовал таким образом, все равно не выходит:
procedure TFStart.CreateFStart(Sender: TObject);
begin
    ClientHeight:=502;
    ClientWidth:=722;
    Position:=poDesktopCenter;
 
   with TFrame.Create(Self) do begin
    Parent:=FStart;
    Name:="ZapFr";
    Left:=10;
    Top:=10;
    Visible:=true;
   end;
end;


 
{RASkov} ©   (2008-02-06 22:02) [7]

> [6] Dusha ©   (06.02.08 21:57)

А так попробуй:
//procedure TFStart.CreateFStart(Sender: TObject);
procedure TFStart.Buttonclick(Sender: TObject);
begin
   //ClientHeight:=502;
   //ClientWidth:=722;
   //Position:=poDesktopCenter;

  with TFrame.Create(Self) do begin
   Parent:=FStart;
   Name:="ZapFr";
   Left:=10;
   Top:=10;
   Visible:=true;
   Color:=clBlack;
  end;
end;

:) Все равно нет?


 
{RASkov} ©   (2008-02-06 22:03) [8]

> [6] Dusha ©   (06.02.08 21:57)
> Name:="ZapFr";

Ну и так желательно не делать.... Name вообще в рантайм как правило не нужно...


 
{RASkov} ©   (2008-02-06 22:06) [9]

Блин... и вот еще:

> Parent:=FStart;

так тоже плохо поступать :) Лучше так:

Parent:=Self;

Ну и напоследок, наверное, вот это:
>Visible:=true;
тоже не к чему в данном случае :) Оно так по умолчанию....


 
MsGuns ©   (2008-02-06 22:09) [10]

Смысл сабжа какой-то гротескный :)


 
KSergey ©   (2008-02-07 15:25) [11]

> {RASkov} ©   (06.02.08 22:03) [8]
> > Name:="ZapFr";
> Ну и так желательно не делать.... Name вообще в рантайм
> как правило не нужно...

А вот тут засада есть.
Для форм и компонент, которые дизайнятся в design-time свойство "name" назначается уникальное (в каких-то пределах, чета не задумывался в каких; либо по owner, либо по parent. Или глобально?! да нет... чета не задумывался :)
ну не важно, короче действительно потом это неприятносней никогда не доставляет.
но как только начинаем одни и те же экземпляры компонент создавать в run-time - оказывается, что им присваивается одинаковое значение name - и вот тут уже начинаются exception по поводу того, что два одинаковых значения name недопустимы (в каких рамках? ну не важно).

Так что надо либо генерить уникальные, либо назначать пустую строку полю name:) Это не возбранятеся (от чего-то; дял удобства?).


 
KSergey ©   (2008-02-07 15:27) [12]

> KSergey ©   (07.02.08 15:25) [11]
> но как только начинаем одни и те же экземпляры компонент создавать


Имелось в виду "экземпляры компонент одного класса".


 
ketmar ©   (2008-02-07 15:42) [13]

>как только начинаем одни и те же экземпляры компонент создавать в
>run-time — оказывается, что им присваивается одинаковое значение name — и
>вот тут уже начинаются exception по поводу того, что два одинаковых
>значения name недопустимы

упс. пойду патч качать. а то я батоны создавал — и ничего, работали безо всяких манипуляций с name…

---
Understanding is not required. Only obedience.


 
dusha ©   (2008-02-07 15:42) [14]

Люди, может я вопрос не так поставил, потому не выходит то что вижу.
Есть фрейм (уже созданный, с картинками, кнопочками, панельками и т.д), а нужно этот фрейм вставить в форму (форма полностью чистая), потом после работы с фреймом его удалить (фрейм в смысле). Перепробовал все что советовали, ничего не получается.
P.S. и хотелось бы чтобы это все было при создании формы, а не по нажатия кнопки.
Заранее благодарю за помощь и поддержку


 
ketmar ©   (2008-02-07 15:49) [15]

а зачем? коли форма «чистая» — так на кой тут фрэйм?

---
Understanding is not required. Only obedience.


 
clickmaker ©   (2008-02-07 15:51) [16]


> [14] dusha ©   (07.02.08 15:42)

в FStart.OnCreate:

with TFrame.Create(Self) do begin
   Parent:=Self;
   Align := alClient;    
   Visible:=true;
  end;


 
clickmaker ©   (2008-02-07 15:52) [17]

кстати.
А почему просто TFrame, а не TMySuperFrameWithButtonsPicturesEtc?


 
dusha ©   (2008-02-07 16:10) [18]

ну это она чистая временно (фрейм будет занимать всю форму), после первого фрейма подгрузим второй, потом третий, а почему просто TFrame не знаю, но за подсказку сенкс, учту что фреймам, как впрочем и всему остальному нужно давать осмысленные именна (как ни как первая программка).
Особое спасибо clickmaker за совет, не знаю как но это работает
еще раз спасибо


 
ketmar ©   (2008-02-07 16:14) [19]

>не знаю как но это работает

>clickmaker
ну и что ты натоврил? научил дитё заклинанию…

---
Understanding is not required. Only obedience.


 
clickmaker ©   (2008-02-07 16:20) [20]


> ну и что ты натоврил? научил дитё заклинанию…

если не утонет, то плавать научится
как обычно...


 
Игорь Шевченко ©   (2008-02-07 17:28) [21]


> with TFrame.Create(Self) do begin
>    Parent:=Self;
>    Align := alClient;    
>    Visible:=true;
>   end;


Я извиняюсь, а зачем пустой фрейм создавать ?


 
MsGuns ©   (2008-02-07 21:14) [22]

На [10] не обратили внимания. А напрасно ;)


 
dusha ©   (2008-02-08 13:19) [23]


> MsGuns ©   (06.02.08 22:09) [10]
> Смысл сабжа какой-то гротескный :)

а это как?
простите немножко не понимаю слысла слова сабж


 
ketmar ©   (2008-02-08 13:30) [24]

>[23] dusha © (2008-02-08 13:19:00)
>немножко не понимаю слысла слова сабж
сабж == subj == subject == «заголовок ветки»

---
Understanding is not required. Only obedience.


 
dusha ©   (2008-02-08 13:56) [25]

теперь ясно, благодарю ketmar


 
MsGuns ©   (2008-02-08 16:13) [26]

>dusha ©   (08.02.08 13:19) [23]
>а это как?

Основное назначение фрэймов - это вставка в проект полностью или почти полностью готового контейнера с ВИЗУАЛЬНЫМИ элементами, имеющего СОБСТВЕННЫЙ САМОСТОЯТЕЛЬНЫЙ функционал, ПРИ ПРОЕКТИРОВАНИИ. Или же наследование от готового с дописками или перекрытиями "под задачу".

Создавать же его ДИНАМИЧЕСКИ и вставлять куда-то все равно что добывать творог из вареников или яйца из яичницы.


 
dusha ©   (2008-02-08 17:19) [27]

В рассматриваем случае, фрейм действительно был готовым "контейнером", на нем были расположены все необходимые элементы и процедуры.
Но вставлять его сразу в форму путем Select frame to insert не хотелось. Просто пытался научиться как в дальнейшем вставлять такие фреймы в формы.
P.S. спасибо за внятное объяснение.


 
Семеныч   (2008-02-08 18:17) [28]

> MsGuns ©   (08.02.08 16:13) [26]

> Создавать же его ДИНАМИЧЕСКИ и вставлять куда-то все равно что
> добывать творог из вареников или яйца из яичницы.

Образно. Категорично. Голословно.

Стандартная задача - есть форма, которая показывается динамически и в зависимости от неких условий должна содержать на себе ту или иную комбинацию контролов, связанных той или иной функциональностью.

Одно из вполне нормальных решений: в design-time делаем набор фреймов, каждый со своими контролами и со своим функционалом. При показе формы анализируем условия и динамически вставляем на эту форму нужные фреймы, один или несколько.

И где же здесь творог из вареников?


 
ketmar ©   (2008-02-08 18:45) [29]

>[28] Семеныч (2008-02-08 18:17:00)
>И где же здесь творог из вареников?

в рьъединении разных форм в одну.

---
Understanding is not required. Only obedience.


 
clickmaker ©   (2008-02-08 18:48) [30]

MDI-приложение, где содержимое MDI-детей живет в плагинах-DLL в виде фреймов, как пример подойдет?


 
Семеныч   (2008-02-08 18:49) [31]

> ketmar ©   (08.02.08 18:45) [29]

И что тут плохого?


 
ketmar ©   (2008-02-08 18:54) [32]

>[31] Семеныч (2008-02-08 18:49:00)
разные виды --> разная логика. зачем разную логику насильно объединять в одну форму? не понимаю.

---
Understanding is not required. Only obedience.


 
Семеныч   (2008-02-08 19:00) [33]

> ketmar ©   (08.02.08 18:54) [32]

Ты про фреймы забыл, поэтому и не понимаешь.

Один фрейм - одна логика. Жесткая, в design-time прописанная.
Другой фрейм - другая логика. Жесткая, в design-time прописанная.

И т.д. Получаем предопределенное множество логик. На форме же нужно иметь их подмножество. Какое именно - это становится известным только в run-time.


 
ketmar ©   (2008-02-08 19:05) [34]

>[33] Семеныч (2008-02-08 19:00:00)
разница в таком случае между фреймом и формой?

---
Understanding is not required. Only obedience.


 
Семеныч   (2008-02-08 19:23) [35]

> ketmar ©   (08.02.08 19:05) [34]

Разница в том, что из N фреймов получаем M форм, причем N << M.

Без фреймов пришлось бы делать все M форм, притом с частично (но заметно) повторяющимися ресурсами и кодом. И на фига такой баян?


 
ketmar ©   (2008-02-08 20:29) [36]

>[35] Семеныч (2008-02-08 19:23:00)
повторяется — переработать. чтобы не повторялось.

всё это беспредметный трёп, пока реальная задача неизвестна.

---
Understanding is not required. Only obedience.


 
MsGuns ©   (2008-02-08 22:38) [37]

>Семеныч   (08.02.08 18:17) [28]

Разницу между РАЗРАБОТАННОЙ В ДИЗАЙНЕ формой, содержащей фрэйм, которая может ДИНАМИЧЕСКИ создаваться (хоть в тыще экземплярах) и разрушаться, и собственно СТАТИЧЕСКИМ фрэймом не различаем ?


 
MsGuns ©   (2008-02-08 22:41) [38]

>Семеныч   (08.02.08 19:00) [33]
>Один фрейм - одна логика. Жесткая, в design-time прописанная.
>Другой фрейм - другая логика. Жесткая, в design-time прописанная.

Въехал ;)
Согласен, зерно есть.
 "Признаю свою ошибку, лежачего не бьют" ;)


 
Игорь Шевченко ©   (2008-02-08 23:21) [39]

MsGuns ©   (08.02.08 16:13) [26]


> Основное назначение фрэймов - это вставка в проект полностью
> или почти полностью готового контейнера с ВИЗУАЛЬНЫМИ элементами,
>  имеющего СОБСТВЕННЫЙ САМОСТОЯТЕЛЬНЫЙ функционал, ПРИ ПРОЕКТИРОВАНИИ.
>  Или же наследование от готового с дописками или перекрытиями
> "под задачу".
>
> Создавать же его ДИНАМИЧЕСКИ и вставлять куда-то все равно
> что добывать творог из вареников или яйца из яичницы.


А я вот создаю фрейм в дизайнере, а потом динамически создаю на форме  требуемое их количество, в зависимости от входных данных. Получается несколько динамически созданных на форме фреймов, почти как у автора.

И не жужжу.


 
Германн ©   (2008-02-09 00:20) [40]


> И не жужжу.

А зачем тебе жужжать, если ты не пчела?
(с) Винни Пух.

P.S.
Заняться что-ли на досуге изучением фреймов?



Страницы: 1 2 вся ветка

Форум: "Начинающим";
Текущий архив: 2008.03.23;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.55 MB
Время: 0.008 c
2-1203502618
Ultimate
2008-02-20 13:16
2008.03.23
Возможно вовсе глупо звучит... но...


2-1204027452
AlexeyMir
2008-02-26 15:04
2008.03.23
Компонент в run-time без выдачи ему имени


2-1204023772
Washington
2008-02-26 14:02
2008.03.23
Прозрачность


2-1204046249
Леха
2008-02-26 20:17
2008.03.23
Помогите решить проблему!


11-1186390400
Alexey_k
2007-08-06 12:53
2008.03.23
Не устанавливается библиотека kolics





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский