Форум: "Начинающим";
Текущий архив: 2006.10.01;
Скачать: [xml.tar.bz2];
ВнизКогда много панелей Найти похожие ветки
← →
parovoZZ © (2006-09-04 16:49) [0]Здарова
Вопрос
Сейчас у меня много форм и все показываю модально (из одной модальной вызываю другую и тоже модально бррррр). Хочу всё содержимое этих форм перенести на панели, а панели показывать в одном месте. Так вот вопрос - стоит ли эти панели разместить на одной форме или на нескольких (как сейчас)? Когда на разных формах, то при инициализации формы у меня значения элементов устанавливаются по дефолту (что очень удобно). Да и названия идентичных элементов совпадают - нет путаницы. Когда будет всё на одной форме, придётся немного повозится с их установкой. Что думаете?
← →
Ega23 © (2006-09-04 16:54) [1]Перенеси на фреймы.
← →
parovoZZ © (2006-09-05 15:17) [2]Хм, как вариант. Попробуем.
← →
zdm © (2006-09-05 15:33) [3]Не знаю попаду-ли в тему но вот тут пишу приложение и проблема похожая,,,,пошел следующим образом....создаешь форму->на ней PageControl -> в нем делаешь кучу NewPage-> при запуске приложения
procedure TForm_Osn.FormShow(Sender: TObject);
var i:integer;
begin
for i:=0 to PageControl1.ControlCount-1 do
begin
PageControl1.Pages[i].TabVisible:=false;
PageControl1.Pages[i].Visible:=false;
end;
PageControl1.Pages[0].Visible:=true;///////Pages[0].,сдесь и выбираешь что тебе открыть
end;
ну и на какие нибудь действия и говоришь, что if PageControl1.Pages[0].Visible =true then то-то то-то иначе если такой-то visible=true то другое
данные путь, чреват, запутанностью кода но экономит ресурсы, память ,,,,нервы
← →
Ega23 © (2006-09-05 15:42) [4]
> данные путь, чреват, запутанностью кода но экономит ресурсы,
> память ,,,,нервы
>
Данный путь чреват запутанностью кода, НЕ экономит ресурсы, НЕ экономит память, и, соответственно, НЕ экономит нервы.
← →
zdm © (2006-09-05 15:52) [5]Создание форм занимает больше ресурсов памяти, и напряжонности проца, чем одна, и даже с кучей tabshSheets, которые далаются невидимоми,,,, проверено
← →
Ega23 © (2006-09-05 16:04) [6]
> Создание форм занимает больше ресурсов памяти, и напряжонности
> проца, чем одна, и даже с кучей tabshSheets, которые далаются
> невидимоми,,,, проверено
А зачем их всех сразу создавать? Создавай по необходимости. И не форму, а Frame. И цепляй его на на свою одинокую панель.
А то, что ты написал - это изврат.
← →
zdm © (2006-09-05 16:15) [7]ega ----я не сдамся,,, если табшидов ,,, ну допустим не 10000000, а штук 10 то ресурсоемкоисть и скорость выполнения значительно выше чем последующее создание тез-же 10 форм, ega говорю-же проверено
← →
Ega23 © (2006-09-05 16:19) [8]
> ega ----я не сдамся,,, если табшидов ,,, ну допустим не
> 10000000, а штук 10 то ресурсоемкоисть и скорость выполнения
> значительно выше чем последующее создание тез-же 10 форм,
> ega говорю-же проверено
>
1. почувствуй разницу между TForm и TFrame.
2. Я НИКОГДА не поверю, что создать изначально 10 TTabSheet СО ВСЕМ СОДЕРЖИМЫМ менее ресурсоёмко, чем создавать по одному фрейму OnDemand (и убивать его, когда он перестанет быть нужным).
Советую проверить внимательнее.
← →
zdm © (2006-09-05 16:25) [9]Создавая заранее 10 табшидов, а тем более если в real-time по мере необходимости , это МЕНЬШЕ по всем понятиям, что форма, что frame
← →
zdm © (2006-09-05 16:30) [10]Повнимательней конечно проверю,,,
if не прав then
begin
Извиняюсь перед тобой;
Извиняюсь перед автором
else Аргументрируй
← →
Virgo_Style © (2006-09-05 16:39) [11]zdm © (05.09.06 16:25) [9]
по каким понятиям 10 меньше 1 ?
← →
zdm © (2006-09-05 16:48) [12]да 10 просто для примера.,, я поленился и создал несколько табшидов в design-time , а если их создовать в real-time и кодом отслеживать, то получится, что создана всего одна форма, на не есть один pagecontrol, и в нем по мере необходимости добавляются page-ики,,, не бросайте сразу камни , лубой вариант обкатывается. я просто очень быстро написал,,, можно и TabControl использовать и необходимые компоненты потом "дорисовывать",, вариантов много ,,, но мне этот понравился, а автор сам попробует и выберет тот, который ему больше понравился.
← →
Virgo_Style © (2006-09-05 17:21) [13]zdm © (05.09.06 16:48) [12]
создовать в real-time
Как-то в комиссию по изобретениям был представлен проект корабля, на котором установлена цистерна, заполненная водой.
По замыслу, если корабль садился на мель, вода выкачивалась из цистерны, и корабль снимался с мели.
Состоялся такой диалог:
- А не стоит ли поднять цистерну из трюма на палубу, чтобы вода сливалась самотеком?
- Хм, да, пожалуй, так будет лучше!
- Значит, во время плаванья она будет заполнена, а при снятии с мели пуста. А не проще ли вообще не заполнять ее?
- Э-э-э... ну... да.
- А тогда зачем она вообще нужна?
(по памяти, источник - "Техника - Молодежи").
Так вот, мы уже отказались от создания в design-time, теперь следующий вопрос - зачем создавать TabSheets и класть их на PageControl, если есть фреймы?
← →
zdm © (2006-09-05 17:52) [14]
> зачем создавать TabSheets и класть их на PageControl
ДА хрен его знает, погодите, я щас как раз эксрементирую,,,,,, может вы и правы......
← →
_Ламер_ (2006-09-05 23:15) [15]А как всё содержимое перекинуть на форму? Не по отдельности же кидать. Или всё расположить на панели и вместе с ней?
← →
Ega23 © (2006-09-06 09:18) [16]
> А как всё содержимое перекинуть на форму? Не по отдельности
> же кидать. Или всё расположить на панели и вместе с ней?
>
Frame.Parent:=Form1.Panel1;
← →
Плохиш © (2006-09-06 11:24) [17]
> Ega23 © (06.09.06 09:18) [16]
Это конечно, да :-) но я бы порекомендовал уважаемому _Ламер_ всё-таки прочитать что-нибуть для начала :-)
← →
Наиль © (2006-09-06 12:21) [18]Между прочим, всё не так просто.
Однажды мне пришлось решать подобную задачу.
В начале проекта я естествено воспользовался PageControl,
когда число окон стало возрастать я перешёл на Frame.
И практически тут же пришлось от него отказаться.
Представте себе, что размер фрейма должен изменяться вместе с формой (Align=alClient), а в верхней части фрейма находился Edit, от края до края. Т.к. у едита нет алигна, то естествено воспользовался Anchors. После этого поведение размеров Edit"а стало непредсказуемым (можете проверить).
Таким образом возник третий вариант. TStorageForm - моя форма с панелью StoragePanel. Остальные формы наследуются от TStorageForm, а на панели распалагается всё необходимое (в моём случае Edit). В основном модуле пишется что-то вроде Form2.StorageForm.Parent:=Form1.ContainerPanel. Чтобы это было возможно TStorageForm должна быть зарегестрирована.
Что касается PageControl"a, то следует избегать вложения их друг в друга. Даже, с отключенными закладками. Т.к. у каждого PageControl"a имеется бордюр, который нельзя убрать ни какими средствами. К сожалению, мне не удалось избежать подобной задачи, поэтому пришлось писать свой компонент - упрощеный PageControl, не имеющий закладок и бордюра.
← →
Ega23 © (2006-09-06 12:39) [19]
> Т.к. у едита нет алигна, то естествено воспользовался Anchors.
> После этого поведение размеров Edit"а стало непредсказуемым
> (можете проверить).
Только что проверил. Положил на форму TPanel с Align:=alTop; на неё положил TEdit, все Anchors выставил в True.
Никакого непредсказуемого поведения не увидел.
← →
parovoZZ © (2006-09-06 16:25) [20]
> Frame.Parent:=Form1.Panel1;
А чем плох этот вариант?
← →
Наиль © (2006-09-07 07:12) [21]Чуть не забрал свои обратно.
Мне с трудом удалось воспроизвести такую ситуацию, при которой размеры изменяются не адекватно. Делается это так:
1. Создаётся приложение с формой (File|New|Application)
2. Создаётся фрейм (File|New|Frame)
3. На фрейм кладётся Edit от края до края
4. Устанавливаютя Edit.Anchors в [akLeft,akTop,akRight]
5. Фрейм сужается (Width:100)
6. Сохраняем фрейм
7. Удаляем фрейм из проекта (Project|Remove From Project)
8. Добавляем фрейм в проект (Project|Add To Project)
Не знаю как у вас, а у меня загруженый фрейм не совпадает с сохранёным.
В основном с этой проблемой сталкиваюсь в DesignTime. Закрывал проект, на следующий день открывал, а вид фреймов уже не тот.
> > Frame.Parent:=Form1.Panel1;
> А чем плох этот вариант?
Отличный вариант, если у вас не возникает таких проблем, как у меня.
← →
Ega23 © (2006-09-07 09:25) [22]
> Не знаю как у вас, а у меня загруженый фрейм не совпадает
> с сохранёным.
Положи на фрейм панель с обтеканием alTop, а уже на неё клади Edit и выставляй ему все 4 якоря в True.
← →
_Ламер_ (2006-09-10 07:54) [23]А как уничтожить фрейм? У меня не получается убрать содержимое с родительской панели и в результате AV.
← →
Юрий Зотов © (2006-09-10 08:55) [24]> у едита нет алигна
Свойство Align появляется уже в TControl, так что у TEdit его просто не может не быть. Другое дело, что оно в protected - но это не помеха.
type
TFriendEdit = class(TEdit);
procedure TForm1.FormCreate(Sender: TObject);
begin
TFriendEdit(Edit1).Align := alTop
end;
← →
_Ламер_ (2006-09-11 21:10) [25]Ну так это, не подскажет ниХто, как освободить фрейм от чар родителя?
← →
Virgo_Style © (2006-09-11 21:14) [26]> [25] _Ламер_ (11.09.06 21:10)
> Ну так это, не подскажет ниХто, как освободить фрейм от
> чар родителя?
надо скастовать на него mirror до начала работы, а если не помогло - попробуй heal.
В терминах программирования - только после вас.
← →
_Ламер_ (2006-09-12 00:30) [27]
Frame.Parent:=Form1.Panel1;
А как теперь уничтожить frame?
← →
Virgo_Style © (2006-09-12 12:11) [28]Frame.Free ?
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.10.01;
Скачать: [xml.tar.bz2];
Память: 0.52 MB
Время: 0.015 c