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

2016-02-19 13:21 18 1 收藏

清醒时做事,糊涂时读书,大怒时睡觉,无聊时关注图老师为大家准备的精彩内容。下面为大家推荐小知识,如Form淡出、捕捉Form最小化,无聊中的都看过来。

【 tulaoshi.com - 编程语言 】

  (*)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 HostEntnil 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)

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  调用记事本
  uses .... shellapi;
  shellexecute(handle,nil,pchar('c:windowsotepad'),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 )

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  //返回给定月份的天数
  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;

来源:http://www.tulaoshi.com/n/20160219/1603929.html

延伸阅读
标签: 浏览器
解决IE窗口始终最小化的问题   有些用户由于一些误操作,导致每次打开的新窗口都是最小化窗口,即便单击最大化按钮后,下次启动IE后新窗口仍旧是最小化的。 这是什么原因呢?这是由于IE具有自动记忆功能,它能保存上一次关闭窗口后的状态参数,IE本身没有提供相关设置选项,不过可以借助修改注册表来实现,下面小编教你一种解决方...
标签: 电脑入门
Delay is the deadliest form of denial.拖延其实就是最彻底的拒绝 In fact, I love you very much, but you don't know. You are the apple of my eyes.你是我最珍贵的人 East or west , home is best Say, you love me There is no hiding from lover's eyes.什么也瞒不过恋人的眼睛。 I just need someone who never lets me down
使用过DELPHI的朋友都会注意到DELPHI本身最上面的窗口, 当它极大时只占屏幕的一小部分,它是如何实现的呢,请看下面的说明: 1)在FORM私有声明部分加上如下一行: procedureMessage :TWMGetMinMaxInfo ); message WM_GETMINMAXINFO; WMGetMinMaxInfo( var 2)在声明部分加上如下几行: procedure TForm1.WMG...
标签: Web开发
代码如下: ?php // signup.php // demonstrates a simple multipage form using xajax // and the xajax.getFormValues() function. // using xajax version 0.1 beta4 // http://xajax.sourceforge.net session_start(); include ("xajax.inc.php"); function processForm($aFormValues) {         if (a...
MSN怎么最小化到右下角?   其实这个主要是微软自家的Windows Live Messenger也就是MSN没有完好的兼容windows7,所以默认Windows Live  Messenger 的图标不会最小化到托盘区,其实只需要一个小小的修改就可以实现这个功能了 具体操作如下: 如果 Windows Live Messenger 正开着, 先将其关掉; 然后鼠标点击你之前...

经验教程

57

收藏

11
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部