Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
15-1157694691
Рамиль
2006-09-08 09:51
2006.10.01
Однако.


15-1157972190
SergP
2006-09-11 14:56
2006.10.01
Как сделать чтобы винда сама прописывала маршруты?


15-1157662081
Offtoper
2006-09-08 00:48
2006.10.01
Просто оффтоп


4-1148645494
snikers
2006-05-26 16:11
2006.10.01
Работа с МЕМО чужого окна и имитация клика или popup


2-1158094935
Siiiid
2006-09-13 01:02
2006.10.01
прозрачная форма





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