2014-05-14 2 views
3

참석하지 못한 PC에 메시지를 표시하고 싶습니다. 사용자는 그가 돌아올 때 메시지를 읽을 수 있습니다.표준 넌 모달 메시지 대화 상자가 있습니까?

내 앱 실행이 계속되어야하므로 모달이 아닌 무언가가 필요합니다. & 새로운 양식을 작성하기 전에, '모달이 아닌'ShowMessage와 같은 것이 있는지 물어보고 싶습니다.


[업데이트] 지금까지 의견을 보내 주셔서 감사합니다. 폼을 사용하여 그것을 수행하는 방법을 알고, 나는 적은 코드를 작성해야하는 무언가가 있는지 궁금해했습니다. 그렇지 않은 것 같습니다. 나는 VCL 컴포넌트 사이트를 검색하여 다른 누군가가이 특정 휠을 이미 뒤집어 썼는지 확인해야한다.

내 질문에 대한 짧은 대답은 '아니오'인 것처럼 보입니다.

+1

응용 프로그램이 응답하지 못하도록 막으려는 것처럼 보입니다. 이것이 가능하더라도 일반적으로 적어도 하나의 백그라운드 스레드를 구현하여 필요한 처리를 수행하고 동기 이벤트 또는 메시지 펌프 사용과 같이 양식과 안전하게 상호 작용하는 것을 고려해야합니다. –

+0

나는 사용자를위한 "통지가없는 동안 ..."알림을 남기고 계속 실행하고 싶습니다. – Mawg

+3

나로부터 -1은 없지만, 그 유형의 창은 절대로 모달 적이라고 생각해서는 안됩니다. 이 대화 상자에 정확히 무엇이 표시되는지 질문에 명확히 해두어야합니다. 대화 상자가 아닌 대화 형이어야하는 것처럼 들리므로 다른 양식을 사용해야합니다. –

답변

9

내가 아는 바로는 - 대답은 '아니오'입니다.

실제로 메시지 상자는 사용자 피드백 (예/아니요/확인/취소)이나 사용자가 읽음 (Ok)을 확인하지 않고 프로그램을 계속 진행할 수 없음을 의미하므로 넌 모달 메시지 상자를 많이 사용하지 않습니다.

다른 세부 정보가 없으면 로그가 필요하며 처리되지 않은 메시지 상자 더미가 아닌 것 같습니다. 최악의 시나리오, LAN이 고장 나거나, 5, 20, 1000 같은 것이 있다면 얼마나 많은 메시지가 쌓일 것으로 예상합니까?

TMemo이있는 다른 양식을 만들고 프로그램에서보고해야 할 때 양식을 표시하고 그 메모를 해당 메모에 추가하십시오. 따라서 사용자가 다시 돌아 오면 로그를 보게됩니다. TMemo 또는 TLabel 그것에 및 공공 procedure AppendLog(aMsg: string);와 사용자 정의 TForm 만들기

당신이 당신의 사용 시나리오에 확실히 더 잘 맞는 검색에 지출 것보다 훨씬 짧은 10 분의 문제입니다.

+0

옳은 방법이지만, 메모를 사용하지 않을 것입니다. 사용자가 특정 항목을 "받아 들일"수 있기 때문입니다. Microsoft Outlook 미리 알림이 단일 창에서보고되는 것과 유사합니다. 실제로 어떤 유형의 메시지가 여기에 표시되는지에 대해서는 거의 알지 못합니다. –

+2

@JerryDodge : "특정"을 수락하십시오 "이 항목을 설명하십시오. 제가 말하고자하는 바는 Mawg이 그가 필요로하는 방식으로 디자인을 할 수 있다는 것입니다. 결국 그는 혼자서 MessageBox를 시작하기를 원했습니다. 사용자 정의 폼을 사용하여 경계선없는 TMemo처럼 단순하게 유지하거나 종소리와 호루라기가있는 본격적인 Grid-Tree-ScrollBox로 이동할 수 있습니다. – Kromster

+0

캘린더 미리 알림을 추적하기 위해 Outlook을 사용한 적이 있다면 적어도 하나 이상의 미리 알림이있을 때 한 번만 표시되는 공통 창이 있으며 나열된 각 미리 알림은 지정된 기간 동안 해제되거나 일시 중지 될 수 있습니다. 다시 나타난다. 질문은 이것이 사실인지 아닌지를 나타내지 않으며 "사라졌을 때"메시지를 표시하는 비 모달 대화 상자에 대해서만 말합니다. –

5

Vcl.Dialogs 단위로 함수 CreateMessageDialog을 살펴보십시오. 이것은 표준 VCL MessageDialog 폼을 반환합니다.이 폼은 필요에 따라 조작 할 수 있고, 원하는대로 표시 할 수 있습니다.

+6

'모달'형식을 표시하지 않으면 해당 형식의 모달 결과가 아무런 영향을 미치지 않습니다. IOW, 모달로 표시하지 않으면 단추를 클릭하여'CreateMessageDialog'에 의해 반환 된 폼을 닫을 수 없습니다. –

+0

맞지만 다이얼로그를 닫고 "모달"결과를 설정하는 버튼에 핸들러를 부착 할 수 있습니다. –

+0

또한 넌 모달을 표시하는 경우 닫을 때 CloseAction을 caFree로 설정하는 TCloseEvent 핸들러를 추가하는 것을 고려해야합니다. –

6

응용 프로그램 워크 플로우를 방해하지 않고 사용자에게 알리는 메시지 만 표시하려면 Windows 풍선 팁을 사용해야합니다. 이들은 시스템 트레이 위에 팝업되는 풍선 모양의 메시지입니다. 델파이로를 보여주는 가장 쉬운 방법은 (내가 잘못 아니에요 경우 델파이 XE부터 사용 가능) 풍선 팁 http://docwiki.embarcadero.com/CodeExamples/XE5/en/TTrayIcon_(Delphi) http://docwiki.embarcadero.com/Libraries/XE5/en/Vcl.ExtCtrls.TTrayIcon

기본 동작은 사용자가 멀리 PC에서 만 때 그들이 볼 수있을 것입니다 TTrayIcon 콤포넌트를 사용하는 것입니다 사용자 활동 후 잠시 숨기기. 따라서 거의 사용자가 메시지를 볼 수 있습니다. 이 풍선 팁을 볼 시간을 설정할 수 있습니다. 사용자가 풍선 도움말을 클릭 할 때 발생하는 맞춤 이벤트를 만들 수 있습니다 (예 : 사용자에게 일부 선택 사항 제시). 풍선 도움말의 또 다른 장점은 게임, 영화 플레이어 등과 같은 모든 전체 화면 응용 프로그램을 사용할 때 팝업되지 않는다는 것입니다. 이러한 응용 프로그램의 전체 화면 모드를 종료하자마자 팝업이 표시됩니다.

1

JVCL에서 JvDesktopAlert를 확인해야합니다. TTrayIcon BallonHint와 유사한 기능을 제공하지만 더 구성 가능하며 여러 개의 (누적 된) 창을 표시 할 수 있습니다. 적어도 Delphi 7만큼 멀리 지원됩니다.

관련 문제