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

start [/forum/search_topic.php?author=Dimik&author_mode=last_topics&do_search=1]: |
0ms |
get settings: |
11ms |
get forum list: |
22ms |
get settings: |
10ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
199ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
77ms |
get tp. blocked users: |
1ms |
| others: | 702ms |
| total: | 1064ms |

| 0 / 0 |
