Disable Close Button
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- morkovin
- Ветеран
- Сообщения: 910
- Зарегистрирован: 20 Июль 2005, 14:53
- Откуда: Volgograd, Russia
- Благодарил (а): 3 раза
- Поблагодарили: 3 раза
- Контактная информация:
Disable Close Button
Как запретить кнопку "крестик" в правом верхнем углу окна (формы)?
WBR, morkovin
Disable Close Button
Вроде бы в описании структуры окна отключить флажок System ( System Menu ) .
А если ещё и Icon убрать, то крестика просто не будет
А если ещё и Icon убрать, то крестика просто не будет
- morkovin
- Ветеран
- Сообщения: 910
- Зарегистрирован: 20 Июль 2005, 14:53
- Откуда: Volgograd, Russia
- Благодарил (а): 3 раза
- Поблагодарили: 3 раза
- Контактная информация:
- Дед Пахом
- Старичок
- Сообщения: 3236
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 13 раз
- Поблагодарили: 45 раз
- Контактная информация:
Disable Close Button
Вы не с тем боретесь - уберёте крестик, юзер нажмёт ESC, запретите ESC - юзер нажмёт Alt-F4.
С уважением, ДП
- morkovin
- Ветеран
- Сообщения: 910
- Зарегистрирован: 20 Июль 2005, 14:53
- Откуда: Volgograd, Russia
- Благодарил (а): 3 раза
- Поблагодарили: 3 раза
- Контактная информация:
Disable Close Button
часть информации внизу формы бывает не видна на небольшом мониторе, и неопытный юзер вместо того, чтобы прокрутить окно, тупо жмет на крестик. Вот и хочется их "проучить".
WBR, morkovin
Disable Close Button
Так это другая вещь - надо блокировать ненужные Event:closeWindow и кнопку Esc.
Esc проще всего гасится командой Alert( EscKey ) , а Event:closeWindow - проверить, что было нажато
.... OF Event:CloseWindow
IF Field(){ Prop:Type } = Create:Button
Cycle
End
Esc проще всего гасится командой Alert( EscKey ) , а Event:closeWindow - проверить, что было нажато
.... OF Event:CloseWindow
IF Field(){ Prop:Type } = Create:Button
Cycle
End
Disable Close Button
А попробуй ещё и рамку убрать ( No Frame ). И заголовок окна ... У меня полно таких окон.
-
- Полимат
- Сообщения: 1739
- Зарегистрирован: 25 Март 2009, 21:55
- Благодарил (а): 14 раз
- Поблагодарили: 10 раз
Disable Close Button
Не для формы, а для App, может поможет
Пользуюсь этим - отключить крестик - закрытия приложения
в самом APP - Open Windows
Global emmbeds -> Global data (4000)
Global emmbeds -> Inside the global map (2916)
Пользуюсь этим - отключить крестик - закрытия приложения
в самом APP - Open Windows
Код: Выделить всё
l_hWnd = 0{PROP:Handle}
!Obtain the handle to the form's system menu
l_hMenu = GetSystemMenu(l_hwnd, 0)
If l_hMenu Then
l_menuItemCount = GetMenuItemCount(l_hMenu) !Obtain the number of items in the menu
!Remove the system menu Close menu item.
!The menu item is 0-based, so the last
!item on the menu is menuItemCount - 1
i# = RemoveMenu(l_hMenu, l_menuItemCount - 1,BOR(MF_REMOVE,MF_BYPOSITION))
!Remove the system menu separator line
i# = RemoveMenu(l_hMenu, l_menuItemCount - 2,BOR(MF_REMOVE,MF_BYPOSITION))
!Force a redraw of the menu. This
!refreshes the titlebar, dimming the X
i# = DrawMenuBar(l_hwnd)
End
Код: Выделить всё
! 1-2 Hide Menubar AppFrame и Отключить крестик - закрытия приложения (Global Data)
MF_BYPOSITION equate(0400H)
MF_REMOVE equate(01000H)
Код: Выделить всё
module('windows')
! 2-2 Hide Menubar AppFrame и Отключить крестик WIN API (Inside the Global Map)
GetMenu(long hWnd),long,pascal,raw,name('GetMenu')
RemoveMenu(long hMenu,long uPosition,long uFlags),long,pascal,raw,name('RemoveMenu')
DrawMenuBar(long hWnd),long,pascal,raw,name('DrawMenuBar')
GetMenuItemCount(long hWnd),long,pascal,raw,name('GetMenuItemCount')
! DrawMenuBar(Long),Long,Pascal
! GetMenuItemCount(Long),Long,Pascal
GetSystemMenu(Long,Long),Long,Pascal
! RemoveMenu(Long,Long,Long),Long,Pascal
end
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1389
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 9 раз
- Поблагодарили: 2 раза
- Контактная информация:
Disable Close Button
Так поправьте форму, чтобы было все видно на небольшом мониторе и не кошмарьте юзеров
- morkovin
- Ветеран
- Сообщения: 910
- Зарегистрирован: 20 Июль 2005, 14:53
- Откуда: Volgograd, Russia
- Благодарил (а): 3 раза
- Поблагодарили: 3 раза
- Контактная информация:
Disable Close Button
Я вообще против поправок!
Можно было бы и разрешение экрана изменить. Но работа на 14" мониторах - это кошмар. А у начальства мониторы от 19" и выше - им же видеопланёрки проводить.
WBR, morkovin
- morkovin
- Ветеран
- Сообщения: 910
- Зарегистрирован: 20 Июль 2005, 14:53
- Откуда: Volgograd, Russia
- Благодарил (а): 3 раза
- Поблагодарили: 3 раза
- Контактная информация:
Disable Close Button
Ни фига се!Сложно как! Надо подумать в каких случаях без этого не обойтись.gopstop2007 писал(а): ↑14 Июнь 2020, 19:55 Пользуюсь этим - отключить крестик - закрытия приложения
в самом APP - Open Windows
WBR, morkovin
-
- Полимат
- Сообщения: 1739
- Зарегистрирован: 25 Март 2009, 21:55
- Благодарил (а): 14 раз
- Поблагодарили: 10 раз
Disable Close Button
9 строки при открытии окна - сложно?
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
- morkovin
- Ветеран
- Сообщения: 910
- Зарегистрирован: 20 Июль 2005, 14:53
- Откуда: Volgograd, Russia
- Благодарил (а): 3 раза
- Поблагодарили: 3 раза
- Контактная информация:
Disable Close Button
Внести строчки не сложно. Но что за ними стоит - я в жизни бы не додумался. И всё ради крестика!
WBR, morkovin
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1389
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 9 раз
- Поблагодарили: 2 раза
- Контактная информация:
Disable Close Button
global map:
Module('win32')
EnableMenuItem(signed hMenu, signed uIDEnableItem, signed uEnable),bool,pascal,PROC
DrawMenuBar(signed hWnd),bool,pascal,PROC
GetSystemMenu(signed hWnd, bool act),signed,pascal
End
Before file declaration:^
SC_CLOSE equate(0f060h)
MF_GRAYED equate(1)
Procedure data
hMenu LONG
Init.Open window:
hMenu = GetSystemMenu(ThisWindow{prop:handle}, false)
EnableMenuItem(hMenu, sc_close, MF_GRAYED)
DrawMenuBar(ThisWindow{prop:handle})
Module('win32')
EnableMenuItem(signed hMenu, signed uIDEnableItem, signed uEnable),bool,pascal,PROC
DrawMenuBar(signed hWnd),bool,pascal,PROC
GetSystemMenu(signed hWnd, bool act),signed,pascal
End
Before file declaration:^
SC_CLOSE equate(0f060h)
MF_GRAYED equate(1)
Procedure data
hMenu LONG
Init.Open window:
hMenu = GetSystemMenu(ThisWindow{prop:handle}, false)
EnableMenuItem(hMenu, sc_close, MF_GRAYED)
DrawMenuBar(ThisWindow{prop:handle})