• 窗体控件笔记


    顺便说一下,今天印花税下降,股市从早上开盘到现在一个小时升了9.06%,天啊,太疯狂了!

    最近要写一些硬件接口的程序(OPC、MOBY..)又从.NET回归到DELPHI了,又想抽象一些,所以写点笔记回忆一下写窗体控件!

    1.从窗体控件开始才有HANDLE熟悉,即TWinControl开始 ,但一般用TCustomControl来继承
    2.如果直接SHIFT点击引用的控件单元无法定位到哪个单元文件,说明引用的DCU不是个上次哪个,删除DCU,从新编译即可!(前提:你搜索路径对)
    3.修改组件的属性后,好像必须重新编译组件所在的包,否则就不会出现新的属性值!(好像有别的方法更快捷,忘记了)
    4.声明接受消息的事件必须在控件的protected属性下
    5.内嵌入TTimer组件的时候不能单元QExtCtrls,而应该是ExtCtrls,而且别挂到主窗体下去
    6.让程序在任务栏中隐藏,在主窗体的CREATE事件里面加
    //隐藏
    SetWindowLong(Application.Handle, GWL_EXSTYLE, WS_EX_TOOLWINDOW);
    //显示
    SetWindowLong(Application.Handle, GWL_EXSTYLE, WS_EX_APPWINDOW); 
       其实如果不是要放到控件内,就直接用FORM的HIDE方法就可以了,即最小化且在任务栏中隐藏了

    Delphi 2010可以在工程代码里面加:

      Application.MainFormOnTaskbar := True;
      Application.ShowMainForm := False;
      ShowWindow(Application.Handle, SW_HIDE);


    7.任务栏托盘上放图标,还是用TRAYICON控件比较好,自己写还是比较麻烦,不集成到控件内了!

    procedure WMSysCommand(var Message: TMessage); message WM_SYSCOMMAND;
    procedure Tfrmmain.WMSysCommand(var Message: TMessage);
    begin
        
    if Message.WParam = SC_ICON then
      begin
         
    //如果用户最小化窗口则将窗口
         
    //隐藏并在任务栏上添加图标
        Hide;
        TrayIcon1.TrayIcon(
    true);
      end
      
    else
      begin
         
    //如果是其它的SystemCommand
         
    //消息则调用系统缺省处理函数处理之。
         DefWindowProc(self.Handle,Message.Msg,Message.WParam,Message.LParam);
      end;
    end;
    托盘菜单内加
    procedure Tfrmmain.N1Click(Sender: TObject);
    begin
        Show;
      TrayIcon1.TrayIcon(
    false);
    end;
  • 相关阅读:
    高级前端工程师面试必备(持续更新中)
    用node编写cli工具
    用vscode开发vue应用
    jsbridge的js封装
    react-create-app 构建react项目的流程以及需要注意的地方
    【面试篇】寒冬求职季之你必须要懂的原生JS(中)
    基于vue-cli3.0构建功能完善的移动端架子,主要功能包括
    @vue/cl构建得项目下,postcss.config.js配置,将px转化成rem
    eslint prettier editrorconfig
    数据结构题集--集锦
  • 原文地址:https://www.cnblogs.com/enli/p/1168820.html
Copyright © 2020-2023  润新知