안뇽하세요...
질문이 있습니다.
TrayIcon에서요.. 팝업메뉴를 만드는 방법좀 알려주세요..
그러니까 Icon에서 오른쪽 마우스클릭 했을때 나타나는
메뉴 말입니다....
프로그램을 만들어서 TrayIcon에 넣었는데 팝업메뉴에서
종료를 시킬려고 하는데 방법을 모르겠군요...
그리고 또한가지 TrayIcon에서 실행시킨 프로그램을 닫으면
그냥 종료되는데 폼을 Hide시켜서 TrayIcon은 살아있어서
언제든지 프로그램을 실행시킬수 있는 방법이 없을까요...
FormClose이벤트에서 Action := caHide 하니까 안되는군요..
어떻게 해야하는지...
그리고 마지막 질문입니다..(질문이 너무 많죠(^^;))
FileListBox에 파일리스트를 보여줄때 아이콘도 보여주는
방법은 없나요?
하하...바보같은 질문인가...
좀 갈켜주세요..
이상입니다..
> 그러니까 Icon에서 오른쪽 마우스클릭 했을때 나타나는
> 메뉴 말입니다....
제가 예전에 만들었던 부분의 소스를 약간 올려드리죠..
마우스 오른쪽 클릭은 WM_RBUTTONDOWN 메시지를 핸들링 하면되죠..
procedure TfrmFax.WndProc;
begin
case Message.Msg of
MY_SHOWFORM_ID:
case Message.lParam of
WM_LBUTTONDBLCLK: begin
Self.Show;
end;
WM_RBUTTONDOWN:ViewPopUp(TWMRButtonDown(Message))
end;
end;
inherited;
end;
procedure TFrmFax.ViewPopUp(var AMsg : TWMRButtonDown );
var PtMouse : TPoint;
begin
//현재의 마우스 포인터를 얻는다
GetCursorPos(PtMouse);
//팝업 메뉴를 띄운다.
PopUpMenu1.PopUp(PtMouse.X, PtMouse.Y);
end;
> 프로그램을 만들어서 TrayIcon에 넣었는데 팝업메뉴에서
> 종료를 시킬려고 하는데 방법을 모르겠군요...
> 그리고 또한가지 TrayIcon에서 실행시킨 프로그램을 닫으면
> 그냥 종료되는데 폼을 Hide시켜서 TrayIcon은 살아있어서
> 언제든지 프로그램을 실행시킬수 있는 방법이 없을까요...
TrayIcon에서 실행 시킴 파일을 종료 않구 Hide를 시키시려면 WM_SysCommand 메시지를 핸들링 하시면 될꺼예요.
procedure TFrmFax.WMSysCommand;
begin
if (Msg.CmdType = SC_CLOSE) then begin //폼 종료시 TrayIcon으로 복귀.
Self.Hide;
ShowWindow (Application.Handle, SW_HIDE);
end
else
inherited;
end;
팝업으로 종료 시키시려면 팝업에 종료 이벤트 하나 두시고 다음과 같이 하면 되죠..
procedure TFrmFax.X1Click(Sender: TObject); //종료 이벤트
begin
//트레이 아이콘을 없앤다. 원래는 없애지 않아도 폼을 종료하면
//자동으로 사라지긴 하지만 간혹 Tray에 남는 경우가 있더라구요.
Shell_NotifyIcon ( NIM_DELETE, @IconData );
//IConData는 트레이 정보를 가지고 있느 구조체.
// iconData : TNotifyIconData;
//폼을 종료한다.
Close;
end;