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

Форма в виде панели

27.02.2008, 18:09. Показов 1841. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите, как сделать внешний вид формы в виде панели, а именно без полосы заголовка и что бы она была выпуклая (как сделать плоскую я знаю). Спасибо!
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.02.2008, 18:09
Ответы с готовыми решениями:

Чтобы форма (иконка форма) не показывалась в панели задач Windows
как сделать так чтобы форма (иконка форма) не показывалась в панели управления там где пуск и все дела?

Форма в панели задач
Как при form1.hide form2.show сделать так чтобы form2 отоброжалась в панели задач? procedure TForm1.Button1Click(Sender: TObject); ...

Форма не отображается в панели задач
как сделать, чтоб форма не отображалась в панели пуск?

11
eddy
27.02.2008, 18:52
// Работающий код. Проверено!
// Для получения спецэффектов поиграй с константами для DrawEdge()

Code
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
49
50
51
52
53
54
55
56
57
58
59
60
61
Option Explicit
 
'// стиль окна
Private Declare Function GetWindowLong Lib 'user32' Alias 'GetWindowLongA' (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib 'user32' Alias 'SetWindowLongA' (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Const WS_BORDER = &H800000
Private Const WS_CAPTION = &HC00000                  '  WS_BORDER Or WS_DLGFRAME
Private Const WS_DLGFRAME = &H400000
Private Const WS_EX_DLGMODALFRAME = &H1&
Private Const WS_MAXIMIZEBOX = &H10000
Private Const WS_MINIMIZEBOX = &H20000
Private Const WS_SYSMENU = &H80000
Private Const WS_THICKFRAME = &H40000
Private Const WS_SIZEBOX = WS_THICKFRAME
Private Const WS_CHILD = &H40000000
Private Const GWL_HWNDPARENT = (-8)
Private Const GWL_STYLE = (-16)
 
'// константы для DrawEdge
Private Const BDR_RAISEDOUTER = &H1
Private Const BDR_SUNKENOUTER = &H2
Private Const BDR_RAISEDINNER = &H4
Private Const BDR_SUNKENINNER = &H8
 
Private Const BF_BOTTOM = &H8
Private Const BF_LEFT = &H1
Private Const BF_RIGHT = &H4
Private Const BF_TOP = &H2
 
Private Const EDGE_ETCHED = (BDR_SUNKENOUTER Or BDR_RAISEDINNER)
Private Const BF_RECT = (BF_LEFT Or BF_TOP Or BF_RIGHT Or BF_BOTTOM)
 
Private Type RECT
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
End Type
 
Private Declare Function DrawEdge Lib 'user32' (ByVal hdc As Long, qrc As RECT, ByVal edge As Long, ByVal grfFlags As Long) As Long
Private Declare Function SetRect Lib 'user32' (lpRect As RECT, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
 
Private Sub Form_Paint()
Dim lStyle As Long
Dim TRect As RECT
 
lStyle = GetWindowLong(Me.hwnd, GWL_STYLE)
 
lStyle = lStyle And Not ( _
    WS_BORDER Or WS_CAPTION Or WS_DLGFRAME Or WS_EX_DLGMODALFRAME Or _
    WS_MAXIMIZEBOX Or WS_MINIMIZEBOX Or WS_SYSMENU Or _
    WS_SIZEBOX Or WS_THICKFRAME _
    )
    
   SetWindowLong Me.hwnd, GWL_STYLE, lStyle
   Me.WindowState = vbMaximized
 
   Me.ScaleMode = vbPixels
   SetRect TRect, 10, 10, Me.ScaleWidth - 10, Me.ScaleHeight - 10
   DrawEdge Me.hdc, TRect, EDGE_ETCHED, BF_RECT
End Sub
eddy
27.02.2008, 19:05
Дополнительно:

Code
1
2
3
4
5
'// 'Вдавленная' панель
DrawEdge Me.hdc, TRect, BDR_SUNKENOUTER, BF_RECT
   
'// 'выпуклая' панель
DrawEdge Me.hdc, TRect, BDR_RAISEDINNER, BF_RECT
Серж
27.02.2008, 21:14
Спасибо, примерчик красивый, но немного не тот, мне нужна не панель на форме, а форма в виде панели. Например такая как выглядит... ну на пример меню при нажатии кнопки 'Пуск'.
eddy
28.02.2008, 09:34
Форма в виде панели? D примере № 1 это и было. Здесь убирался Border, Caption, кнопки MinMax и Control Box, причем панель имитировалась DrawEdge().

При этом размеры панели были сдвинуты от краев на 10 пикселов для каждой стороны.

Закомментируй эту строку, чтобы окно не занимало весь экран:
Me.WindowState = vbMaximized
и растяни форму по требуемым параметрам

Подкорректируем пример, с таким расчетом, чтобы 'панель' облегала форму:

Code
1
2
3
4
5
6
'// Задать размеры прямоугольника
SetRect TRect, 0, 0, Me.ScaleWidth, Me.ScaleHeight
или
SetRect TRect, 1, 1, Me.ScaleWidth - 1, Me.ScaleHeight - 1
'// Нарисовать 'панель'
DrawEdge Me.hdc, TRect, BDR_RAISEDINNER, BF_RECT
1 / 1 / 0
Регистрация: 17.01.2008
Сообщений: 101
28.02.2008, 11:27
Пример хороший, только при щелчке мыши не на окне появляется подпись фрмы , а как ее-то убрать?
0
eddy
28.02.2008, 12:55
To: gerik

Что значит 'подпись фориы'?
1 / 1 / 0
Регистрация: 17.01.2008
Сообщений: 101
02.03.2008, 09:04
т.е. если сделать форму размером меньше чем окно рабочего стола , то при щелчке мышью не на форме а на рабочем окне у формы появляется синяя полоска с ее заголовком
0
eddy
02.03.2008, 18:36
В качестве упражнения: событие Form_Paint() поменять на Form_Load()
1 / 1 / 0
Регистрация: 17.01.2008
Сообщений: 101
03.03.2008, 09:27
Разницы никакой
0
colonel
03.03.2008, 09:49
Вот я тут тоже делал в Свойствах Формы:
BorderStyle - допустим сайзебл
Caption - затереть
ControlBox = False
и нет никакого тайтла. И сколько по десктопу не щелкал, две мыши извел, а тайтл не появлялся.
Только в панеле задач висит пустой прямоугольник - сапшена-то нет.
eddy
03.03.2008, 10:05
Ребята, я не могу делать все абсолютно за вас. Решение есть, и я привел один из вариантов. Если мне действительно надо для своих целей, я это сделаю. Голова дана для того, чтобы думать, а не есть.

Простите, но некоторые слова не понимаю:



'...сайзебл...'
'...тайтла...'
'...сапшена...'

В этом случае приводите оригинальные значения хотя бы в скобках, например Пикчерз (Picture).

Удачи!
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.03.2008, 10:05
Помогаю со студенческими работами здесь

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

Не отображается форма в панели задач
не отображается форма на панели задач, как вернуть фокус форме

Форма видна на панели задач, но на экране ее нет
Я скрыл первую форму вот так: this.Hide(); А показываю её так: this.Show(); Но форма не разворачивается на экране, а остаётся...

Форма не показывает свою иконку в панели задачи Windows
Это не главная форма и она не показывает свою иконку. Как можно это исправить?

Не разворачивается форма при нажатии кнопки на панели задач
Здравствуйте! Я, конечно, в Delphi только лишь начинающий. У меня возникла проблема следующего плана: при нажатии кнопки на панели задач,...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
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 На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru