Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.09.24;
Скачать: CL | DM;

Вниз

запустить приложение сразу в tray   Найти похожие ветки 

 
Fly`   (2006-09-05 03:30) [0]

Господа, как сделать так, чтобы приложение при загрузке сразу "оказывалось" в tray? На форме я ставлю CheckBox "при загрузке не показывать", Checked запоминаю в INI. а на onFormShow пытаюсь спрятать окно - ругается. (при активном окне, убирать в трей могу FAQ прочитал ;-)
procedure TForm1.FormShow(Sender: TObject);
begin
  if cb_min.Checked then begin Form1.Hide end;
end;


 
Fay ©   (2006-09-05 07:02) [1]

Application.ShowMainForm ?


 
Elen ©   (2006-09-05 07:48) [2]

[1] +

with nidata do
begin
cbSize := SizeOf(TNotifylconData) ;
Wnd := Self.Handle;
uID := 1;
uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
uCallBackMessage := WM_USER + 123;
hlcon  := Application.Icon.Handle;
szTip :="Подсказка";
end;
//и добавляем ее в Трей
Shell_NotifyIcon(NIM_ADD, @nidata);  


Где nidata :TNotifylconData;


Где TNotifylconData = record
cbSize: DWORD;
Wnd: HWND;
uID: UINT;
uFlags: UINT;
uCallbackMessage: UINT;
hlcon: HICON;
szTip: array [0..63] of AnsiChar;
end;


 
vodvorezlaya   (2006-09-05 08:07) [3]

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, ShellApi, AppEvnts;

const
 WM_ICONTRAY = WM_USER + 1;

 
type
 TForm1 = class(TForm)
   procedure FormCreate(Sender: TObject);
   procedure FormDestroy(Sender: TObject);
 private
 TrayIconData: TNotifyIconData;
   { Private declarations }
 public
 procedure TrayMessage(var Msg: TMessage); message WM_ICONTRAY;

   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
with TrayIconData do
 begin
   cbSize := SizeOf(TrayIconData);
   Wnd := Handle;
   uID := 0;
   uFlags := NIF_MESSAGE + NIF_ICON + NIF_TIP;
   uCallbackMessage := WM_ICONTRAY;
   hIcon := Application.Icon.Handle;
   StrPCopy(szTip, Application.Title);
end;

 Shell_NotifyIcon(NIM_ADD, @TrayIconData);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
Shell_NotifyIcon(NIM_DELETE, @TrayIconData);
end;

procedure TForm1.TrayMessage(var Msg: TMessage);
begin
 case Msg.lParam of
   WM_LBUTTONDOWN:
   begin
     ShowMessage("Left button clicked - let""s SHOW the Form!");
     Form1.Show;
   end;
   WM_RBUTTONDOWN:
   begin
     ShowMessage("Right button clicked - let""s HIDE the Form!");
     Form1.Hide;
   end;
 end;
end;

end.

А в файле Progect1.dpr

program Project1;

uses
 Forms,
 Unit1 in "Unit1.pas" {Form1};

{$R *.res}

begin
 Application.Initialize;
 Application.ShowMainForm := false;
 Application.CreateForm(TForm1, Form1);
 Application.Run;
end.

Годится?


 
Fly`   (2006-09-05 13:54) [4]

Гуд, только теперь мне надо прочитать значение чекбокса до создания формы. делаю так :
program Project1;

uses
 Forms,
 IniFiles,
 Unit1 in "Unit1.pas" {Form1};
var
f:TIniFile;
fl:boolean;
{$R *.res}

begin
 Application.Initialize;
 f:=TIniFile.Create("folder.ini");
 fl:=f.ReadBool("form","cb_Min_Checked", false);
 Application.ShowMainForm:=not fl;
 f.Destroy;
 Application.CreateForm(TForm1, Form1);
 Application.Run;
end.


Не читает :-( ставит всегда значение, которое по умолчанию. В чем глюк !


 
Elen ©   (2006-09-05 14:01) [5]


>  В чем глюк !

Подумай ЧекБокс на форме которой еше не существует. Сначала создай форму!


 
Fly`   (2006-09-05 14:15) [6]

Значение ЧекБокса читается из INI и записывается в INI при создании и дестрое формы при помощи компонента TFormStorage из библиотеки RX. Значения пишутся в folder.ini, который по умолчанию помещен в c:\windows.
Соответственно, для установления значения Application.ShowMainForm мне надо прочитать ini до создания формы, что я и делаю.


 
Elen ©   (2006-09-05 14:21) [7]


> Fly`

Ты уверен что в файл правильно все пишется?


 
Fly`   (2006-09-05 14:31) [8]


> Ты уверен что в файл правильно все пишется?


точно! TFormStorage записывает логическую переменную как строку. А я то её читаю не как строку )

Всем спасибо! Разобрался! Всё работает!



Страницы: 1 вся ветка

Текущий архив: 2006.09.24;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.035 c
1-1155143860
Handle
2006-08-09 21:17
2006.09.24
Вопрос про SysListView.


4-1148470794
Nostradamus
2006-05-24 15:39
2006.09.24
моя DLL подгружается другими приложениями


15-1157516076
SergP
2006-09-06 08:14
2006.09.24
О переводе имен и фамилий.


1-1155117080
usrd
2006-08-09 13:51
2006.09.24
подсчет CRC методом XOR


3-1153372920
solenko
2006-07-20 09:22
2006.09.24
Поиогите составить запрос