Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Вопрос по динамическому созданию компонеты
|
|||
|---|---|---|---|
|
#18+
Есть на форме Panel1 с некими компонетами Вызываю procedure TForm1.Button2Click(Sender: TObject); begin Panel1.Free; end; Как правильно возвращать обратно ? Большое спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 12:57 |
|
||
|
Вопрос по динамическому созданию компонеты
|
|||
|---|---|---|---|
|
#18+
Возвращать что???? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 13:20 |
|
||
|
Вопрос по динамическому созданию компонеты
|
|||
|---|---|---|---|
|
#18+
Полагаю что то типа Panel1.Create(Self).... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 13:29 |
|
||
|
Вопрос по динамическому созданию компонеты
|
|||
|---|---|---|---|
|
#18+
таварищ! прочтите хоть маленькую книжечку по основам паскаля и в частности начальные сведения об ооп. вопросы какраз из основ. ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 13:39 |
|
||
|
Вопрос по динамическому созданию компонеты
|
|||
|---|---|---|---|
|
#18+
а зачем ты ее Free ??? Что бы потом создавать? Panel1.Visible := False; Panel1.Visible := True;- не катит ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 13:46 |
|
||
|
Вопрос по динамическому созданию компонеты
|
|||
|---|---|---|---|
|
#18+
> Alex Alexeev. А еще есть Panel1.Hide и Show. Задававшему вопрос. Не обижайтесь - у компонентов есть методы, свойства и события - иногда смотрите хелп ))), а еще есть екзамплы.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 13:51 |
|
||
|
Вопрос по динамическому созданию компонеты
|
|||
|---|---|---|---|
|
#18+
Уважаемый гражданин Кириллов. Глубоко признателен. Ответ правильный, верный... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 14:08 |
|
||
|
Вопрос по динамическому созданию компонеты
|
|||
|---|---|---|---|
|
#18+
хочется освобождать память. Например если есть две спроектированные на этапе разработки формы интерфейса- я могу их "уничтожать и воссоздавать" в процессе работы. Я хочу так делать с визуальными компонентами. Например две Panel, на одной DBGrid, на другой StringGrid. На форме эти панели одного размера и на одном месте. Я могу переключать их Show-Hide, но хочу делать Destroy-Create. Вот и пытаюсь идти по такому пути. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 14:21 |
|
||
|
Вопрос по динамическому созданию компонеты
|
|||
|---|---|---|---|
|
#18+
Это кто тебе такой путь подсказал???????????? =:() Не Ленин ли? А то похоже - такой же кривой и странный. СВОЙ, одним словом. :() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 14:54 |
|
||
|
Вопрос по динамическому созданию компонеты
|
|||
|---|---|---|---|
|
#18+
Ну если надо так извратиться - пиши компоненты в потоки в память или диск, а потом ресторь их от туда... Да и к томуже "памяти" как ты выражаешься, они мало юзают. Экзешник не уменьшится. Ели токма колво заюзанных хендлов станет меньше... Зачем так извращаться? Ну ечли уж нужен полный изврат - пиши на апи))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 15:09 |
|
||
|
Вопрос по динамическому созданию компонеты
|
|||
|---|---|---|---|
|
#18+
И каким путем идти? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 15:31 |
|
||
|
Вопрос по динамическому созданию компонеты
|
|||
|---|---|---|---|
|
#18+
Какая цель? 1. Уменьшить экзешник? 2. Уменьшить размер в оперативке? ... или? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 15:35 |
|
||
|
Вопрос по динамическому созданию компонеты
|
|||
|---|---|---|---|
|
#18+
3. Или уменьшить кол-во хендлов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 15:36 |
|
||
|
Вопрос по динамическому созданию компонеты
|
|||
|---|---|---|---|
|
#18+
Читать про dll? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 15:40 |
|
||
|
Вопрос по динамическому созданию компонеты
|
|||
|---|---|---|---|
|
#18+
извени. хоть убей не врубаюсь че те надо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 15:44 |
|
||
|
Вопрос по динамическому созданию компонеты
|
|||
|---|---|---|---|
|
#18+
Я понимаю что можно создавать компоненты в процессе выполнения программы и уничтожать их. Сделал такой вывод попробовав вызвать Panel1.Destroy; например. (ну учусь я, учусь...) Раз можно удалить, значит можно пересоздать. Это первое что я хотел попробовать, хотя смысла нет - размер приложения в памяти при удалении компоненты не уменьшиться конечно, уже понял... Ну а вот еще например: Если я помещаю к себе в приложение QReport то размер моего приложения (файла ехе и в памяти тоже) прилично возрастает. Может понадобиться строить отчет а может нет, но QReport "вложен" и будет есть ресурсы. Как его можно где нить хранить и подгружать по мере надобности? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 16:18 |
|
||
|
Вопрос по динамическому созданию компонеты
|
|||
|---|---|---|---|
|
#18+
1. Никогда не юзай Destroy. Юзай Free. Долго объяснять почему... 2. В проекте Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. IDE при добавлении новой формы будет класть ее креат туда где я написал "!!!" 3. По необходимости создаешь репорт сам ... Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. В моей проге более 200 форм - все нормально с ресурсами и т.п. главное выкидывай нахрен код который добавляет автоматомделфя при добвавлении формы. вот. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 16:28 |
|
||
|
Вопрос по динамическому созданию компонеты
|
|||
|---|---|---|---|
|
#18+
для экономии памяти и ускорения загрузки и работы приложения в больших проектах, где находится большое кол-во форм (ИМХО если есть >10 ) можно создавать формы по мере обращения к ним, т.е. выкинуть те строки, которые пишутся самой Делфи в проекте: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. напрмер те, которые в комментариях, а затем создаём и освобождаем их по мере обращения. напрмер для формы отчёта: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. смысл в уничтожении/создании компонент на форме вряд ли есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 16:28 |
|
||
|
Вопрос по динамическому созданию компонеты
|
|||
|---|---|---|---|
|
#18+
А есть ли возможность и смысл держать визуальные элементы и их математику где то еще? совсем отдельно от приложения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 16:59 |
|
||
|
Вопрос по динамическому созданию компонеты
|
|||
|---|---|---|---|
|
#18+
Если если юзается не одной прогой... но лучше не гемороидальничать... в одной проге и так дофига всего.... делфийские екзешники достаточно шустрые и без дллелин... http://www.rsdn.ru/article/default.asp?devtools/perftest.xml http://www.rsdn.ru/article/?devtools/perftest2.xml http://www.rsdn.ru/article/?devtools/perftest3.xml ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 17:06 |
|
||
|
Вопрос по динамическому созданию компонеты
|
|||
|---|---|---|---|
|
#18+
>>А есть ли возможность и смысл держать визуальные элементы и их математику где то еще? совсем отдельно от приложения? Возможность есть, смысла в стандартных случаях - нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 17:10 |
|
||
|
Вопрос по динамическому созданию компонеты
|
|||
|---|---|---|---|
|
#18+
Большое Спасибо! Почитаю! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 17:12 |
|
||
|
Вопрос по динамическому созданию компонеты
|
|||
|---|---|---|---|
|
#18+
Нашел на http://www.rsdn.ru/ статью как хранить формы в dll ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2002, 11:53 |
|
||
|
Вопрос по динамическому созданию компонеты
|
|||
|---|---|---|---|
|
#18+
Господи! Ну нахера тебе такой изврат. Да простят меня любители русского языка ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2002, 11:55 |
|
||
|
Вопрос по динамическому созданию компонеты
|
|||
|---|---|---|---|
|
#18+
вполне рабочий способ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2002, 12:04 |
|
||
|
Вопрос по динамическому созданию компонеты
|
|||
|---|---|---|---|
|
#18+
есть ряд типовых операций с базой (много). Для каждой громозкая форма с математикой. Все это в одном проекте "Типа интерфейс вызова типовых операций". Кажется логично держать формы которые могут непонадобиться в динамичи подгружаемых dll. Или что я не понимаю? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2002, 12:13 |
|
||
|
Вопрос по динамическому созданию компонеты
|
|||
|---|---|---|---|
|
#18+
ИМХО это зависит от многих условий. + нахождения в dll я вижу такой: если на машине мало оперативной памяти, то динамически подгружая/освобождая библиотеку ты более оптимально её используешь. Опять же размер ехе-шника меньше. Но мне кажется (я уже писал) лучше создавать/освобождать сами формы по мере обращения. - неудобно таскать эти библиотеки с собой, добавочный кодинг, проверки и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2002, 12:25 |
|
||
|
Вопрос по динамическому созданию компонеты
|
|||
|---|---|---|---|
|
#18+
но еше размер стартовой екзешки мне критичен так как должен лежать на сети ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2002, 12:35 |
|
||
|
Вопрос по динамическому созданию компонеты
|
|||
|---|---|---|---|
|
#18+
В инете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2002, 12:51 |
|
||
|
Вопрос по динамическому созданию компонеты
|
|||
|---|---|---|---|
|
#18+
внутри, но на другом конце выделенки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2002, 14:30 |
|
||
|
Вопрос по динамическому созданию компонеты
|
|||
|---|---|---|---|
|
#18+
но еше размер стартовой екзешки мне критичен так как должен лежать на сети А Dll тебе чего, по сети не надо будет таскать? Это сто лет назад такими делами страдали, а сейчас то чего? Или книги только старые по программированию? :)) Пиши нормально. Сто раз уж посоветовали - кроме геморроя и кучи ошибок и проблем ничего не прибавится. И самый лучший способ, который уже предлагали - когда форма нужна - создавать, когда закрываешь - удаляй: procedure Form1.OnClose(...) ... Action := caFree; Form1 := nil; ... end; и все будет хорошо. А для отчетов другое что-нить юзай, FastReport, например ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2002, 15:05 |
|
||
|
Вопрос по динамическому созданию компонеты
|
|||
|---|---|---|---|
|
#18+
>>1. Никогда не юзай Destroy. Юзай Free. Долго объяснять почему... Oбъяснять не долго. Стандартный метод Free: If Assigned(P) then Destroy; т.е. осуществляется проверка объекта - жив или нет, чтобы не уничтожить его два раза. Поэтому free можно вызывать сколько угодно раз и всё будет ОК. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2002, 16:11 |
|
||
|
Вопрос по динамическому созданию компонеты
|
|||
|---|---|---|---|
|
#18+
> hDrummer Это самый простой пример, я имел ввиду в случае наследования, полиморфа, абстрактых методов, перекрытия vmt и прочего. а это любой знает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2002, 16:52 |
|
||
|
Вопрос по динамическому созданию компонеты
|
|||
|---|---|---|---|
|
#18+
>>Это самый простой пример, я имел ввиду в случае >>наследования, полиморфа, абстрактых методов, >>перекрытия vmt и прочего. >>а это любой знает. ну накидал терминов... прямо дрожь должна брать, чтоли? Стандартный метод Free для наследования If Assigned(P) then Destroy; inherited Free; для абстрактных методов какой ещё Free? причём здесь перекрытие vmt? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2002, 18:27 |
|
||
|
Вопрос по динамическому созданию компонеты
|
|||
|---|---|---|---|
|
#18+
Человек дурью мается, а мы тут советы даем :() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2002, 18:36 |
|
||
|
Вопрос по динамическому созданию компонеты
|
|||
|---|---|---|---|
|
#18+
Согласен с tygra ))) Хватит идиотничать, господа, оффтопик сплошной... а мы тут начинаем перетирать. Не хай сам мучается автор сабжа... я б на его месте хоть маленькую книжку прочел прежде чем забивать головы адвансенд юзверям. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2002, 19:38 |
|
||
|
Вопрос по динамическому созданию компонеты
|
|||
|---|---|---|---|
|
#18+
Только что провел експеримент. (WinNT40) На форму 2 поместил репорт. В первом случае создаю форму так : Form2 := TForm2.Create (Application); ... удаляю так : Form2.Free; Form2 := nil; Во втором случае (пример не привожу, есть на ссылках выше) работаю с той же формой 2, но которая у меня в динамической dll. Так вот во втором случае при "выгрузке" dll память у меня очищается на _столько_ же насколько увеличивается при ее "загрузке". А в первом примере только процентов на 5. Значит держать формы в dll иногда может быть хорошо. Конечно нужно иметь в виду сложность кода и прочие "прелести" dll. И беспорно что это не имеет смысла когда есть 100% уверенность что dll будет использоваться. Да, практическая полезность такого решения чаще сомнительна. Но хотя бы в теории это интересно. Еще раз всем искреннее спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2002, 11:16 |
|
||
|
|

start [/forum/topic.php?all=1&fid=58&tid=2119616]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
74ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
64ms |
get tp. blocked users: |
2ms |
| others: | 326ms |
| total: | 510ms |

| 0 / 0 |
