2014-09-17 18 views
0

여러 탭이 포함 된 MDI 창이 있습니다. 내가하고 싶은 일은 사용자가 탭에서 이탈 버튼을 클릭 할 때마다 닫기 이벤트를 사용 중지하는 것입니다. 그러나 나는 그것들을 성취하는 방법을 몰랐다. 아무도 이것으로 나를 도울 수 있습니까? 고맙습니다.PowerBuilder 창 닫기 이벤트

위의 질문에서 언급 한 샘플 탭과 종료 버튼이 있습니다.

tab.png

는 이것은 내가 지금까지있는 것입니다. 출구 버튼을 클릭 할 때마다 여전히 창이 닫힙니다.

integer ext 
ext = MessageBox("","You are not allowed to close this tab",(Exclamation!),(OK!)) 

if (ext = 1) then 
Open(w_main) 
end if 

답변

0

쉽지 않습니다. user32.dll api로 처리하고 메뉴 모음을 제거, 수정 및 그릴 수 있습니다.

열기 글로벌 외부 기능 탭을 삽입합니다

기능 ULONG GetSystemMenu (개체 HWND, 부울 bRevert) LIBRARY "USER32.DLL"기능 ULONG RemoveMenu (객체 HMENU, 긴 nPosition, 긴 wFlags) LIBRARY "user32.dll"함수 uLong DrawMenuBar (개체 hwnd) LIBRARY "user32.dll을 "

그리고 지금 :.이 하나가 작동

menu = GetSystemMenu(window, false) // to disable X 
RemoveMenu(menu, HF060, H0) 
DrawMenuBar(window) 
0

나는 당신의 샘플 코드가 놀랍다. MessageBox는 설정 한 방식으로 하나의 값만 반환 할 수 있습니다. MessageBox에서 반환 코드를 확인하는 경우 네 번째 매개 변수는 YesNo !, YesNoCancel로 지정해야합니다!

나는 이것을 한 사람이 무엇을하고 있는지를 알지 못한다고 생각하는데,이 논리에서는 아무런 의미가 없다.

사용자가 답변 할 수있는 질문이되고 싶습니까? 참고하시기 바랍니다

integer li_rc 
li_rc = Messagebox("Confirm your intentions","Do you want to close the tab?",Question!,YesNo!,2) 
if li_rc = 1 then 
    // user clicked YES because it is the first option of YesNo! 
else 
    // user clicked NO because it is the second option of YesNo! 
end if 

: 그래서 다음과 같이 할 경우 사용자 프레스

을 입력하면 마지막 인수는 윈도우가 종료 될 때, 당신은 그에서 처리를 수행 할 수있는 화재 closequery 이벤트가 기본 버튼입니다 이벤트가 발생하여 창을 닫지 않습니다. 탭에 이와 같은 내용이 있는지는 모르지만이 질문을 해결 한 다음 닫기를 허용하지 않을 수 있습니다. 사용자에게 뭔가를 말하고 싶다면 MessageBox ("Message Subject", "Message Body", Exclamation!)를 실행하십시오. OK를 사용할 필요가 없습니다! 탭 컨트롤의 클릭 된 경우에

봐 : 기본 여기

인 생각이다. 탭을 닫기위한 코드가있을 것입니다. 사용 권한을 확인하고 닫는 로직을 건너 뛸 수있는 추가 논리를 추가 할 수 있습니다. 또는 사용자가 닫을 수 없거나 표시되지 않는 X 모양의 다른 그림을 표시 할 수없는 경우 ShowPicture 속성을 false로 설정할 수 있습니다.

+0

하지만 내가 원하는 것은 불가능 close 이벤트이다 .. 내가 탭을 닫으려면 사용자를 허용하지 않습니다. 어떻게 할 것입니까?) 감사합니다. =) –

+0

개발자가 거기에 놓았 음에 틀림없는 X가 탭에 표시되어있을 수 있습니다. 코드를 찾아 거기에 새로운 코드를 넣으면 사용자가 승인되었는지 확인하십시오. , 그리고 탭 닫기를 시작하는 코드를 건너 뛰십시오.이 탭에는 Windows에서 닫기 쿼리와 같은 이벤트가 없습니다. 또는 더 나은 아직 사용자가 닫을 권한이없는 경우 X를 표시하지 마십시오. –

+0

그 창 닫기를 알았어. e 이벤트가 닫기 버튼을 트리거 할 수 있습니다. 하지만 일반 창 닫기 버튼을 비활성화하는 방법을 알고 있습니까? 그렇다면 어떻게 말해 줄 수 있습니까? 고맙습니다. 나는 정말로 아무 생각도하지 않는다. –

0

"닫기 이벤트 사용 안 함"방법은 없습니다. 창 CloseQuery 이벤트를 스크립팅하여 요청한 닫기를 허용하지 않습니다. 닫기를 허용하지 않으려는 경우 1을 반환하고 닫기를 계속 처리하려는 경우 0을 반환하도록 스크립트하십시오.

행운을 빈다.

+0

나는 창을 닫지 못하게하는 논리를 얻지 못했을 까봐 두렵다. 괜찮 으면 나에게 몇 가지 예를 들어 줄 수 있니? 고맙습니다 =) –