| Autor | Správa |
ha2
 Užívateľ
 Založený: 21.12.2008 Príspevky: 114
 |
Robim v D2009 pre .NET a nedari sa mi minimalizovat aplikaciu do tray. Nasiel som nato funkcny kod ktory mi v D7 ide ale v 2009 uz nie. Mate stym skusenost? Nasiel som toho teda viac ale neslo to.
Ide mi hlavne o vytvorenie ikonky, minimalizovanie a skrytie z pruhu problem nieje. |
| |
  |
 |
Fico
 Skúsený užívateľ
 Založený: 11.01.2009 Príspevky: 1052
 | Zaslal: Po 01.02.10 12:39 |   |
Používal si hotové komponenty, alebo si skúšal aj API funkcie? Skús aj tento kód (i keď vravíš, že si skúšal už viac spôsobov, skús ešte tento):
| kód: |
uses
(* ... *), ShellAPI;
type
TForm1 = class(TForm)
//...
procedure WndProc(var Message: TMessage); override; // toto pripíš medzi ostatné funkcie
private
IconNotifyData : TNotifyIconData;
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.WndProc(var Message: TMessage);
begin
case Message.Msg of
WM_SYSCOMMAND: case Message.WParam and $FFF0 of
SC_MINIMIZE: begin
Hide;
Exit;
end;
SC_RESTORE: ;
end;
WM_USER + 1: if (Message.LParam = WM_LBUTTONDOWN) then Show;
end;
inherited;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
with IconNotifyData do begin
hIcon := Application.Icon.Handle;
uCallbackMessage := WM_USER + 1;
cbSize := sizeof(IconNotifyData);
Wnd := Handle;
uID := 100;
uFlags := NIF_MESSAGE + NIF_ICON + NIF_TIP;
end;
StrPCopy(IconNotifyData.szTip, Application.Title);
Shell_NotifyIcon(NIM_ADD, @IconNotifyData);
Application.ShowMainForm := False;
SetWindowLong(Application.Handle, GWL_EXSTYLE, WS_EX_TOOLWINDOW);
end; |
|
| |
   |
 |
ha2
 Užívateľ
 Založený: 21.12.2008 Príspevky: 114
 | Zaslal: Po 01.02.10 13:15 |   |
| kód: | | [DCC Error] Unit1.pas(58): E2003 Undeclared identifier: 'StrPCopy' |
ShellAPI som samozrejme pripojil |
| |
  |
 |
Fico
 Skúsený užívateľ
 Založený: 11.01.2009 Príspevky: 1052
 | Zaslal: Po 01.02.10 13:24 |   |
Funkcia StrPCopy sa nachádza v unite SysUtils.
// túto funkciu aj tak môžeš vynechať, tá len skopíruje názov aplikácie to popisku tray ikony |
| |
   |
 |
ha2
 Užívateľ
 Založený: 21.12.2008 Príspevky: 114
 | Zaslal: Po 01.02.10 13:45 |   |
| kód: | //StrPCopy(IconNotifyData.szTip, Application.Title);
//Shell_NotifyIcon(NIM_ADD, @IconNotifyData); |
musel som to takto, ale kvoli tomu druhemu komentu asi nemam ikonu dole ze
A naten 2. riadok to pise toto
| kód: | | [DCC Error] Unit1.pas(59): E2396 Unsafe code only allowed in unsafe procedure |
|
| |
  |
 |
ha2
 Užívateľ
 Založený: 21.12.2008 Príspevky: 114
 | Zaslal: Po 01.02.10 15:21 |   |
|
  |
 |
Fico
 Skúsený užívateľ
 Založený: 11.01.2009 Príspevky: 1052
 | Zaslal: Po 01.02.10 16:53 |   |
| ha2 napísal: | A na ten 2. riadok to pise toto
| kód: | | [DCC Error] Unit1.pas(59): E2396 Unsafe code only allowed in unsafe procedure |
|
Sem sa rieši, ako kompilovať pre .NET , ale s tým ja nemám skúsenosti.
| ha2 napísal: | nasiel som toto, ale neviem sa ztoho vysomarit
| kód: | | http://www.swissdelphicenter.ch/torry/showcode.php?id=1303 |
|
V tom príklade je toho strašne veľa nepodstatného - v mojom poste som sa snažil dať len dôležité veci (to okomentovanie posledného riadku ti nepomôže, lebo ako si napísal, nebudeš mať dolu ikonu ) |
| |
   |
 |
ha2
 Užívateľ
 Založený: 21.12.2008 Príspevky: 114
 | Zaslal: Po 01.02.10 23:47 |   |
D2009 ma komponentu TrayIcon. co viac dodat... |
| |
  |
 |
|