﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>博客园-万一的 Delphi 博客</title><link>http://www.cnblogs.com/del/</link><description>记录学习过程中的点点滴滴，是喜欢、不是职业；记性不好，特别需要这么一个博客。</description><language>zh-cn</language><lastBuildDate>Sat, 04 Jul 2009 12:49:34 GMT</lastBuildDate><pubDate>Sat, 04 Jul 2009 12:49:34 GMT</pubDate><ttl>60</ttl><item><title>太忙了</title><link>http://www.cnblogs.com/del/archive/2009/06/29/1513432.html</link><dc:creator>万一</dc:creator><author>万一</author><pubDate>Mon, 29 Jun 2009 10:08:00 GMT</pubDate><guid>http://www.cnblogs.com/del/archive/2009/06/29/1513432.html</guid><wfw:comment>http://www.cnblogs.com/del/comments/1513432.html</wfw:comment><comments>http://www.cnblogs.com/del/archive/2009/06/29/1513432.html#Feedback</comments><slash:comments>9</slash:comments><wfw:commentRss>http://www.cnblogs.com/del/comments/commentRss/1513432.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/del/services/trackbacks/1513432.html</trackback:ping><description><![CDATA[<br/>很多事, 忙得来不及上网.<br/><br/>

看到很多朋友的问题, 也没时间回复, 惭愧中...<br/><br/>

这些天没有继续 Delphi 的学习, 反而从沉淀中有些不好说的收获: 这之前了解了 Delphi 基本的一些东西, 好像学习才真正开始.<hr/><br/><img src ="http://www.cnblogs.com/del/aggbug/1513432.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47970/" target="_blank">19岁天才黑客发布首个iPhone 3GS破解软件</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>系统托盘组件 TTrayIcon 简介 - 回复 "三足乌" 的问题</title><link>http://www.cnblogs.com/del/archive/2009/06/05/1497187.html</link><dc:creator>万一</dc:creator><author>万一</author><pubDate>Fri, 05 Jun 2009 10:09:00 GMT</pubDate><guid>http://www.cnblogs.com/del/archive/2009/06/05/1497187.html</guid><wfw:comment>http://www.cnblogs.com/del/comments/1497187.html</wfw:comment><comments>http://www.cnblogs.com/del/archive/2009/06/05/1497187.html#Feedback</comments><slash:comments>13</slash:comments><wfw:commentRss>http://www.cnblogs.com/del/comments/commentRss/1497187.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/del/services/trackbacks/1497187.html</trackback:ping><description><![CDATA[<br/>
问题来源: <a href="http://www.cnblogs.com/del/archive/2009/06/05/1496857.html#1549294">http://www.cnblogs.com/del/archive/2009/06/05/1496857.html#1549294</a><hr/><br/>

TTrayIcon 的主要属性:<hr/><br/>

<b>TrayIcon.Icon</b><br/>
指定托盘图标, 有几种用法:<br/>
1、设计时选择;<br/>
2、把一个 TIcon 对象给它;<br/>
3、使用当前程序图标: TrayIcon1.Icon := Application.Icon;<br/>
4、TrayIcon1.SetDefaultIcon; 这也是使用当前程序图标.
<hr/><br/>

<b>TrayIcon.Icons</b> 与 <b>TrayIcon1.IconIndex</b><br/>
TrayIcon.Icons 对应一个 TImageList, 用 TrayIcon.IconIndex 来指定使用 TImageList 中的第一个图标.<br/>
这结合 TrayIcon 的其他功能做出图标动画都没有问题.
<hr/><br/>

<b>TrayIcon.PopupMenu</b><br/>
TrayIcon.PopupMenu 对应一个 TPopupMenu, 托盘图标一般少不了右键菜单.
<hr/><br/>

<b>TrayIcon.Visible</b><br/>
隐藏或显示系统托盘的图标; 虽简单、但关键, 因默认是 False.
<hr/><br/>

<b>TrayIcon.Hint</b><br/>
随鼠标指针的提示文本, 这是老式的, 下面有新型的.
<hr/><br/>

<b>TrayIcon.BalloonHint、BalloonTitle、BalloonFlags、BalloonTimeout</b><br/>
这都是新型的 Hint 相关的.<br/>
TrayIcon.BalloonHint: Hint 文本<br/>
TrayIcon.BalloonTitle: Hint 标题<br/>
TrayIcon.BalloonFlags: Hint 图标样式<br/>
TrayIcon.BalloonTimeout: Hint 停留时间<br/>
需要用 TrayIcon 的 ShowBalloonHint 方法启动显示
<hr/><br/>

<b>TrayIcon.Animate</b> 与 <b>TrayIcon1.AnimateInterval</b><br/>
TrayIcon 的新 Hint(BalloonHint)可设定动画.<br/>
TrayIcon.Animate: 这决定是否启用动画<br/>
TrayIcon1.AnimateInterval: 动画间隔时间
<hr/><br/>

TTrayIcon 的主要事件:<hr/><br/>

OnAnimate: 写动画代码的事件<br/>
OnBalloonClick: 点击 BalloonHint 时...<br/>
OnClick: 单击图标时...<br/>
OnDblClick<br/>
OnMouseDown<br/>
OnMouseMove<br/>
OnMouseUp
<hr/><br/>

TTrayIcon 还有两个方法, 前面都已提到了:<br/>
TTrayIcon.SetDefaultIcon;<br/>
TTrayIcon.ShowBalloonHint;
<hr/><br/>
<img src ="http://www.cnblogs.com/del/aggbug/1497187.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47969/" target="_blank">新浪邮箱大本营粉墨登场！Sina.cn开放注册</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>如何把窗体关闭到系统托盘 - 回复 "三足乌" 的问题</title><link>http://www.cnblogs.com/del/archive/2009/06/05/1497158.html</link><dc:creator>万一</dc:creator><author>万一</author><pubDate>Fri, 05 Jun 2009 09:27:00 GMT</pubDate><guid>http://www.cnblogs.com/del/archive/2009/06/05/1497158.html</guid><wfw:comment>http://www.cnblogs.com/del/comments/1497158.html</wfw:comment><comments>http://www.cnblogs.com/del/archive/2009/06/05/1497158.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.cnblogs.com/del/comments/commentRss/1497158.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/del/services/trackbacks/1497158.html</trackback:ping><description><![CDATA[<br/>
问题来源: <a href="http://www.cnblogs.com/del/archive/2009/05/15/1458017.html#1549351">http://www.cnblogs.com/del/archive/2009/05/15/1458017.html#1549351</a><hr/><br/>

代码文件:<hr/><br/>
<pre class=Delphi>
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, AppEvnts;

type
  TForm1 = class(TForm)
    TrayIcon1: TTrayIcon;
    Button1: TButton;
    procedure TrayIcon1Click(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure Button1Click(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

{关闭}
procedure TForm1.Button1Click(Sender: TObject);
begin
  Application.Terminate;
end;

{点击关闭按钮时让窗体最小化到系统托盘}
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  Tag := Ord(WindowState);
  WindowState := wsMinimized;
  TrayIcon1.SetDefaultIcon;
  TrayIcon1.Visible := True;
  Hide;
  CanClose := False;
end;

{点击系统托盘中的图标恢复窗口}
procedure TForm1.TrayIcon1Click(Sender: TObject);
begin
  TrayIcon1.Visible := False;
  Show;
  WindowState := TWindowState(tag);
  SetForegroundWindow(Handle);
end;

end.
<hr/>
</pre>
<br/>

窗体文件:<hr/><br/>
<pre class=Delphi>
object Form1: TForm1
  Left = 0
  Top = 0
  Caption = 'Form1'
  ClientHeight = 206
  ClientWidth = 339
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = []
  OldCreateOrder = False
  OnCloseQuery = FormCloseQuery
  PixelsPerInch = 96
  TextHeight = 13
  object Button1: TButton
    Left = 232
    Top = 40
    Width = 75
    Height = 25
    Caption = 'Button1'
    TabOrder = 0
    OnClick = Button1Click
  end
  object TrayIcon1: TTrayIcon
    OnClick = TrayIcon1Click
    Left = 160
    Top = 104
  end
end
<hr/>
</pre>
<br/><img src ="http://www.cnblogs.com/del/aggbug/1497158.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47969/" target="_blank">新浪邮箱大本营粉墨登场！Sina.cn开放注册</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>Delphi 的接口(5) - 一样的接口、不一样的实现 </title><link>http://www.cnblogs.com/del/archive/2009/06/05/1496912.html</link><dc:creator>万一</dc:creator><author>万一</author><pubDate>Fri, 05 Jun 2009 05:27:00 GMT</pubDate><guid>http://www.cnblogs.com/del/archive/2009/06/05/1496912.html</guid><wfw:comment>http://www.cnblogs.com/del/comments/1496912.html</wfw:comment><comments>http://www.cnblogs.com/del/archive/2009/06/05/1496912.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cnblogs.com/del/comments/commentRss/1496912.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/del/services/trackbacks/1496912.html</trackback:ping><description><![CDATA[<br/>
代码文件:<hr/><br/>
<pre class=Delphi>
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  end;

  IMyInterface1 = interface
    function Func(a,b: Integer): Integer;
  end;

  TAdd = class(TInterfacedObject, IMyInterface1)
  public
    function Func(a: Integer; b: Integer): Integer;
    destructor Destroy; override;
  end;

  TMul = class(TInterfacedObject, IMyInterface1)
  public
    function Func(a: Integer; b: Integer): Integer;
    destructor Destroy; override;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

{ TAdd }

destructor TAdd.Destroy;
begin
  ShowMessage('TAdd.Destroy');
  inherited;
end;

function TAdd.Func(a, b: Integer): Integer;
begin
  Result := a + b;
end;

{ TMul }

destructor TMul.Destroy;
begin
  ShowMessage('TMul.Destroy');
  inherited;
end;

function TMul.Func(a, b: Integer): Integer;
begin
  Result := a * b;
end;

{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);
var
  I: IMyInterface1;
begin
  I := TAdd.Create;
  ShowMessage(IntToStr(I.Func(9, 9))); {18}

  I := TMul.Create;  {I 在指向新的目标前会先释放前面所属的类}
  ShowMessage(IntToStr(I.Func(9, 9))); {81}
end;

end.
<hr/>
</pre><img src ="http://www.cnblogs.com/del/aggbug/1496912.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47969/" target="_blank">新浪邮箱大本营粉墨登场！Sina.cn开放注册</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>简单实现系统托盘 - 回复 "闪" 的问题</title><link>http://www.cnblogs.com/del/archive/2009/06/05/1496857.html</link><dc:creator>万一</dc:creator><author>万一</author><pubDate>Fri, 05 Jun 2009 04:15:00 GMT</pubDate><guid>http://www.cnblogs.com/del/archive/2009/06/05/1496857.html</guid><wfw:comment>http://www.cnblogs.com/del/comments/1496857.html</wfw:comment><comments>http://www.cnblogs.com/del/archive/2009/06/05/1496857.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cnblogs.com/del/comments/commentRss/1496857.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/del/services/trackbacks/1496857.html</trackback:ping><description><![CDATA[<br/>
问题来源: <a href="http://www.cnblogs.com/del/archive/2008/01/17/1043226.html#1548952">http://www.cnblogs.com/del/archive/2008/01/17/1043226.html#1548952</a><hr/><br/>

使用 Delphi 提供的 TTrayIcon 类, 两三行程序甚至不写程序(设计时选择几下)即可实现.<br/><br/>

设计时的准备工作:<br/>
1、添加 TTrayIcon、TPopupMenu 控件, TPopupMenu 用于托盘的右键菜单.<br/>
2、随意给 TPopupMenu 添加些菜单项.<hr/><br/>

代码文件:<hr/><br/>
<pre class=Delphi>
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, ExtCtrls;

type
  TForm1 = class(TForm)
    TrayIcon1: TTrayIcon;
    PopupMenu1: TPopupMenu;
    aaa1: TMenuItem;
    bbb1: TMenuItem;
    ccc1: TMenuItem;
    procedure FormCreate(Sender: TObject);
    procedure TrayIcon1DblClick(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  {指定图标, 这里是用程序相同的图标; 也可在设计时选择, 还可以指定一个图标组, 再用 IconIndex 切换}
  TrayIcon1.Icon := Application.Icon;
  {指定右键菜单}
  TrayIcon1.PopupMenu := PopupMenu1;
  {使之可见}
  TrayIcon1.Visible := True;
end;

{给图标添加到双击事件}
procedure TForm1.TrayIcon1DblClick(Sender: TObject);
begin
  ShowMessage('OnDblClick');
end;

end.
<hr/>
</pre>
<br/>

窗体文件:<hr/><br/>
<pre class=Delphi>
object Form1: TForm1
  Left = 0
  Top = 0
  Caption = 'Form1'
  ClientHeight = 206
  ClientWidth = 339
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = []
  OldCreateOrder = False
  OnCreate = FormCreate
  PixelsPerInch = 96
  TextHeight = 13
  object TrayIcon1: TTrayIcon
    OnDblClick = TrayIcon1DblClick
    Left = 152
    Top = 88
  end
  object PopupMenu1: TPopupMenu
    Left = 216
    Top = 88
    object aaa1: TMenuItem
      Caption = 'aaa'
    end
    object bbb1: TMenuItem
      Caption = 'bbb'
    end
    object ccc1: TMenuItem
      Caption = 'ccc'
    end
  end
end
<hr/>
</pre><img src ="http://www.cnblogs.com/del/aggbug/1496857.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47969/" target="_blank">新浪邮箱大本营粉墨登场！Sina.cn开放注册</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item></channel></rss>