转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> Delphi程序 >> 正文
小知识,如Form淡出、捕捉Form最小化         ★★★★

小知识,如Form淡出、捕捉Form最小化

作者:闵涛 文章来源:闵涛的学习笔记 点击数:973 更新时间:2009/4/23 18:30:46

(*)Form淡出
1)AnimateWindow(Form1.Handle,1000,AW_BLEND);//淡入
  AnimateWindow(Form1.Handle,1000,AW_HIDE or AW_BLEND);//淡出
2)窗体有AlphaBlend属性和AlphaBlendValue属性,将AlphaBlend属性设为True,然后在Timer组件中随着时间改变AlphaBlendValue的值(0-255)即可
  AlphaBlendValue:=1;//窗体透明

(*)捕捉Form最小化
定义一个过程
public
    procedure onminsize(var msg:twmsyscommand);message wm_syscommand;
procedure TForm1.onminsize(var msg: twmsyscommand);
begin
  if msg.CmdType=SC_MINIMIZE then
  begin
    form1.Width:=100;
    form1.Height:=100;
    form1.Left:=100;
    form1.Top:=300;
    exit;
  end;
  inherited;
end;

(*)createGuid(out newGUID)
   s:=GUIDToString(newGUID)

(*)四舍五入取正: y:=Round(x)

(*) string:=StringReplace(string1,''''*'''',''''#'''',[rfReplaceAll]);

(*)把一个string用单引号括起来作为string返回
  QuotedStr(const S: string): string

(*) 如何让DBGRID中的内容分页显示
  ADODataSet1.Open;
  ADODataSet1.Recordset.PageSize := 10;           //显示第一页  
  ADODataSet1.Recordset.AbsolutePosition := 1;
  ADODataSet1.Recordset.PageSize := 10;           //显示第二页
  ADODataSet1.Recordset.AbsolutePosition := 11;

(*)实现解析IP地址为主机域名
uses WinSock
过程如下:
  function IPAddrToName(IPAddr : String): String;
  var
    SockAddrIn: TSockAddrIn;
    HostEnt: PHostEnt;
    WSAData: TWSAData;
  begin
    WSAStartup($101, WSAData);
    SockAddrIn.sin_addr.s_addr:= inet_addr(PChar(IPAddr));
    HostEnt:= gethostbyaddr(@SockAddrIn.sin_addr.S_addr, 4, AF_INET);
    if HostEnt<>nil then
    begin
      result:=StrPas(Hostent^.h_name)
    end
    else
    begin
      result:='''''''';
    end;
  end;
使用函数:
var
  Name: string;
begin
  Name := InputBox(''''输入对方主机IP'''', ''''主机IP地址:'''', '''''''');
  showmessage(IpAddrToName(Name));
end;

(*)去掉twebbrowser右边的ScrollBar
WebBrowser1.oleobject.Document.body.Scroll := ''''no'''';

(*)TTreeView的结点如何具有CheckBox
TreeView有个Images属性,做三张小图片:
全选中、部分选中、不选状态(直接拍下CheckBox三种状态的图片在加工一下就可以了),然后在点击事件中根据具体情况设置TTreeNodes的ImageIndex就OK了。
重载TreeView的CreateParams:
type
  TCheckBoxTreeView = class(TTreeView)
  protected
    procedure CreateParams(var Params: TCreateParams); override;
  end;

procedure TCheckBoxTreeView.CreateParams(var Params: TCreateParams);
begin
  inherited;
  Params.Style:=Params.Style or TVS_CHECKBOXES;
  { TVS_CHECKBOXES declared in CommCtrl }
end;

如果要Check这个CheckBox,可以用下面的代码:
function IsNodeChecked(Node :TTreeNode) :Boolean;
const
  TVIS_CHECKED = $2000;
var
  TvItem :TTVItem;
begin
  TvItem.Mask  := TVIF_STATE;
  TvItem.hItem := Node.ItemId;
  TreeView_GetItem(Node.TreeView.Handle, TvItem);
  Result := (TvItem.State and TVIS_CHECKED) = TVIS_CHECKED;
end;

procedure SetNodeChecked(Node :TTreeNode; Checked :Boolean);
const
  TVIS_CHECKED = $2000;
var
  TvItem :TTVItem;
begin
  FillChar(TvItem, SizeOf(TvItem), 0);
  with TvItem do begin
    hItem     := Node.ItemId;
    Mask      := TVIF_STATE;
    StateMask := TVIS_STATEIMAGEMASK;
    if Checked then
      TvItem.State :=TVIS_CHECKED
    else
      TvItem.State :=TVIS_CHECKED shr 1;
    TreeView_SetItem(Node.TreeView.Handle, TvItem);
  end;
end;
可以做成事件和封装成一个类:
private OldState :Boolean;

procedure Change(Node: TTreeNode); override;
begin
  inherited Change(Node);
  OldState := IsNodeChecked(Node);
end;

procedure Click; override;
var
  NewState :Boolean;
begin
  inherited Click;
  NewState := IsNodeChecked(Self.Selected);
  if NewState = OldState then Exit;
  if (NewState) and Assigned(OnNodeChecked) then OnNodeChecked()
  else if (not NewState) and Assigned(OnNodeUnChecked) then
OnNodeUnChecked()

// OnNodeChecked & OnNodeUnchecked will be events that you declare
end;

(*)如何将stringgrid中每列的数据居中显示?
  (1)将stringgrid的defaultdraw设为:false;
  (2)procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;  Rect: TRect; State: TGridDrawState);
var
  sText: string;
begin
  with StringGrid1 do
  begin
    sText := Cells[ACol, ARow];
    if sText <> '''''''' then
    begin
      Canvas.FillRect(Rect);
      DrawText(Canvas.Handle, PChar(sText), Length(sText), Rect, DT_CENTER or DT_VCENTER or DT_SINGLELINE);
    end;
  end;
end;

DLL获得自己所在的路径:Windows.GetModuleFileName(HInstance,lp, 100);

Caption := Copy(Edit1.Text, 3, MaxInt); //建议,少计算一次

取得explorer句柄,线程
GetWindowThreadProcessID(FindWindow(''''ExploreWClass'''', nil), nil)
FindWindow(''''ExploreWClass'''', nil)

调用记事本
uses .... shellapi;
shellexecute(handle,nil,pchar(''''c:\windows\notepad''''),nil,nil,sw_shownormal);

用回车代替TAB  在onkeypress  写
    if  key=#13 then perform(WM_NEXTDLGCTL,0,0);


fieldName like "%''''+gA_FindValue+''''%"''''

formatFloat(''''0.00'''',doubleValue);  //格式化 Float ---> string

mailto:whj@aa.com?subject=subjectTille        ( &Attach=C:\Config.sys )

//返回给定月份的天数
uses SysUitls; // IsLeapYear
...
function DaysOfMonth(Date: TDateTime): integer;
var y, m, d: Word;
begin
   DecodeDate( Date, y, m, d );
   case m of
     2:  if IsLeapYear(y) then
           Result:=29 else Result:=28;
     1,3,5,7,8,10,12: Result:=31;
     4,6,9,11:        Result:=30;
  end;
end;

//触发一个错误
  raise Exception.Create(''''delete table Error'''');

//获取 IP 地址  (getIP.exe)
procedure TForm1.Button1Click(Sender: TObject);
var
  wVersionRequested : WORD;
  wsaData : TWSAData;
  p : PHostEnt;
  s : array[0..128] of char;
  p2 : pchar;
  OutPut:array[0..100] of char;
begin
 {Start up WinSock}
     wVersionRequested := MAKEWORD(1, 1);
     WSAStartup(wVersionRequested, wsaData);

{Get the computer name}
     GetHostName(@s, 128);
     p := GetHostByName(@s);

{Get the IpAddress}
     p2 := iNet_ntoa(PInAddr(p^.h_addr_list^)^);
     StrPCopy(OutPut,''''Hostname: ''''+Format(''''%s'''', [p^.h_Name])+#10#13+
                       ''''IP address: ''''+Format(''''%s'''',[p2])
                       );
     WSACleanup;
     MessageBox(0,OutPut,''''Get IP ! - this is your IP Address'''',mb_ok or mb_iconinformation);
end;


[Web开发]VB的窗体布局窗口为什么找不到窗体的Form1小图标  [电脑技术]UNformAT恢复格式化命令介绍
[VB.NET程序]Henry手记-VB.net WinForm中的FORM初探(三)  [VB.NET程序]Henry手记-VB.net WinForm中的FORM初探(二)
[VB.NET程序]Henry手记-VB.net WinForm中的FORM初探(一)  [VB.NET程序]使用vb.net 对 Windows Form 按列排序 ListView 项…
[Delphi程序]调用DLL文件中的FORM  [Delphi程序]BCB和Delphi中Form的事件触发顺序
[Delphi程序]设置可以从Windows资源管理器拖文件到 Form 上的 …  [Delphi程序]delphi create  Http link on your form
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台