-
Добрый день! Пишу проект в Delphi2005 .NET. Код сворачивает прогу в трей. В приведенном ниже коде возникает ошибка "Object reference not set to an instance of an object" при попытке других действий с формой (перетаскивание, ресайзинг, закрытие) при выполнении inherited. В Win-приложении все нормально. Благодарю за ответы.
type TForm1 = class(TForm) PopupMenu1: TPopupMenu; N1: TMenuItem; N3: TMenuItem; N2: TMenuItem; N4: TMenuItem; N5: TMenuItem; StatusBar1: TStatusBar; PageControl1: TPageControl; TabSheet1: TTabSheet; DBGrid1: TDBGrid; TabSheet2: TTabSheet; procedure N4Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure N1Click(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure N5Click(Sender: TObject); procedure ReViewExecute(Sender: TObject); protected procedure WMSYSCOMMAND(var Msg: TMessage); message WM_SYSCOMMAND; procedure IconMouse(var Msg: TMessage); message WM_USER + 1; private { Private declarations } public { Public declarations } end;
var Form1: TForm1;
Function ReadUserName:string; Procedure Ic(n:Integer;Icon:TIcon);
implementation
uses Data, NewZ;
{$R *.nfm} // включить небезопасный код {$UNSAFECODE ON}
procedure TForm1.WMSYSCOMMAND(var Msg: TMessage); begin if Msg.WParam = SC_MINIMIZE then begin Ic(1, Application.Icon); // Добавляем значок в трей Form1.Hide; // Скрываем форму end else inherited;// ОШИБКА end;
procedure TForm1.IconMouse(var Msg: TMessage); var p: tpoint; begin GetCursorPos(p); // Запоминаем координаты курсора мыши case Msg.LParam of // Проверяем какая кнопка была нажата {Действия, выполняемый по одинарному или двойному щелчку левой кнопки мыши на значке. В нашем случае это ввод новой записи} WM_LBUTTONUP, WM_LBUTTONDBLCLK: begin Ic(3, Application.Icon); // Удаляем значок из трея Form1.N1Click(N1);// вводится новая запись end; WM_RBUTTONUP: {Действия, выполняемый по одинарному щелчку правой кнопки мыши} begin SetForegroundWindow(Handle); // Восстанавливаем программу в качестве переднего окна PopupMenu1.Popup(p.X, p.Y); // Заставляем всплыть TPopUp PostMessage(Handle, WM_NULL, 0, 0) // Обнуляем сообщение end; end; end;
Procedure Ic(n:Integer;Icon:TIcon); unsafe;
Var Nim: TNotifyIconData; begin With Nim do begin cbSize:=SizeOf(Nim); Wnd:=Form1.Handle; uID:=1; uFlags:=NIF_ICON or NIF_MESSAGE or NIF_TIP; hicon:=Icon.Handle; uCallbackMessage:=wm_user+1; szTip:='Регистрация заявок'; End; Case n OF 1: Shell_NotifyIcon(Nim_Add,Nim); 2: Shell_NotifyIcon(Nim_Delete,Nim); 3: Shell_NotifyIcon(Nim_Modify,Nim); End end;
-
> В Win-приложении все нормально.
а приведенный код - это какое приложение?
-
Это приложение VCL .NET В D7 у меня тоже все ОК
-
Это не приложение VCL .NET
-
Удалено модератором
-
Удалено модератором
|