Вниз
Скачать: CL | DM;

Когда много панелей   Найти похожие ветки 

← →
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 вся ветка

Скачать: CL | DM;



Память: 0.52 MB
Время: 0.035 c
15-1158158519
Vlad Oshin
2006-09-13 18:41
2006.10.01
нашел письмо


1-1156152002
Makhanev Alexander
2006-08-21 13:20
2006.10.01
нужно запустить процесс под сессиями юзеров terminal services


15-1157827391
МП3плеер
2006-09-09 22:43
2006.10.01
mp3 Английский


1-1155883673
brother
2006-08-18 10:47
2006.10.01
TWebBrowser


2-1157812850
Juri
2006-09-09 18:40
2006.10.01
Как программно узнать день недели любой даты?




   Наверх