Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Когда много панелей [D7, XP]


Страницы:   1 2

parovoZZ ©   (2006-09-04 16:49:00) 

Здарова

Вопрос

Сейчас у меня много форм и все показываю модально (из одной модальной вызываю другую и тоже модально бррррр). Хочу всё содержимое этих форм перенести на панели, а панели показывать в одном месте. Так вот вопрос - стоит ли эти панели разместить на одной форме или на нескольких (как сейчас)? Когда на разных формах, то при инициализации формы у меня значения элементов устанавливаются по дефолту (что очень удобно). Да и названия идентичных элементов совпадают - нет путаницы. Когда будет всё на одной форме, придётся немного повозится с их установкой. Что думаете?


Virgo_Style   (2006-09-12 12:11:00) [1]

Frame.Free ?


_Ламер_   (2006-09-12 00:30:00) [2]

Frame.Parent:=Form1.Panel1;

А как теперь уничтожить frame?


Virgo_Style   (2006-09-11 21:14:00) [3]

> [25] _Ламер_   (11.09.06 21:10)
> Ну так это, не подскажет ниХто, как освободить фрейм от
> чар родителя?


надо скастовать на него mirror до начала работы, а если не помогло - попробуй heal.

В терминах программирования - только после вас.


_Ламер_   (2006-09-11 21:10:00) [4]

Ну так это, не подскажет ниХто, как освободить фрейм от чар родителя?


Юрий Зотов   (2006-09-10 08:55:00) [5]

>  у едита нет алигна

Свойство Align появляется уже в TControl, так что у TEdit его просто не может не быть. Другое дело, что оно в protected - но это не помеха.

type
 TFriendEdit = class(TEdit);

procedure TForm1.FormCreate(Sender: TObject);
begin
 TFriendEdit(Edit1).Align := alTop
end;


_Ламер_   (2006-09-10 07:54:00) [6]

А как уничтожить фрейм? У меня не получается убрать содержимое с родительской панели и в результате AV.


Ega23   (2006-09-07 09:25:00) [7]


> Не знаю как у вас, а у меня загруженый фрейм не совпадает
> с сохранёным.


Положи на фрейм панель с обтеканием alTop, а уже на неё клади Edit и выставляй ему все 4 якоря в True.


Наиль   (2006-09-07 07:12:00) [8]

Чуть не забрал свои обратно.
Мне с трудом удалось воспроизвести такую ситуацию, при которой размеры изменяются не адекватно. Делается это так:
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;
> А чем плох этот вариант?

Отличный вариант, если у вас не возникает таких проблем, как у меня.


parovoZZ   (2006-09-06 16:25:00) [9]


> Frame.Parent:=Form1.Panel1;

А чем плох этот вариант?


Ega23   (2006-09-06 12:39:00) [10]


> Т.к. у едита нет алигна, то естествено воспользовался Anchors.
>  После этого поведение размеров Edit'а стало непредсказуемым
> (можете проверить).


Только что проверил. Положил на форму TPanel с Align:=alTop; на неё положил TEdit, все Anchors выставил в True.
Никакого непредсказуемого поведения не увидел.


Наиль   (2006-09-06 12:21:00) [11]

Между прочим, всё не так просто.
Однажды мне пришлось решать подобную задачу.
В начале проекта я естествено воспользовался PageControl,
когда число окон стало возрастать я перешёл на Frame.
И практически тут же пришлось от него отказаться.
Представте себе, что размер фрейма должен изменяться вместе с формой (Align=alClient), а в верхней части фрейма находился Edit, от края до края. Т.к. у едита нет алигна, то естествено воспользовался Anchors. После этого поведение размеров Edit'а стало непредсказуемым (можете проверить).
Таким образом возник третий вариант. TStorageForm - моя форма с панелью StoragePanel. Остальные формы наследуются от TStorageForm, а на панели распалагается всё необходимое (в моём случае Edit). В основном модуле пишется что-то вроде Form2.StorageForm.Parent:=Form1.ContainerPanel. Чтобы это было возможно TStorageForm должна быть зарегестрирована.

Что касается PageControl'a, то следует избегать вложения их друг в друга. Даже, с отключенными закладками. Т.к. у каждого PageControl'a  имеется бордюр, который нельзя убрать ни какими средствами. К сожалению, мне не удалось избежать подобной задачи, поэтому пришлось писать свой компонент - упрощеный PageControl, не имеющий закладок и бордюра.


Плохиш   (2006-09-06 11:24:00) [12]


> Ega23 ©   (06.09.06 09:18) [16]

Это конечно, да :-) но я бы порекомендовал уважаемому _Ламер_всё-таки прочитать что-нибуть для начала :-)


Ega23   (2006-09-06 09:18:00) [13]


> А как всё содержимое перекинуть на форму? Не по отдельности
> же кидать. Или всё расположить на панели и вместе с ней?
>


Frame.Parent:=Form1.Panel1;


_Ламер_   (2006-09-05 23:15:00) [14]

А как всё содержимое перекинуть на форму? Не по отдельности же кидать. Или всё расположить на панели и вместе с ней?


zdm   (2006-09-05 17:52:00) [15]


> зачем создавать TabSheets и класть их на PageControl


ДА хрен его знает, погодите, я щас как раз эксрементирую,,,,,, может вы и правы......


Virgo_Style   (2006-09-05 17:21:00) [16]

zdm ©   (05.09.06 16:48) [12]
создовать в real-time


Как-то в комиссию по изобретениям был представлен проект корабля, на котором установлена цистерна, заполненная водой.
По замыслу, если корабль садился на мель, вода выкачивалась из цистерны, и корабль снимался с мели.
Состоялся такой диалог:
- А не стоит ли поднять цистерну из трюма на палубу, чтобы вода сливалась самотеком?
- Хм, да, пожалуй, так будет лучше!
- Значит, во время плаванья она будет заполнена, а при снятии с мели пуста. А не проще ли вообще не заполнять ее?
- Э-э-э... ну... да.
- А тогда зачем она вообще нужна?

(по памяти, источник - "Техника - Молодежи").

Так вот, мы уже отказались от создания в design-time, теперь следующий вопрос - зачем создавать TabSheets и класть их на PageControl, если есть фреймы?


zdm   (2006-09-05 16:48:00) [17]

да 10  просто для примера.,, я поленился и создал несколько табшидов в design-time , а если их создовать в real-time и кодом отслеживать, то получится, что создана всего одна форма, на не есть один pagecontrol, и в нем по мере необходимости добавляются page-ики,,, не бросайте сразу камни , лубой вариант обкатывается. я просто очень быстро написал,,, можно и TabControl использовать и необходимые компоненты потом "дорисовывать",, вариантов много ,,, но мне этот понравился, а автор сам попробует и  выберет тот, который ему больше понравился.


Virgo_Style   (2006-09-05 16:39:00) [18]

zdm ©   (05.09.06 16:25) [9]
по каким понятиям 10 меньше 1 ?


zdm   (2006-09-05 16:30:00) [19]

Повнимательней конечно проверю,,,
if не прав then
begin
   Извиняюсь перед тобой;
   Извиняюсь перед автором
else Аргументрируй


zdm   (2006-09-05 16:25:00) [20]

Создавая заранее 10 табшидов, а тем более если в real-time по мере необходимости , это МЕНЬШЕпо всем понятиям, что форма, что frame


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо