Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.06.2008, 00:01   #1
Михаил Юрьевич
Форумчанин
 
Аватар для Михаил Юрьевич
 
Регистрация: 25.12.2007
Сообщений: 661
Восклицание Edit по середине формы

Подскажите как сделать что бы Edit был всегда
посередине формы и при развернутом окне и при нормальном окне.
И при разном разрешении экрана.а то при другом разрешении экрана
Edit где то в углу.
За частые поиски был забанен во всех известных
поисковых системах!
Михаил Юрьевич вне форума Ответить с цитированием
Старый 28.06.2008, 00:07   #2
Ozerich
Студент 1 курса
Форумчанин Подтвердите свой е-майл
 
Аватар для Ozerich
 
Регистрация: 27.06.2008
Сообщений: 959
По умолчанию

Обрабатывай событие у формы OnResize;

И пиши в нем
Код:
edit1.left:=form1.width div 2;
C++(STL, QT, WinInet) / DHTML(CSS) / JavaScript / PHP Developer
Ozerich вне форума Ответить с цитированием
Старый 28.06.2008, 00:15   #3
Старовъръ
Форумчанин
 
Аватар для Старовъръ
 
Регистрация: 25.06.2008
Сообщений: 100
По умолчанию

А в Delphi нет что-то наподобие менеджеров компановки?
Старовъръ вне форума Ответить с цитированием
Старый 28.06.2008, 00:33   #4
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Про менеджеры компоновки не слышал, но вообще в Дельфи удобные средства размещения компонентов, есть панели и прочие контейнеры. Визуальная среда считается одной из лучших.

У каждого компонента есть свойства (якоря - anchors) привязки к одной из сторон или сразу к нескольким. Расположение - Align. Вручную делают только те, кто мало знаком со средой, лишь в некоторых случаях приходится расположение объектов на форме прописывать вручную.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 28.06.2008, 00:38   #5
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Цитата:
посередине формы и при развернутом окне и при нормальном окне.
Не знаю как в последних версиях, но раньше в Дельфи не было события максимайз и рестор из него, только минимайз. Нужно WinAPI сообщения юзать. Событие OnResize при разворачивании не генерируется.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 28.06.2008, 07:54   #6
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Если все якоря (anchors) установить в false, то положение компонента, при изменении размера формы, будет пропорционально первоначальному. Размести его точно посередине и он всегда будет там.
_Dmitry вне форума Ответить с цитированием
Старый 28.06.2008, 11:06   #7
Михаил Юрьевич
Форумчанин
 
Аватар для Михаил Юрьевич
 
Регистрация: 25.12.2007
Сообщений: 661
По умолчанию

Все выше перечисленные методы не помогли.В OnResize обрабатывал,также
при изменении формы Edit в стороне.Все якоря на false дают тот же результат.Обрабатывал в контейнерах,в частности в Panel, при разрешении
экрана 800:600 Edit уползает в право.Проектирую при разрешении 1280:960
За частые поиски был забанен во всех известных
поисковых системах!
Михаил Юрьевич вне форума Ответить с цитированием
Старый 28.06.2008, 12:51   #8
Баламут
Баламучу слегка...
Участник клуба
 
Аватар для Баламут
 
Регистрация: 01.11.2006
Сообщений: 1,585
По умолчанию

Сейчас проверил, вроде работает. Якоря все в false.
Код:
procedure TForm1.FormPaint(Sender: TObject);
var
  x, y: integer;
begin
  x := (Form1.ClientWidth div 2) - (Edit1.Width div 2);
  y := (Form1.ClientHeight div 2) - (Edit1.Height div 2);
  Edit1.Left := x;
  Edit1.Top := y;
end;
Баламут вне форума Ответить с цитированием
Старый 28.06.2008, 18:50   #9
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Delphi 7. Работает просто при Anchors := []. И всё.
Sibedir вне форума Ответить с цитированием
Старый 28.06.2008, 19:42   #10
Михаил Юрьевич
Форумчанин
 
Аватар для Михаил Юрьевич
 
Регистрация: 25.12.2007
Сообщений: 661
По умолчанию

Попробовал код Баламута,все якоря выставил в false.Пока не откомпилировано то все работает и при развернутом,и при нормальном окне,и за углы форму растягиваю,все нормально Edit по середине,а вот откомпилировал и запустил программу то опять Edit не по середине
За частые поиски был забанен во всех известных
поисковых системах!
Михаил Юрьевич вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужно чтобы Form2 открывался по середине Form1 diznt Помощь студентам 1 31.08.2008 03:37
Edit Editor Общие вопросы Delphi 10 25.06.2008 19:52
Edit Михаил Юрьевич Общие вопросы Delphi 4 31.05.2008 23:05
Edit Nikolaeva Компоненты Delphi 3 23.05.2008 09:36
Edit niva622 Помощь студентам 10 06.09.2007 17:36