![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Когда много панелей [D7, XP]
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