Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Заголовок формы  (Прочитано 14161 раз)
0 Пользователей и 1 Гость смотрят эту тему.
startinger
Гость
« : 07-10-2003 13:17 » 

Каким образом можно сделать так, чтобы заголовок формы отображался посередине?
Записан
Александр
Опытный

kz
Offline Offline
Пол: Мужской
Угадай кто?


WWW
« Ответ #1 : 07-10-2003 14:33 » 

Попробуй пробелами. А ещё можно написать программу которая автоматически добавляет количество пробелов в зависимости от ширины формы и количества символов в заголовке.
Записан

Бороться и искать, найти и перепрятать.
x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #2 : 07-10-2003 15:20 » 

а ещё можно снести заголовок (BorderStyle = bsNone) и отрисовать вообще какой угодно заголовок.
Записан

startinger
Гость
« Ответ #3 : 07-10-2003 15:27 » 

x77, скажи поподробнее...
Записан
x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #4 : 07-10-2003 15:34 » 

у формы есть свойство - BorderStyle. если установить его в bsNone, то на экране будет отображаться только её клиентская часть. соответственно, ты можешь, например, нарисовать такой заголовок, как тебе нравится, сохранить его в битмап, положить этот битмап на верхнюю часть формы, бросить на него пару кнопок (закрытие, минимизация, пр.) и т.д. единственная проблема будет с изменением размеров, тебе придётся руками отлавливать сообщения от мыши и реализовывать ресайзинг и перетаскивание.
Записан

Aleksey V.P.
Гость
« Ответ #5 : 11-11-2003 07:20 » 

Теперь то же самое, только для MDIChild окна :twisted:
Записан
DimOC
Гость
« Ответ #6 : 10-01-2004 20:14 » 

Немного не согласен с х77:
Цитата
единственная проблема будет с изменением размеров, тебе придётся руками отлавливать сообщения от мыши и реализовывать ресайзинг и перетаскивание.

С перетаскиванием самому... тут уж ничего не поделать.
А изменение размеров... все что хочешь что-бы было на "заголовке окна" бросай на TPanel... ее настраивай и все далее будет автоматом без всякого кода. Для сворачивания, развертывания и закрытия - по одной команде на каждую кнопочку.
Записан
Dimyan
Гость
« Ответ #7 : 11-01-2004 05:43 » 

DimOC,  вот тебе перетаскивание за любое место формы:
Код:
void __fastcall TForm1::FormMouseDown(TObject *Sender, 
      TMouseButton Button,
      TShiftState Shift, int X, int Y)
{
// Перетаскивание окна за любое его место!!!!!!!!!!!!!!!!!!!
     const int SC_DRAGMOVE = 0xF012;//???
        if(WindowState != wsMaximized)
        { //Чтобы не таскать развернутое
                ReleaseCapture(); //
                Perform(WM_SYSCOMMAND, SC_DRAGMOVE, 0);
        } //if(WindowState != wsMaximized)
}
« Последнее редактирование: 20-11-2007 17:27 от Алексей1153++ » Записан
Mouse
Молодой специалист

ru
Offline Offline

« Ответ #8 : 11-01-2004 13:20 » 

А откуда вообще такая проблема взялась? Просто я глубоко убежден, что Такие выкруты - уже перебор. Программа должна быть в первую очередь функциональной, а красота - дело второе. К тому же такая мелочь... Кому это надо?  :?:
Сделать, конечно, можно, но соотношение время(затраченные усилия)/реальная польза будет не очень хорошим. ИМХО...
Записан
Dimyan
Гость
« Ответ #9 : 12-01-2004 05:55 » 

Archangel,  согласен!!!
За частую тратя безмерные усилия на красоту проги, программист не уделяет должного внимания функциональности, и грош цена потом этой несказанно красивой программе ИМХО!!!
Записан
x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #10 : 12-01-2004 08:51 » 

DimOC, если уж лезть в api, то существует сообщение NCPaint для отрисовки не-клиентской части формы. тогда не надо геморроиться с перетаскиванием. которое, кстати, на дельфи выглядит совершенно иначе, чем приведённый тобой код - там в protected формы надо дописать процедуру с ключевым словом message, повесив её на WM_NCHITTEST. это более корректно, чем отлавливать нажатия педалей Улыбаюсь

Archangel, варианты с borderstyle и wm_ncpaint затрат практически не требуют. просто во втором случае надо уметь работать с api.
Записан

DimOC
Гость
« Ответ #11 : 13-01-2004 05:34 » 

Прям таки заговор противоDimOCовских сил (один шлет зачем-то мне код, другой обвиняет в том, что код совершено не такой  Я шокирован! ) или прошедшие новогодние праздники мешают товарищам/господам сосредоточиться. Отлично

Теперь по пунктам:
For x77: код был написан Dimyan, а не мной. все обвинения отвергаю.   Улыбаюсь
For Dimyan: спасибо, конечно, за ваш код, но почему он адресован мне :? , может из-за легкого сходства наших ников?
Записан
x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #12 : 13-01-2004 06:58 » 

DimOC, угу... прогнал. каюсь Улыбаюсь
Записан

Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines