powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / forms vs frames
37 сообщений из 37, показаны все 2 страниц
forms vs frames
    #32166241
kylix_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем добрый!!!

Возник такой вот философский вопрос. Создаем какой-либо проект. Как обычно, есть главная форма, в ней меню. А вот потом можно пользователю показывать модальные формы. А можно показывать в этой же главной форме нужный в данный момент работы соответствующий фрэйм. Так какая технология "правильнее"? У кого какие мысли на эту тему?
...
Рейтинг: 0 / 0
forms vs frames
    #32166316
_designer_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Было дело - я юзал PagaControl со скрытыми табами...
...
Рейтинг: 0 / 0
forms vs frames
    #32166317
_designer_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Млин.... PagaControl = PageControl
...
Рейтинг: 0 / 0
forms vs frames
    #32166328
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот потом можно пользователю показывать модальные формы

Ты это про какой тип приложения? Многодокументный или обычный? Хотя все-равно - многовато что-то модальных форм.

А можно показывать в этой же главной форме нужный в данный момент работы соответствующий фрэйм

Это где показывать? Вместо каких-то ненужных контролов :)

Так какая технология "правильнее"?

Есть всего одна правильная . Все, что каксается фреймов - это просто для понтов сделано. А уж с помощю них менять технологию работы всего приложения - это уж слишком.

Обычными формами нужно пользоваться, обычными. + метод ManualDock, когда надо :)
...
Рейтинг: 0 / 0
forms vs frames
    #32166363
kylix_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приложение такого плана - что-то ввести, откорректировать при необходимости, посмотреть на экране при желании отчеты, при еще большем желании - распечатать отчеты. Информации в базе валяется, ессно. Вот. А формы модальные, чтобы не дай бог тетя из отдела кадров не запуталась в окнах (откуда, собственно, и родилась идея о фреймах в одном главном окне).

Где показывать? В главной форме. Ткнул в какой-либо пункт меню, все фреймы не Visible, нужный - Visible. Тетя не промахнется и не испугается. Ткнул в другой - предыдущий скрыли (ессно, проверирв, что все, что нужно сохранили/ не сохранили и т. д. ), новый показали.

А менять ничего не меняем. Просто думаем, как сделать лучше для непродвинутых пользователей или тех, которые только под DOSовскими приложениями раньше работали (извините, есть такие ;*))) ).
...
Рейтинг: 0 / 0
forms vs frames
    #32166518
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну дык тем более. Раз у тебя уже все формы есть - можешь их и использовать
метод WinComponent.ManualDock дочит форму на этот самый WinComponent (TPanel и т.п.). Получается встроенная форма. Зато ее можно использовать и как обычную. А фреймы - это все фигня, одно мытарство.
...
Рейтинг: 0 / 0
forms vs frames
    #32166521
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На фреймах очень удобно делать "запчасти" к приложению. Я, к примеру, на них делаю всякие фильтры (по датам, например). Короче говоря всякие общие веши, которые можно выделить в отдельный модуль и потом где надо заюзать, очень удобно делать во фреймах.
Преимущества перед формами:
1. меньше весят
2. можно положить на палитру или легко взять из хранилища
3. в дизайнере можно дизайнить форму, на которой лежит фрейм, и сам фрейм
...
Рейтинг: 0 / 0
forms vs frames
    #32166626
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Преимущества перед формами:
1. меньше весят
2. можно положить на палитру или легко взять из хранилища
3. в дизайнере можно дизайнить форму, на которой лежит фрейм, и сам фрейм


1. На сколько десятых %?
2. А зачем?
3. -/-

1. Одно самое главное преимущество форм, которое сводит на нет фреймы: чтобы показать фрейм, обязательно нужна форма. А чтобы показать форму - ничего обязательно не нужно. Хоть модально, хоть MDI, хоть в стиле фрейма встроить куда хошь. И глюки у фреймов с событиями. Да и не только с ними
...
Рейтинг: 0 / 0
forms vs frames
    #32166667
Meson
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
to tygra
<Все, что каксается фреймов - это просто для понтов сделано.>

Трудно согласться с таким смелым утверждением. Борланд - не та, знаете ли, фирма.

<Есть всего одна правильная .>

И опять не верно. Единственно правильное решение бывает только у задач из учебников. Все зависит от характеристик проекта и (самое главное) от подготовки разработчиков. Если проект простой, пять - десять форм плюс несколько диалогов, тогда, разумеется, проще TPageControl или TTabbedNotebook. Наглядно, удобно...

Ну а если форм за сотню, а длина некоторых из них переваливает 5000 строк, да еще и стоит вопрос о сопровождении разработки, поневоле приходится задумываться над структурированием проекта. Без этого просто не обойтись. Gold безусловно прав перечислив преимущества применения фреймов.

to kylix_dev
Раз уж у тебя возник вопрос, настоятельно советую начать использование технологии фреймов как можно раньше, не дожидаясь "больших" задач.

Успехов.
...
Рейтинг: 0 / 0
forms vs frames
    #32166749
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Meson

И опять не верно. Единственно правильное решение бывает только у задач из учебников. Все зависит от характеристик проекта и (самое главное) от подготовки разработчиков. Если проект простой, пять - десять форм плюс несколько диалогов, тогда, разумеется, проще TPageControl или TTabbedNotebook. Наглядно, удобно...

Ну а если форм за сотню, а длина некоторых из них переваливает 5000 строк, да еще и стоит вопрос о сопровождении разработки, поневоле приходится задумываться над структурированием проекта. Без этого просто не обойтись. Gold безусловно прав перечислив преимущества применения фреймов.


Вот как раз для больших проектов очень хорошее ООМ получается при наследовании форм. Реализация базовой функциональности в родительской и расширение (переопределение) в дочерних. Прошло время структуированных проектов. Проект надо начинать с ООМ.
...
Рейтинг: 0 / 0
forms vs frames
    #32166881
kylix_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
За мнения - спасибо. Только вот примерно такая же каша в голове у нас и варилась ;*))).

to pkarklin

А разве фреймы не укладываются в идеологию ООМ?

to tygra

Ну на самом деле мы ковыряемся в Kylix, а не в Delphi. Поэтому, как я подозреваю, ManualDock нам не товарищ ;*))).
Да, можно поконкретнее о глюках с событиями у фрэймов?

to Gold

Согласен на счет запчастей, потому и зацепились за идею.

to Messon

Да, мы почему-то тоже немного доверяем фирме Borland. ;*))))
...
Рейтинг: 0 / 0
forms vs frames
    #32167018
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А разве фреймы не укладываются в идеологию ООМ?

Да в чем их приемущество, то? Я не вижу в них чего-то такого, чего нельзя было сделать при наследовании форм. Если я чего-то сделал в базовой форме, то все наследники имеют эту функциональность. Изменил в базовой, изменились в дочерних. Фрэймы ту для чего?
...
Рейтинг: 0 / 0
forms vs frames
    #32167045
kylix_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хороший вопрос. Вот из-за таких вот вопросов топик и появился. Как раз вот и интересно, стоит ли с этим всем связываться и почему.
...
Рейтинг: 0 / 0
forms vs frames
    #32167071
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не стоит, но это IMHO.
...
Рейтинг: 0 / 0
forms vs frames
    #32167091
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Meson

советую начать использование технологии фреймов как можно раньше, не дожидаясь "больших" задач.

Я как раз не советую. Совсем не советую.
...
Рейтинг: 0 / 0
forms vs frames
    #32167516
Fakas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А кто кого сборет -- слон или кит ;) ?
Не надо категорично отрицать полезность и нужность фреймов. Форма это форма, фрейм это фрейм. Но навороченные формы лучше разрезать на фреймы. У нас есть в проекте (уже немаленький -- более 300 тыс.) одна форма, самая старая. Сильно навороченная, многофункциональная, сделана по технологии PageControl. Сейчас стоит задачка разрезать ее на фреймы. Преимущество -- хотя бы то, что не будем ждать -- отдай мне из VSS а то надо подправить :). Да и с фреймом проще в плане управления памятью -- не нужен, сразу удаляем, память не занимаем, как это было бы в сл-е с PageControl.
Зато другой механизм -- визардов -- с самого начала сделали на фреймах. Кррассота ! :) Общий предок -- фрейм, кот-й умеет ходить взад-вперед и описывает прочие базовые методы. Наследник уже их реализовывает. Вставляется (с помощью виртуальных конструкторов) все это тоже в фрейм, кот-й является владельцем визарда и умеет им управлять. Получилось красиво, удобно. И главное -- независимость кода. Можно каждый визард спокойно править, не трогая соседов, кот-е появляются в том же месте. И встроить куда угодно можно. Например один из визардов поставили в одном приложении. Когда позже понадобилось его добавить в основное -- проблем не было,легко и аккуратно.
Одно из приложений у нас так и сделано -- GXOutlookBar выбирает нужный визард и вперед. Все на фреймах ;).
Вопчем каждому овощу свое место. А главное что бы голова была на месте и об ООМ и ООП не забывать ;) !
...
Рейтинг: 0 / 0
forms vs frames
    #32168447
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Одно из приложений у нас так и сделано -- GXOutlookBar выбирает нужный визард и вперед. Все на фреймах ;).
Вопчем каждому овощу свое место


В 99 раз повторяю:

Есть такая процедура у формы - ManualDock(куда)
Дык вот любую форму можно использовать как хочешь - как форму, как фрейм.
Надо - воткнул ее в тот же визард. Надо - показал отдельно.
Зачем фреймами голову забивать?????????? Они ничего, кроме ограничений, по сравнению с формами, не дают

У нас больше 500 форм проект - и все прекрасно работает без всяких фреймов, некоторые формы в зависимости от ситуации и так, и так используются. И не надо городить городушки
...
Рейтинг: 0 / 0
forms vs frames
    #32168720
Fakas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tygra, совсем не зачем так орать :).
У меня нет столько здоровья что бы морочится с ManualDock -- есть задачки поважней, чем 10 000 раз писать "мама мыла раму".
И не в докинге дело... Дело в и идеологии и ООП. С фреймами проще произвести декомпозицию, не задействуются лишние ресурсы. И т.д. и т.п. Вопчем за доолгое время разработки пожалеть, что не сделал это фреймом приходилось. Наоборот - еще нет :).
...
Рейтинг: 0 / 0
forms vs frames
    #32168733
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какие ресурсы? О чем вы все говорите, про какие ресурсы? Лишний байт?

Ну, кому с фреймами нравится - пожалуйста. Некоторые до сих пор на Netscape Gold работают - тоже нравится. Наверное :)
...
Рейтинг: 0 / 0
forms vs frames
    #32168760
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Fakas

есть задачки поважней, чем 10 000 раз писать "мама мыла раму".
Дело в и идеологии и ООП.


И где это ты 10 000 умудряешься писать про раму, поделись. Что т при нормальном ООП (читай наследовании форм), мне ни разу не приходилось этим заниматься. И про идеологию в применении к фрэймам поподробней. И про ресурсы тоже.
...
Рейтинг: 0 / 0
forms vs frames
    #32168779
Fakas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Байт говоришь... Ну сравни 2 калсса -- TForm и TFrame...
...
Рейтинг: 0 / 0
forms vs frames
    #32168786
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Fakas

Ну сравни 2 калсса -- TForm и TFrame...

Чет я не понял, причем тут сравнение классов, ты что фрэймы без форм можешь использовать?
...
Рейтинг: 0 / 0
forms vs frames
    #32168837
Fakas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мама мыла раму -- это каждый раз Dock и пр.
Что касается сравнения классов... При использовании того же вставляния формы в форму мы имеем 2 экземпляра класса TForm. С фреймами -- 1 форму и один фрейм. Я уже не говорю про то что при докинге дельфя делает всем контролам Recreate. Тоже не фонут изюму...
Ребята, да делайте как хотите. Главное с головой :). И без экстремизма ;).
...
Рейтинг: 0 / 0
forms vs frames
    #32168876
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Fakas

Про докинг не надо. А вот следующее требует пояснения.

При использовании того же вставляния формы в форму мы имеем 2 экземпляра класса TForm.

Чего куда вставляем и где два экземпляра??? Это как это форму вставить в форму? Я так не умею.
...
Рейтинг: 0 / 0
forms vs frames
    #32168920
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Забавно :-) Человек (pkarklin), не понимающий, что обсуждается пытался что-то доказать кому-то. Цирк !!!
...
Рейтинг: 0 / 0
forms vs frames
    #32168921
Fakas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да tygra ведь пишет, что нафиг не нужны фреймы потому как функциональность фреймов как контейнеров контролов можно повторитьиспользуя ManualDock. Вооот :). Мне такое решение не нравится, но это уж мое личное дело :). И вот тут я и говорю, что докинг докингом, но он ведь жрет -- и лишний экземпляр довольно немаленького класса создается и контролы рекреатятся (мы с этим воевали помнится. Ой....)
...
Рейтинг: 0 / 0
forms vs frames
    #32168936
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Gold

Я ни чего ни кому не пытался доказывать. Это не я увел тему от того, что было в начале. И про докинг в первом постинге ничего не было. Был впопрос, нужны фрэймы или нет. То есть какую технологию использовать. А ты говоришь цирк. Похоже, что цирк давно уехал, а клоуны остались.
...
Рейтинг: 0 / 0
forms vs frames
    #32168965
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 pkarklin

Ну так всё же ведь давно (ещё в начале ветки) как раз и свели к ManualDock против Frames. Небыло бы ManualDock - небыло бы и альтернативы фреймам.
...
Рейтинг: 0 / 0
forms vs frames
    #32169001
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и лишний экземпляр довольно немаленького класса

Если кто-то еще бы и доказал, что этот немаленький класс действительно составляет немало. А то ведь о чем говорим? О паре килобайт?

А про рекриэйт - что-то не помню, чтобы это мешало - если конечно оно есть, не замечал.
...
Рейтинг: 0 / 0
forms vs frames
    #32169180
kylix_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, на счет того, что цирк давно уехал - это вы зря. Слежу с интересом за разгорающимися баталиями ;*))). Вот, кашу заварил ...

Народ, одно уточнение, работа ведется в Kylix (под Linux). Так я там никакого ManualDock не нашел...

to Fakas
Мне не очень понравилась одна вещь - если использовать кучу фреймов в одной главной форме, то приходится много писать Visible=False/True и все обработчики событий, когда нужно поменять фрейм (то есть один скрыть, а другой показать), сваливаются в главную форму. Это нормально? Или это неправильно?
...
Рейтинг: 0 / 0
forms vs frames
    #32169208
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот это

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

и это

Мне не очень понравилась одна вещь - если использовать кучу фреймов в одной главной форме, то приходится много писать Visible=False/True и все обработчики событий, когда нужно поменять фрейм (то есть один скрыть, а другой показать), сваливаются в главную форму. Это нормально? Или это неправильно?

Мой совет такой. Делай нормальный MDI интерфейс. Не надо считать пользователя заранее глупым, что он в окнах запутается. А модальными должны быть тока формы выбора из справочников. И без фрэймов. Используй наследование форм.
...
Рейтинг: 0 / 0
forms vs frames
    #32169329
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это точно!

Иначе получится как раз слишком тупым - программист

Никто до сих пор в 1с не запутался. А там MDI.
...
Рейтинг: 0 / 0
forms vs frames
    #32169386
LG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>>Никто до сих пор в 1с не запутался. А там MDI.
Позволю себе встрять.
Сравним для примера 1с и стандартный Explorer ...
2 разные технологии 2 разные реализации ...
Если с 1с все понятно, то Explorer это НавБар(слева) и фрейм(ы) справа... По моему нариканий у пользователей ни к 1с ни к Explorer не было, все пользуются и радуются...
ИМХО: учитывать нужно и немаловажный фактор - дружественность интерфейса . В Explorer-е запутаться куда сложнее чем в 1с. Если твой выбор пал на MDI интерфейс, то тебе прямая дорога к наследованию форм, если а-ля MS Explorer(OutGluk, etc ...) то делай на фреймах, не ошибешься ...
...
Рейтинг: 0 / 0
forms vs frames
    #32169410
Fakas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
To kylix_dev
Не надо мучаться с visibile. Я просто уношу и создаю нужный фрейм. Вот так

procedure TWizardFrame.SetWorkFrame(Value: TClassWorkFrame);
begin
// Освобождаю старый экземпляр
SafeFreeObj(FWorkFrame); // Это наша хитрая убивалка объектов.
FWorkFrame := Value.Create(Self); // вот эти 2 строчки собственно и суть
FWorkFrame.Parent := Workpage;
FWorkFrame.Align := alClient; // Align естественно выставляешь как хочешь.
// Ля-ля тополя по иницалилизации прочих потрохов.
.........
end;

Преимущество -- экономится память -- лишние фреймы в ней не сидят. В эту процедуру передается class reference -- вставляется любой мой фрейм с вирртуальным коснтруктором. В твоем же случае ты просто повторяешь функциональность TPageControl.
Фреймы BTW создаются с помощью визуального наследования (это для pranclin :) ).

To tygra
Use the source Luk ! ((c) Borland ) :). Просто возьми и сравни исходники 2-х классов TForm и TFrame.
По поводу recreate. Нам он сильно мешал. Контролы переинициализируются. А когда был TListView не виртуализированный то этот чертов док вообще втыкал.
...
Рейтинг: 0 / 0
forms vs frames
    #32170222
Dikobrazz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я делал так: на главной форме создавал панель, и внутрь этой панели помещал (Form2.Parent:=Panel1) другие формы без заголовков и по размеру этой панели, и без всяких фреймов и доков...
...
Рейтинг: 0 / 0
forms vs frames
    #32170547
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Dikobrazz
Ну про формы с фреймами ещё можно спорить. А у панелей то какие преимущества? Пенели же нельзя в отдельном модуле конструировать. Причём тут они. С таким же успехом можно вобще отказаться от дизайнера форм и фреймов и всё писать на WinApi. Проги меньше 100 КБ будут. Только вот сколько лет на это уйдёт ...
А то, что ты советуеш, склоняет к статическому созданию ненужнеых экземпляров форм. По моему это совершенно непреемлемо.
...
Рейтинг: 0 / 0
forms vs frames
    #32171349
Dikobrazz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gold: Да не, ты не понял...
Панель пустая, просто в ран-тайме в нее помещаются другие формы (которые, конечно же, конструируются отдельно).
Ничего необычного в этом нет, любой WinControl может быть помещен внутрь другого WinControl'а.
Выглядело это примерно так (того кода под рукой нет, привожу по памяти)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
procedure TMainForm.PutForm(SFrmClass: string)
var
  FrmCls: TFormClass;
  Frm: TForm;
begin
  if PanelForm<>nil then FreeAndNil(PanelForm); //хотя там прежняя форма как-то посложнее освобождалась
  FrmCls:=TFormClass(FindClass(SFrmClass));
  Frm:=FrmCls.Create(self);
  PanelForm:=Frm;
  Frm.BorderStyle:=bsNone;
  Frm.Top:= 0 ;
  Frm.Left:= 0 ;
  Frm.Width:=Panel1.Width;
  Frm.Height:=Panel1.Height;
  Frm.Parent:=Panel1;
  Frm.Show;
end;

Формы создавались по имени класса, соответственно, их надо было заранее зарегистрировать через RegisterClasses.
...
Рейтинг: 0 / 0
37 сообщений из 37, показаны все 2 страниц
Форумы / Delphi [игнор отключен] [закрыт для гостей] / forms vs frames
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]