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

Разместить форму в правом нижнем углу

18.01.2016, 13:50. Показов 1962. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!
Собственно задача тривиальная...
Visual Basic
1
2
Me.Left = Screen.Width - Me.Width
Me.Top = Screen.Height - Me.Height - {ВЫСОТА ПАНЕЛИ ЗАДАЧ}
Но не могу догнать как определить высоту панели задач
Заранее спасибо всем!

Может кому сгодится
Чуток подправил + код + EXE + скрины + Фирменный ТРИовский & Драковский манифест)))

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
Private Declare Function SHAppBarMessage Lib "shell32.dll" (ByVal dwMessage As Long, pData As APPBARDATA) As Long
Private Type RECT
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
End Type
 
Private Type APPBARDATA
    cbSize As Long
    hwnd As Long
    uCallbackMessage As Long
    uEdge As Long
    rc As RECT
    lParam As Long
End Type
Const ABS_AUTOHIDE = &H1
Const ABS_ONTOP = &H2
Const ABM_GETSTATE = &H4
Const ABM_GETTASKBARPOS = &H5
 
Private Sub cmbExit2_Click()
    Unload frmLog
End Sub
 
Private Sub Form_Load()
    Dim ABD As APPBARDATA, Ret As Long
    Dim hPanel As Integer
    Dim gPanel As Integer
    
    SHAppBarMessage ABM_GETTASKBARPOS, ABD
    Ret = SHAppBarMessage(ABM_GETSTATE, ABD)
    If Trim(Str(ABD.rc.Top)) > 0 Then hPanel = (Trim(Str(ABD.rc.Bottom)) - Trim(Str(ABD.rc.Top))) * 15
    If Trim(Str(ABD.rc.Left)) > 0 Then gPanel = (Trim(Str(ABD.rc.Right)) - Trim(Str(ABD.rc.Left))) * 15
    
    Me.Left = Screen.Width - Me.Width - gPanel
    Me.Top = Screen.Height - Me.Height - hPanel
End Sub
 
Private Sub tmr_Timer()
    frmLog.txtLog = frmLog.txtLog & vbCrLf & "Text Log"
End Sub
 
Private Sub txtLog_Change()
    txtLog.SelStart = Len(txtLog)
End Sub
Миниатюры
Разместить форму в правом нижнем углу   Разместить форму в правом нижнем углу   Разместить форму в правом нижнем углу  

Разместить форму в правом нижнем углу  
Вложения
Тип файла: rar prjTaskBar.rar (7.5 Кб, 13 просмотров)
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.01.2016, 13:50
Ответы с готовыми решениями:

Как зделать чтобы было видно иконка работающей программы в правом нижнем углу
За рании блогадарю. Извинаюсь за плохой русскйи.

Как разместить окно в нижнем правом углу?
Стандартное решение работает некорректно (скрин приложил), надо чтобы окно находилось в углу впритык, подскажите в чем может быть проблема?...

Открыть форму в правом нижнем углу
Доброго времени суток. Ни как не могу найти решения для одной задачи Необходимо что бы форма появлялась в правом нижнем углу Access (...

11
Модератор
10046 / 3892 / 883
Регистрация: 22.02.2013
Сообщений: 5,846
Записей в блоге: 79
18.01.2016, 13:53
Visual Basic
1
2
3
4
    Dim rc  As RECT
    
    SystemParametersInfo SPI_GETWORKAREA, 0, rc, 0
    SetWindowPos Me.hWnd, 0, rc.iRight - Me.ScaleWidth, rc.iBottom - Me.ScaleHeight, 0, 0, SWP_NOSIZE Or SWP_NOOWNERZORDER
Панель задач может быть и сбоку и сверху. Эта формула для формы без бордюра.
2
39 / 39 / 8
Регистрация: 15.08.2014
Сообщений: 634
18.01.2016, 14:00  [ТС]
Приветствую уважаемый Анатолий!
Я давно не программировал..
Можно полный листинг объявления деклараций и типов?
0
Модератор
10046 / 3892 / 883
Регистрация: 22.02.2013
Сообщений: 5,846
Записей в блоге: 79
18.01.2016, 14:01
Тут смотри.
0
oh my god
 Аватар для fever brain
1456 / 796 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
18.01.2016, 14:31
Да уж.. системные метрики бывает не так просто получить
когдато этого даже в книжках небыло написанно )

The Trick не сказал вам об еще одном сюрпризе ?

Добавлено через 11 минут
kreotodr, проще всего это так: вы просто сминусуйте ScaleWidth и ScaleHeight

а разницу припишите, тоесть разницу между любой формой и её реальным квадратом
ширина панели формы в метриках и ширина нижней панели в Windos .. почти всегда одинаковая
0
39 / 39 / 8
Регистрация: 15.08.2014
Сообщений: 634
18.01.2016, 14:34  [ТС]
Лучший ответ Сообщение было отмечено The trick как решение

Решение

Чуток не дождался ответа..
Не знаю все ли корректно, но вроде как корректно при любом расположении панели задач...
Проверял и с аеро и без него...

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
Private Declare Function SHAppBarMessage Lib "shell32.dll" (ByVal dwMessage As Long, pData As APPBARDATA) As Long
Private Type RECT
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
End Type
 
Private Type APPBARDATA
    cbSize As Long
    hwnd As Long
    uCallbackMessage As Long
    uEdge As Long
    rc As RECT
    lParam As Long
End Type
 
Const ABS_AUTOHIDE = &H1
Const ABS_ONTOP = &H2
Const ABM_GETSTATE = &H4
Const ABM_GETTASKBARPOS = &H5
 
 
Private Sub Form_Load()
       
    Dim ABD As APPBARDATA, Ret As Long
    Dim hPanel As Integer
    Dim gPanel As Integer
    
    SHAppBarMessage ABM_GETTASKBARPOS, ABD
    Ret = SHAppBarMessage(ABM_GETSTATE, ABD)
    
    If Trim(str(ABD.rc.Top)) > 0 Then hPanel = (Trim(str(ABD.rc.Bottom)) - Trim(str(ABD.rc.Top))) * 15
    If Trim(str(ABD.rc.Left)) > 0 Then gPanel = (Trim(str(ABD.rc.Right)) - Trim(str(ABD.rc.Left))) * 15
    
    
    Me.Left = Screen.Width - Me.Width - gPanel
    Me.Top = Screen.Height - Me.Height - hPanel
 
End Sub
Добавлено через 1 минуту
Цитата Сообщение от fever brain Посмотреть сообщение
kreotodr, проще всего это так: вы просто сминусуйте ScaleWidth и ScaleHeight
а разницу припишите, тоесть разницу между любой формой и её реальным квадратом
Спасибо но уже сделал...
0
oh my god
 Аватар для fever brain
1456 / 796 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
18.01.2016, 14:48
Цитата Сообщение от kreotodr Посмотреть сообщение
Спасибо но уже сделал...
Вы не правильно сделали

Напимер, вот как можно отобразить форму строго посередине
.Left = (Screen.Width - (.Left + .Width)) / 2
.Top = (Screen.Height - (.Top + .Height)) / 2

Мне пофиг, делайте как хотите, вообщето панель можно не учитывать
если даже она будет прятаться, и если всё правильно делать (без извращений)

то рабочий стол должнг будет поправить и все нижние окна, а если будете умничать, то у вас это вызовет глюки
а потом будете говорить чтл бэйсик во всйм виноват ..
0
Модератор
10046 / 3892 / 883
Регистрация: 22.02.2013
Сообщений: 5,846
Записей в блоге: 79
18.01.2016, 14:53
Цитата Сообщение от fever brain Посмотреть сообщение
Вы не правильно сделали
Напимер, вот как можно отобразить форму строго посередине
.Left = (Screen.Width - (.Left + .Width)) / 2
.Top = (Screen.Height - (.Top + .Height)) / 2
Это ты неправильно сделал. Screen возвращает размеры всего экрана, а не рабочей области.
0
oh my god
 Аватар для fever brain
1456 / 796 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
18.01.2016, 14:55
Цитата Сообщение от kreotodr Посмотреть сообщение
Спасибо но уже сделал...
Вы не правильно сделали

Напимер, вот как можно отобразить форму строго посередине
.Left = (Screen.Width - (.Left + .Width)) / 2
.Top = (Screen.Height - (.Top + .Height)) / 2

Мне пофиг, делайте как хотите, вообщето панель можно не учитывать
если даже она будет прятаться, и если всё правильно делать (без извращений)

то рабочий стол должен будет поправить и все нижние окна, а если будете умничать, то у вас это вызовет глюки
а потом будете говорить что бэйсик во всём виноват ..











Хотел исправить офографию, да не успел ..
1
39 / 39 / 8
Регистрация: 15.08.2014
Сообщений: 634
18.01.2016, 16:05  [ТС]
Коллеги всем спасибо!
Успокойтесь, мой пример работает правильно. Протестировал в 4х положениях на трех ОСЯХ. Что еще нужно?
0
Модератор
10046 / 3892 / 883
Регистрация: 22.02.2013
Сообщений: 5,846
Записей в блоге: 79
19.01.2016, 11:39
Ты должен вызывать InitCommonControls, а то на ХР не работает. Для ленивых так:
Visual Basic
1
InitCommonControlsEx 3435973.8623@
0
oh my god
 Аватар для fever brain
1456 / 796 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
20.01.2016, 05:34
--------------
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.01.2016, 05:34
Помогаю со студенческими работами здесь

Как расположить форму в правом нижнем углу?
Как расположить форму в правом нижнем углу, выше панели задач? Пробовал так procedure show_form_in_position(); var ...

Открыть форму в правом нижнем углу экрана
Привет всем.У меня такая ситуация,мне надо чтоБы при открытии программы она открылась справа внизу независимо от разпрешения монитора,кто...

Как показать форму в правом нижнем углу экрана?
Как показать форму в правом нижнем углу экрана?

Показать небольшую форму в правом нижнем углу экрана с учетом высоты панели задач
Приветствую всех! Друзья, помогите с советом. Пишу программу одну. Суть в том, что эта софтина должна выдавать оповещения. Стандартный...

Как разместить форму в верхнем правом углу экрана?
как разместить форму в верхнем правом углу экрана????


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru