|
Delta
|
|
Определение высоты формы.07.02.2008, 19:49. Показов 4281. Ответов 20
Метки нет (Все метки)
Господа, помогите, перемкнуло.
В форме есть меню, toolbar и RichTextBox. Нужно: сохранять размеры RTF-box при изменении размеров формы. Прицепился к событию Resize, с шириной проблем нет (пока toolbar вверху), но в высотой - проблема. Высота формы ведь включает и высоту titlebar формы, и меню. А как определить высоту только клиентсой области, где и размещается RTF-box? Высоту toolbar я и сам додумался отнять, а как выяснить высоту titlebar формы и ее меню? Всех заранее благодарю и прошу сильно не ругать чайника, если вопросы покажутся глупыми. |
|
| 07.02.2008, 19:49 | |
|
Ответы с готовыми решениями:
20
Определение высоты поддеревьев Определение высоты треугольника |
|
0 / 0 / 0
Регистрация: 26.06.2007
Сообщений: 59
|
|
| 08.02.2008, 12:36 | |
|
А помне, не надо вычислять высоту titlebar.
Просто в коде, где вычитаешь высоту RTF-box, вставь поправочный коэффициент или просто число, например, отнимай еще 300, 350 и т.д. методом незначительного подбора и все получится путем!!! Успехов
0
|
|
|
Delta
|
|
| 08.02.2008, 14:44 | |
|
За ответ спасибо, но так делать я не хочу.
Стоит только измениться разрешению экрана или еще чему-нибудь, и про этот коэффициент можно забыть. До этого я и сам додумался! Может, можно как-то определить высоту titlebar и меню? Я не верю, что невозможно. |
|
|
0 / 0 / 0
Регистрация: 16.07.2007
Сообщений: 458
|
|
| 08.02.2008, 15:07 | |
|
Положи на форму Picture, убери border и сделай align=left (не помню точно, вроде align), потом в метод Form1_Resize добавь код который всегд будет растягивать эту Picture по ширине формы, точно также как ты делаешь с RTF-Box... На Picture ложи все остальные контролы, RTF и пр...
0
|
|
|
Delta
|
|
| 08.02.2008, 16:27 | |
|
О, это уже решение получше, спасибо за совет, как-то не допер сам. Только PictureBox пользоваться Microsoft не рекомендует - слишком много ресурсов ест. Попробую использовать Frame Control.
Но неужели нельзя в форме опеределить величину коиентсой области, высоту меню и titlebar?! Я все равно не оставляю надежду. Сейчас закончу ListView Control и займусь Form Object. Может, чего найду в MSDN. не может быть, чтобы не было другого решения. Еще раз спасибо borm и Voldemar! |
|
|
Delta
|
|
| 08.02.2008, 16:39 | |
|
Ага, не тут-то было. Frame Control в отличии от PictureBox не имеет св-ва Align.
Придется все же высоту формы определить. Деваться некуда. |
|
|
0 / 0 / 0
Регистрация: 16.07.2007
Сообщений: 458
|
|
| 08.02.2008, 19:22 | |
|
значит все-таки надо как я сказал, причем даже если бы и можно было использовать фрейм, то рамка была бы видна...
0
|
|
|
0 / 0 / 0
Регистрация: 16.07.2007
Сообщений: 458
|
|
| 08.02.2008, 19:24 | |
|
P.S.
кстати я бы делал как тебе советовали выше - прибавлял какое-нибудь фиксированное число 200 или 300, потому что при изменении разрешения экрана, это не должно повлиять на эту величину
0
|
|
|
prince
|
|
| 08.02.2008, 19:37 | |
|
Hi, Вы что не знаете о Win API.
Есть такая функция GetClientRect, она возвращает высоту клиентской области окна без заголовка, меню и по-моему ToolBar-а. Дальше сами сообразите... я так думаю. Удачи. |
|
|
Delta
|
|
| 08.02.2008, 19:43 | |
|
borm, при использовании Frame рамка не видна, ее можно убрать, это не проблема. Одна проблема - она не центрируется, как PictureBox!
Правда, с PictureBox то же все было бы не так просто (как я думаю). Ты прав, коэффициент вроде бы не должен поменяться при изменении разрешения экрана - высота формы измеряется в твипах, а они Device-undepended. Но вдруг далее в коде придется поменять режим с твипов на пикселы или еще как-нибудь? Вот придет моему коэффициенту конец. А не хотелось бы. Я все же не верю, что нельзя определить высоту клиентской обл. в форме. Буду копать дальше. Не хочу вводить в контейнер еще один контейнер! Причем только из-за размера. Если чего узнаешь в этом направлении, не сочти за труд черкнуть. Уже иду домой, смогу ответить только в понедельник! |
|
|
Delta
|
|
| 08.02.2008, 19:45 | |
|
О! Точно! Поробую GetClientRect! Я ее еще по VC++ помню!
Обязательно попробую, но не сегодня! Спасибо! Может, это решение! |
|
|
0 / 1 / 3
Регистрация: 27.03.2012
|
||||||
| 08.02.2008, 20:06 | ||||||
|
а почему нельзя проще-то?
0
|
||||||
|
Delta
|
|
| 10.02.2008, 10:30 | |
|
smalig,
спасибо, что подключились, но: RichTextBox.Top присваивается значение либо 0 (начало клиентской обл. контейнера, где он находится. В данном случае - левый верхний угол формы - сразу под titlebar и меню, если оно есть), либо toolbar.Height (если toolbar есть и находится вверху). А Height формы - ПОЛНАЯ ее высота, включая высоту titlebar и меню. Поэтому, если считать высоту RTFBox так, как предлагаете Вы, то он будет постоянно на 2-3 сроки за пределами формы по нижнему краю. Попробуйте - я с самого начала на эти грабли наступил. Если бы toolbar был сбоку или внизу, это так рассчитать ширину можно было бы. Я все же попробую то, что предложил prince. |
|
|
Delta
|
|
| 10.02.2008, 13:50 | |
|
Мужики,
даже API-я GetClientRect не помогла. Она возращает то же, что и Form.Height, один в один, только в vbPixels. Есть еще какие-нибудь идеи, кроме коэффициента? |
|
|
0 / 0 / 0
Регистрация: 26.03.2007
Сообщений: 238
|
|
| 10.02.2008, 14:07 | |
|
getwindowrect -апишная функция
0
|
|
|
0 / 1 / 3
Регистрация: 27.03.2012
|
|
| 10.02.2008, 14:18 | |
|
Если с тулбар, то:
Private Sub Form_Resize() RichTextBox1.Height = Me.ScaleHeight - RichTextBox1.Top - ToolBar1.Height End Sub по-моему все как надо работает... ?!
0
|
|
|
Delta
|
|
| 10.02.2008, 14:33 | |
|
Мужики,
всем спасибо, я сейчас должен срочно смыться, если можно, вернемся к теме завтра. Не уверен, что заеду на работу сегодня. Я сегодня попробую еще раз что вы предложили. |
|
|
Delta
|
|
| 10.02.2008, 14:48 | |
|
Кажется, решили проблему!
smalig! Тебе отдельное спасибо! Все дело в том, что я использовал Form1.Height, а не Form1.ScaleHeight!!! Еще раз спасибо всем за участие. Простите чайника, что стоколько времени у вас отнял. Просто глубоко разобраться с формой и режимами отображения не успел. Вопросы еще будут, так что не забывайте Deltу! |
|
|
eddy
|
|
| 10.02.2008, 17:33 | |
|
Form1.Height - высота формы, включая TitleBar
Form1.ScaleHeight - высота формы без TitleBar |
|
|
Delta
|
|
| 10.02.2008, 17:41 | |
|
eddy,
спасибо и тебе за совет, вроде решили проблему, smalig посказал как правильно, теперь и ты. Я делал ошибку, вставляя вместо ScaleHeight просто Height. Читая документацию MSDN никак не мог въехать в разницу между этими двумя св-вами. Решил, что ScaleHeight связана с изменением координат и пока в нее не полез. А она вот те на - вылезла. Ты не мог бы в двух словах описать разницу между этими property, кроме того ScaleHeight - высота без titlebar и меню? Или в интернет есть где-то описание, кроме как на сайте MSDN? |
|
| 10.02.2008, 17:41 | |
|
Помогаю со студенческими работами здесь
20
Определение ширины и высоты документа Определение ширины и высоты картинки Бинарное дерево поиска: определение высоты Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|