Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.58/19: Рейтинг темы: голосов - 19, средняя оценка - 4.58
Delta

Определение высоты формы.

07.02.2008, 19:49. Показов 4281. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Господа, помогите, перемкнуло.

В форме есть меню, toolbar и RichTextBox. Нужно: сохранять размеры RTF-box при изменении размеров формы. Прицепился к событию Resize, с шириной проблем нет (пока toolbar вверху), но в высотой - проблема. Высота формы ведь включает и высоту titlebar формы, и меню. А как определить высоту только клиентсой области, где и размещается RTF-box? Высоту toolbar я и сам додумался отнять, а как выяснить высоту titlebar формы и ее меню?

Всех заранее благодарю и прошу сильно не ругать чайника, если вопросы покажутся глупыми.
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.02.2008, 19:49
Ответы с готовыми решениями:

Автоматическое изменение высоты сразу нескольких элементов управления при изменении высоты формы
Здравствуйте! Подскажите пожалуйста, возможно ли настроить автоматическре изменение высоты сразу трёх элементов управления при изменении...

Определение высоты поддеревьев
Вобщем, есть код, который выполняет поворот бинарного дерева(не бинарное дерево поиска). Но проблема в том, что у меня неправильно ищется...

Определение высоты треугольника
Здравствуйте. Дано задание составить блок-схему по задаче. Задача ниже. Определить высоту треугольника, если его площадь равна S,...

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
а почему нельзя проще-то?
Code
1
2
3
Private Sub Form_Resize()
RichTextBox1.Height = Me.ScaleHeight - RichTextBox1.Top
End Sub
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?
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.02.2008, 17:41
Помогаю со студенческими работами здесь

Определение высоты страницы
Здравствуйте, подскажите пожалуйста. Я вот хочу сделать на странице якорь("Вверх"), который будет появляться на странице если высота...

Определение высоты точки
Добрый день! Есть две точки: a ({x}_{1};{y}_{1}; 0) , b ({x}_{2};{y}_{2}; {z}_{2}) . Найти {z}_{2}.

Определение ширины и высоты документа
Как можно определить ширину и высоту документа в пикселях, а также обрабатывать событие изменения размеров окна?

Определение ширины и высоты картинки
Столкнулся с такой проблемой... загружаю разные по ширене и высоте картинки приходится вручную вводить ширину и высоту... А можно ли...

Бинарное дерево поиска: определение высоты
помогите, пожалуйста, с задачей на Delphi: "Реализовать бинарное дерево поиска с интерфейсом для добавления, удаления узлов, и печати, с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
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(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru