Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.09.24;
Скачать: [xml.tar.bz2];

Вниз

запустить приложение сразу в 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.052 c
15-1157346516
Ega23
2006-09-04 09:08
2006.09.24
С Днём рождения! 2 сентября


15-1157537474
Alarm
2006-09-06 14:11
2006.09.24
CopyRight на CD


2-1157378897
_Gras_
2006-09-04 18:08
2006.09.24
не создавать дочернюю форму


1-1155201757
DelphiLexx
2006-08-10 13:22
2006.09.24
Проблемы с OnCalcFields


15-1157631865
Yegorchic
2006-09-07 16:24
2006.09.24
Сервер и клиент





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский