Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.07.25;
Скачать: [xml.tar.bz2];

Вниз

как сделать,чтобы дочерняя форма сохраняла размер   Найти похожие ветки 

 
Андрусь   (2002-07-11 12:20) [0]

Привет всем! Возникла такая проблемка. Может кто сталкивался - подскажите. Есть MDI приложение. Как сделать,чтобы дочерние окна оставались такого же размера как и на этапе разработки приложения. Изменение размера на FormCreate нежелательно - на форме нах. элементы,размер которых зависит от размера формы,и прописывать их размеры тоже не хотелось бы. Я бы сказал,что скорее даже основная проблема в том ,что при изменении размера окна размеры и позиции прикреплённых элементов не изменяются.
Зараннее спасибо.


 
Skier   (2002-07-11 12:22) [1]

>Андрусь

> Как сделать,чтобы дочерние окна оставались такого же размера
> как и на этапе разработки приложения.


Ты хочешь чтобы, размер формы в run-time не мог изменятся,
так ???


 
Андрусь   (2002-07-11 12:26) [2]

Не совсем понял твой вопрос: я хочу,чтобы дочерняя форма в рантайме и при выполнении была одного размера.


 
Андрусь   (2002-07-11 12:52) [3]

Почему то winda меняет размер childa по своему усмотрению. как этого избежать - вот в чём вопрос.


 
Skier   (2002-07-11 12:57) [4]

>Андрусь
А что если в OnShow задавать размеры child-a ?


 
Андрусь   (2002-07-11 13:10) [5]

Я же говорил выше,что основная проблема - прижатые элементы (с помощью anchors).Т.е. я изменяю размер формы их размер,позиция меняется. У меня много форм и не хотелось бы каждому элементу на FormShow либо FormCreate вешать обработчик с переопределением свойств и позиций.


 
Skier   (2002-07-11 13:12) [6]

>Андрусь


> с помощью anchors


А что Align не подходит что ли ?


 
Андрусь   (2002-07-11 13:17) [7]

Честно говоря не совсем - на форме в ряд 2 элемента - TEdit в ряд. Один фиксированного размера,прижат к правому краю,другой же - при изменении размера формы должен растягиваться вместе с ней.


 
Skier   (2002-07-11 13:33) [8]

>Андрусь

Отмени все anchors у TEdit-ов, а для формы напиши :


procedure TForm1.WMSize(var Message: TWMSize);
begin
inherited;
Edit1.Left := ClientWidth - Edit1.Width;
Edit2.Left := 0;
Edit2.Width := ClientWidth - Edit1.Width;
end;


 
Андрусь   (2002-07-11 13:47) [9]

Я же писал - много форм и не хочется для каждой прописывать. Хотелось бы разобраться кооординально. Меня устраивает как работает anchors. Чего винда меняет размер окна сразу,причем пускай бы меняла - черт с ним. Почему ж при этом не меняются элементы.


 
Skier   (2002-07-11 13:55) [10]

>Андрусь
А как ты собираешься через anchors сделать так чтобы второй твой TEdit растягиваться вместе с формой ?


 
Андрусь   (2002-07-11 14:02) [11]

Чтобы он растягивался вправо вместе с формой 3 первых свойства в true.


 
Skier   (2002-07-11 14:08) [12]

>Андрусь
IMHO, это не будет работать так чтобы компонент растягивался.

Проведи эксперемент :

-Создай новое приложение
-Помести на форму TEdit3
-Поставь первые 3 свойства anchors в True.
-Поизменяй размеры формы.

О результатах пиши...


 
Skier   (2002-07-11 14:12) [13]

>Андрусь
Ты хочешь чтобы TEdit растягивался как если бы
ему задали Align := alClient ???


 
Андрусь   (2002-07-11 14:19) [14]

Не совсем как alClient.А так чтобы расстояния от правого края эл. до края формы и от левого до левого края не изменялись.
Но суть то не в этом. Чего размер childа меняется... :-{


 
Skier   (2002-07-11 14:37) [15]

>Андрусь

> Чего размер childа меняется... :-{


Так он же в run-time "впихивается" в main-форму :(


 
jonik pegas   (2002-07-11 14:47) [16]

>Андрусь
Тоже делал как у тебя-на MDI childe лежали Editы выровненные по 3
первым anchor только у меня они еще лежали на фрейме и выравнивались по нему-так там глюки вообще задолбали-edit делали width больше parent frame и никакими средствами не уменьшались. Плюнул я на это дело и отключил выравнивание справа
чтобы расстояние от правого краяя оставалось неизменным придется или делать вручную см Skier или можно попробовать на форму кинуть сетку TstringGrid и отрисовывать в нем edit по OnDrawCell.
А что касается изменения всех форм то пропиши код Skier в одной и наследуй другие от нее


 
Андрусь   (2002-07-11 14:57) [17]

> jonik pegas ©
Как мне прописать для всех форм - элементы разные,поразному прилипают.Придётся писать каждый раз либо делать компоненты по-разному прижатых элементов - грустно...
> Skier ©
Чего размер чаелда меняется при вызове из гл. формы. Посмотри стандартное MDI,там чаелд махонький такой,но какого-то при вызове он приобретает не свои размеры :-{ ...


 
FLAME   (2002-07-11 15:26) [18]

MDI - вообще не лучший интерфейс IMHO.
А какие значения установлены у MDIChild для свойств WindowState, Position? Наверное стоит поставить wsNormal и poDefault. Еще видимо стоит добавить BorderStyle=bsSingle, чтобы размер формы не мог меняться. В обработчике сообщения на изменение размера формы, который можно сделать общим для всех Child-форм, запретить изменение размера.
А еще интересно каким методом у тебя создаются Child-формы?


 
Андрусь   (2002-07-11 15:45) [19]

>FLAME
Всё стоит как написано,создание формы

Child := TMDIChild.Create(Application);

Насчёт того,что MDI не лучший интерфейс согласен,но так надо - есть вполне независимые друг от друга формы,с которыми юзвер может работать как пожелает.


 
Skier   (2002-07-11 16:07) [20]

>Андрусь


> есть вполне независимые друг от друга формы,с которыми юзвер
> может работать как пожелает


И тебе обязательно для этого MDI - интерфейс ?
(кстати насколько я помню сама Microsoft не рекомендует его
использовать (жрёт много ресурсов) )


 
Андрусь   (2002-07-11 16:24) [21]

С ресурсами - вроде разобрался - через пакеты. Но такой интерфейс обязателен


 
Skier   (2002-07-11 16:32) [22]

>Андрусь
:(((


 
Андрусь   (2002-07-11 16:38) [23]

Ну я просил объяснить - чего винда так делает и как избежать,а вышло потрепаться.Прям как в Аське


 
Proton   (2002-07-11 23:02) [24]

вот посмотри вот это
Represents the size and placement of the form.

type TPosition = (poDesigned, poDefault, poDefaultPosOnly, poDefaultSizeOnly,

poScreenCenter, poDesktopCenter, poMainFormCenter, poOwnerFormCenter);



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.07.25;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.005 c
1-81262
V.Turecky
2002-07-14 15:30
2002.07.25
Как можно записать строку, содержащию знак ( )?


1-81328
perseptron
2002-07-12 18:04
2002.07.25
Срочно!


1-81249
Beeper
2002-07-12 23:01
2002.07.25
Как вшивать ресурсы в ехе-шник


14-81477
SashaK
2002-06-28 20:20
2002.07.25
помогите написать снифер


6-81401
Krok
2002-05-13 14:23
2002.07.25
Как можно программно получить список компьютеров в лок.сети?





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