startinger
Гость
|
|
« : 07-10-2003 13:17 » |
|
Каким образом можно сделать так, чтобы заголовок формы отображался посередине?
|
|
|
Записан
|
|
|
|
Александр
Опытный
Offline
Пол:
Угадай кто?
|
|
« Ответ #1 : 07-10-2003 14:33 » |
|
Попробуй пробелами. А ещё можно написать программу которая автоматически добавляет количество пробелов в зависимости от ширины формы и количества символов в заголовке.
|
|
|
Записан
|
Бороться и искать, найти и перепрятать.
|
|
|
x77
Модератор
Offline
Пол:
меняю стакан шмали на обратный билет с Марса.
|
|
« Ответ #2 : 07-10-2003 15:20 » |
|
а ещё можно снести заголовок (BorderStyle = bsNone) и отрисовать вообще какой угодно заголовок.
|
|
|
Записан
|
|
|
|
startinger
Гость
|
|
« Ответ #3 : 07-10-2003 15:27 » |
|
x77, скажи поподробнее...
|
|
|
Записан
|
|
|
|
x77
Модератор
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
Молодой специалист
Offline
|
|
« Ответ #8 : 11-01-2004 13:20 » |
|
А откуда вообще такая проблема взялась? Просто я глубоко убежден, что Такие выкруты - уже перебор. Программа должна быть в первую очередь функциональной, а красота - дело второе. К тому же такая мелочь... Кому это надо? :?: Сделать, конечно, можно, но соотношение время(затраченные усилия)/реальная польза будет не очень хорошим. ИМХО...
|
|
|
Записан
|
|
|
|
Dimyan
Гость
|
|
« Ответ #9 : 12-01-2004 05:55 » |
|
Archangel, согласен!!! За частую тратя безмерные усилия на красоту проги, программист не уделяет должного внимания функциональности, и грош цена потом этой несказанно красивой программе ИМХО!!!
|
|
|
Записан
|
|
|
|
x77
Модератор
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
Модератор
Offline
Пол:
меняю стакан шмали на обратный билет с Марса.
|
|
« Ответ #12 : 13-01-2004 06:58 » |
|
DimOC, угу... прогнал. каюсь
|
|
|
Записан
|
|
|
|
|