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

Сохранять позиции при увеличении и уменьшении окна

22.04.2017, 20:29. Показов 1630. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени программисты! Столкнулся с такой проблемой: Есть программа, формы кнопки, фон. Но при увеличении окна и фон остается своего размера и кнопки. Есть ли возможность менять пропорции в зависимости от окна? Или лучше все сразу делать в расчете что программа всегда будет открываться на весь экран?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.04.2017, 20:29
Ответы с готовыми решениями:

Масштабирование Image при увеличении/ уменьшении окна программы
Всем привет) подскажите пожалуйста, как сделать так, что бы при увеличении/ уменьшении окна изменялось масштаб изображении которая...

Масштабирование элементов Canvas при увеличении/уменьшении размеров окна
Здравствуйте! В общем, задача состоит в том, чтобы при расширении/сужении окна изменялся размер элементов канваса. Понятно, что можно...

При увеличении страницы, или уменьшении окна браузера, div блоки съезжают в право
Помогите пожалуйста, при увеличении страницы, или уменьшении окна браузера, div блоки съезжают в право. Но съезжают они, только когда...

5
413 / 250 / 118
Регистрация: 26.12.2012
Сообщений: 787
22.04.2017, 23:06
Цитата Сообщение от BoNiEr Посмотреть сообщение
Есть ли возможность менять пропорции в зависимости от окна?
Попробуйте так.
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
Option Explicit
Dim SW_old1 As Double, SH_old1 As Double 'начальная ширина и высота окна
Dim CtrSize() As Long ' массив для хранения начальных размеров и положения контролов
 
Const cLeft = 1
Const cTop = 2
Const cWidth = 3
Const cHeight = 4
 
Public Sub FormSize(Frm As Form, SW_old As Double, SH_old As Double, CtrSize() As Long)
  Dim i As Long, ctr As Control
 
  SW_old = Frm.ScaleWidth
  SH_old = Frm.ScaleHeight
  For Each ctr In Frm.Controls
    ReDim Preserve CtrSize(1 To 4, 0 To i)
    CtrSize(cLeft, i) = ctr.Left
    CtrSize(cTop, i) = ctr.Top
    CtrSize(cWidth, i) = ctr.Width
    CtrSize(cHeight, i) = ctr.Height
    i = i + 1
  Next
End Sub
Public Sub FormResize(Frm As Form, SW_old As Double, SH_old As Double, CtrSize() As Long)
  Dim kW As Double, kH As Double
  Dim i As Long, ctr As Control
  On Error Resume Next ' некоторые контролы не позволяют изменять свои размеры
  
  If Frm.WindowState <> vbMinimized Then
    kW = Frm.ScaleWidth / SW_old
    kH = Frm.ScaleHeight / SH_old
    For Each ctr In Frm.Controls
      ctr.Left = CtrSize(cLeft, i) * kW
      ctr.Top = CtrSize(cTop, i) * kH
      ctr.Width = CtrSize(cWidth, i) * kW
      ctr.Height = CtrSize(cHeight, i) * kH
      i = i + 1
    Next
  End If
End Sub
 
Private Sub Form_Load()
FormSize Me, SW_old1, SH_old1, CtrSize()
End Sub
 
Private Sub Form_Resize()
FormResize Me, SW_old1, SH_old1, CtrSize()
End Sub
Код вырезан из программы может быть и что то лишнее.Размер шрифта не изменяется.
А лучше поюзать компанент ActtiveX - PVResizer там и делать ничего не надо.

Добавлено через 10 минут
Откройте проект ссылки поставте галочку ProtoView Resizer Control
0
141 / 119 / 29
Регистрация: 12.02.2017
Сообщений: 308
23.04.2017, 10:16
...Есть ли возможность менять пропорции в зависимости от окна?...
Есть, используйте событие Paint формы.
0
1 / 1 / 0
Регистрация: 11.12.2012
Сообщений: 20
23.04.2017, 10:41  [ТС]
Цитата Сообщение от Homarty Посмотреть сообщение
Есть, используйте событие Paint формы.
А можно подробнее?
0
 Аватар для Kogb
367 / 128 / 28
Регистрация: 17.07.2011
Сообщений: 253
Записей в блоге: 1
23.04.2017, 19:32
Я использую событие Form Resize.
Вот пример как меняю размер и положение текстбокса и положение кнопки при ресайзе формы.
Visual Basic
1
2
3
4
5
6
Private Sub Form_Resize()
If Me.WindowState <> vbMinimized Then
Text1.Move 100, 100, Me.ScaleWidth - 200, Me.ScaleHeight - 300 - Command1.Height
Command1.Move Me.ScaleWidth \ 2 - Command1.Width \ 2, Text1.Height + 200
End If
End Sub
Если нет особой необходимости в изменении размеров формы, то проще не заморачиваться с масштабировании элементов управления и оформления, а сделать форму fixed и false для maxbutton.
0
141 / 119 / 29
Регистрация: 12.02.2017
Сообщений: 308
23.04.2017, 23:44
В принципе, да, событие Form_Resize() будет более логичным и удобным для ресайза контролов.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.04.2017, 23:44
Помогаю со студенческими работами здесь

Зависание при увеличении/уменьшении громкости
Здравствуйте. Проблема довольно интересна)) Если уменьшать или увеличивать звук с помощью функциональной клавиши и стрелок, и при этом...

Смещение блока при уменьшении, увеличении масштаба
&lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;BeerUtopia.ru&lt;/title&gt; &lt;meta charset=&quot;utf-8&quot;/&gt; &lt;style&gt; ...

Элементы ведут себя хаотично при увеличении или уменьшении размера экрана
Добрый день! Я уже сверстал сайт, но увы где я разместил картинки, кружки и т.д. в position :absolute ;, при увеличении или же уменьшении...

Как при увеличении или уменьшении картинки оставить "фокус" в одной точке
Имеется picturebox закрепленная в род. контейнере. При запуске приложения туда грузиться картинка. Картинку можно мышкой двигать при...

Найти все трехзначные числа, которые при увеличении на 1 делятся на 2, при увеличении на 2 делятся на 3, при увеличении
Помогите разобраться с задачой Найти все трехзначные числа, которые при увеличении на 1 делятся на 2, при увеличении на 2 делятся на...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
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
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru