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

Не срабатывает центровка контроллов по ширине формы

11.10.2014, 21:52. Показов 1688. Ответов 29
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!
Поясните, плз, почему не срабатывает центровка контроллов по ширине формы?
На форме два PictureBox (один в другом)
(не смейтесь над ремарками - пользуюсь редко - забывается ))
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Private Sub Form_Load()
'открываем окно на весь экран
Me.WindowState = vbMaximized
 
'режим задания размеров в пикселях
Me.ScaleMode = vbPixels
 
'ширина боксов по ширине картинки и высоте формы
Picture1.Width = 450
Picture2.Width = 450
 
Picture1.Height = Form1.Height
Picture2.Height = Form1.Height
 
'выравнивание боксов по верху формы
Picture1.Top = 0
Picture2.Top = 0
 
 
'выравнивание боксов по ширине формы
Picture1.Move (Form1.ScaleWidth - Picture1.Width) / 2
Picture2.Move (Picture1.Width - Picture1.Width) / 2
 
 
End Sub
Спасибо за внимание.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.10.2014, 21:52
Ответы с готовыми решениями:

Постоянная центровка формы
Возможно ли реализовать, после каждого изменения размера формы, возвращать ее в центр экрана?

Word и центровка формы
В свойствах формы, стоит StartPosition = CenterScreen. В коде я пробегаюсь по нескольким word файлам, редактируя их. И не могу понять...

Центровка формы со значениями из AJAX запроса
Есть всплывающие окно, которое получает содержимое с сервера по AJAX, данные успешно получаются, но окно надо как-то центрировать по...

29
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
11.10.2014, 22:17
Цитата Сообщение от SAI777 Посмотреть сообщение
почему не срабатывает центровка контроллов по ширине формы
Загрузка формы еще не закончена, а Вы уже по ней равняете контролы. Непорядочек
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Option Explicit
 
Private Sub Form_Load()
'открываем окно на весь экран
Me.WindowState = vbMaximized
 
'режим задания размеров в пикселях
Me.ScaleMode = vbPixels
Picture1.ScaleMode = vbPixels
 
'ширина боксов по ширине картинки и высоте формы
Picture1.Width = 450
Picture2.Width = 450
 
Picture1.Height = Form1.Height
Picture2.Height = Form1.Height
 
'выравнивание боксов по верху формы
Picture1.Top = 0
Picture2.Top = 0
 
'Форму нужно показать, а потом уже равнять
Me.Show
'выравнивание боксов по ширине формы
Picture1.Move Form1.ScaleWidth / 2 - Picture1.Width / 2
Picture2.Move (Picture1.Width - Picture1.Width) / 2 'а тут всегда будет 0
 
 
End Sub
2
0 / 0 / 0
Регистрация: 30.07.2006
Сообщений: 33
11.10.2014, 22:35  [ТС]
я правильно понял, что строка 26 не нужна?
0
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
11.10.2014, 22:50
Цитата Сообщение от SAI777 Посмотреть сообщение
я правильно понял, что строка 26 не нужна?
А какой в ней смысл?
Visual Basic
1
picture2.left=0
и все
0
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 79
11.10.2014, 23:17
Располагать контролы нужно в обработчике события Form_Resize.
1
0 / 0 / 0
Регистрация: 30.07.2006
Сообщений: 33
12.10.2014, 00:56  [ТС]
Цитата Сообщение от SoftIce Посмотреть сообщение
и все
))) ага. Спасибо.
Цитата Сообщение от The trick Посмотреть сообщение
Располагать контролы нужно в обработчике события Form_Resize.
Вы имеете ввиду определять их положение?
0
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 79
12.10.2014, 01:01
Цитата Сообщение от SAI777 Посмотреть сообщение
определять их положение
Цитата Сообщение от The trick Посмотреть сообщение
Располагать контролы
Что не понятно?
0
0 / 0 / 0
Регистрация: 30.07.2006
Сообщений: 33
12.10.2014, 01:09  [ТС]
ну, да. извините.
А возможно здесь не привязываться к пикселям, а как-то иначе подогнать размер бокса по ширине картинки?
0
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 79
12.10.2014, 01:14
Цитата Сообщение от SAI777 Посмотреть сообщение
А возможно здесь не привязываться к пикселям, а как-то иначе подогнать размер бокса по ширине картинки?
Если картинка будет 10000х10000 пикселей, делать окно 10000х10000 пикселей? Для автоматического размера есть свойство AutoSize.
0
0 / 0 / 0
Регистрация: 30.07.2006
Сообщений: 33
12.10.2014, 01:24  [ТС]
Цитата Сообщение от The trick Посмотреть сообщение
Если картинка будет 10000х10000 пикселей, делать окно 10000х10000 пикселей? Для автоматического размера есть свойство AutoSize.
так я же не случайно написал "по ширине", т.к. AutoSize режет оба размера. А здесь планируется организовать прокрутку по-вертикали, для чего картинка и заталкивается в двойной бокс.
Спасибо за терпение.
0
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 79
12.10.2014, 01:25

Не по теме:

SAI777, я сейчас болею - плохо соображаю.

Нарисуй что хочешь - я тебя не понимаю.
0
0 / 0 / 0
Регистрация: 30.07.2006
Сообщений: 33
12.10.2014, 01:50  [ТС]
Цитата Сообщение от The trick Посмотреть сообщение
я сейчас болею - плохо соображаю.
Выздоравливайте, Анатолий!
Цитата Сообщение от The trick Посмотреть сообщение
Нарисуй что хочешь - я тебя не понимаю.
на всегда развёрнутой форме, по центру, размещается картинка (450х2228пк) которая должна прокручиваться по вертикали вращением колеса мыши (код, хоть и навороченный с API, нашёл, вроде работает).
А вот далее в замешательстве.... Поверх этих контролов должен располагаться неподвижный целеуказатель (типа прицела) с возможностью масштабирования по клику кнопок или скроллбаром. Тут посматривал на Вашу "лупу", возможно, что-то от туда можно будет прикрутить...
0
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 79
12.10.2014, 01:53
Цитата Сообщение от SAI777 Посмотреть сообщение
Тут посматривал на Вашу "лупу", возможно, что-то от туда можно будет прикрутить...
Нет. Смотри регионы. Создавай пикчербокс поверх всех контролов и задавай ему регион в виде прицела, Windows сама обрежет его по форме прицела. Хотя проще рисовать его на кртинке самому.
0
0 / 0 / 0
Регистрация: 30.07.2006
Сообщений: 33
12.10.2014, 02:04  [ТС]
Цитата Сообщение от The trick Посмотреть сообщение
Смотри регионы. Создавай пикчербокс поверх всех контролов и задавай ему регион в виде прицела, Windows сама обрежет его по форме прицела. Хотя проще рисовать его на кртинке самому.
уже смотрел тут разные варианты прозрачных контролов и форм, но все с теми или иными подводными камнями. тут (Двойная буферизация и прозрачность контролов в VB6) очень близко, но всё уже забито в библиотеку ((( , а это мне уже не поднять.
0
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 79
12.10.2014, 02:18
Лучший ответ Сообщение было отмечено SAI777 как решение

Решение

Так не легче?
Вложения
Тип файла: rar Temp.rar (2.06 Мб, 9 просмотров)
2
0 / 0 / 0
Регистрация: 30.07.2006
Сообщений: 33
12.10.2014, 12:07  [ТС]
Хмм!!! Очень интересно! Попробую покрутить...
Спасибо за внимание!

Добавлено через 1 час 24 минуты
Да! Похоже из этого получиться!
Первое, с чем столкнулся, это отсутствие ограничения на прокрутку. Т.е. когда скроллинг доходит до края картинки, её начинает "рвать".
Второе: не пойму, что нужно подставить, чтобы устанавливать картинку в центр развёрнутой формы?:
PureBasic
1
PaintPicture pic, (Form1.ScaleWidth - *******) / 2, scl
0
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 79
12.10.2014, 12:10
Цитата Сообщение от SAI777 Посмотреть сообщение
Т.е. когда скроллинг доходит до края картинки, её начинает "рвать".
Ограничивай сдвиг (переменная scl).
Цитата Сообщение от SAI777 Посмотреть сообщение
не пойму, что нужно подставить, чтобы устанавливать картинку в центр развёрнутой формы?:
(размер формы - рамер картинки)/2
0
0 / 0 / 0
Регистрация: 30.07.2006
Сообщений: 33
12.10.2014, 13:26  [ТС]
Цитата Сообщение от The trick Посмотреть сообщение
(размер формы - рамер картинки)/2
это понятно, но почему если так:
PureBasic
1
PaintPicture pic, (Form1.Width - pic.Width) / 2, scl
то сдвиг получается не точно по-центру, а правее?
Миниатюры
Не срабатывает центровка контроллов по ширине формы  
0
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 79
12.10.2014, 13:27
Все дело из-за единиц измерения, во вторых форма имеет 2 размера: размер окна и размер клиентской области.
0
0 / 0 / 0
Регистрация: 30.07.2006
Сообщений: 33
12.10.2014, 13:28  [ТС]
Цитата Сообщение от The trick Посмотреть сообщение
Ограничивай сдвиг (переменная scl).
ага, только не понятно как в этот(?) блок
PureBasic
1
2
3
4
5
6
    Select Case Msg
    Case WM_MOUSEWHEEL
        scl = scl + 10 * (Sgn(wParam))
        Form_Paint
    Case Else: DefCall = True
    End Select
вставить ограничение по высоте картинки?
Спасибо за внимание.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.10.2014, 13:28
Помогаю со студенческими работами здесь

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

Перечисление контроллов формы: как изменить их порядок
Dim ctrl As Control Dim s As string s="" For Each ctrl In forma.Controls s=s & ctrl.name & Chr(10) Next Msgbox s ...

Регулировка размеров контроллов при ресайзе формы
Доброго времени суток! Вопрос: как сделать регулировку размера rtb и webbrowser на форме? Как например в дриамвиере?

Перебор всех контроллов формы для получения их свойств
Есть форма в которой 28 checkbox, 4 button, 4 radio, 2 textbox. Как правильнее передавать их состояние в программу? если можно,...

Получить информацию о новой ширине формы
Почему такой способ получения информации о ширине формы: Form1 form = new Form1(); MessageBox.Show(form.Width.ToString());...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru