• Delphi学习第13天笔记


    20210917_吴长星_学习笔记11

    MDI多窗口结构

    • 用于多窗口编程
    • 首先要设置主窗口,并设置其的FormStyle := fsMDIForm;
    • 然后其它窗口的FormStyle := fsMDIChild;
    • 主窗口中有个属性:WindowMenu,可以设置一个菜单项用来显示打开的窗口列表
      设置了此项后该菜单项会自动设置一个快捷键,
    • 配合CommonUnit单元中的OpenWindow方法以及JFcComponent单元中的TcywMDITaskBar
    • 其中TcywMDITaskBar直接拖到MDI的主窗口就行,不需要过多改动
    • ActiveMDIChild: 指当前显示的MDI子窗口的引用,没有显示时则为Nil

    Win32单元
    ImageList
    用于加载多张图片,并用于其它控件的使用
    PageControl
    每个页面都是独立的TTabSheet类型、
    ActivePage:当前选中的页面
    ActivePageIndex:当前选中的页面的序号
    Style:选项卡样式,tsTabs:win系统风格、tsButtonFlat平面风格、tsButton按钮风格
    TabPosition:选项卡标题的位置
    PageCount:选项卡的数量
    Pages[i: integer]:第i+1个选项卡的引用
    Images:指定一个ImageList控件,默认每增加一个页面,其图标也会相应设置成对应序号的图标
    Mutilines:设置一行装不下的标签页是否允许多行表示
    OnChange:当前选项卡的活动状态改变后触发
    OnChanging:当前选项卡的活动状态改变时触发,AllowChange参数表示是否允许改变活动状态
    TabSheet标签页的属性

    • PageIndex: 页面的位置,会自动调整,从0开始
    • ImageIndex:页面标题的图标在Images中的序号,从0开始
    • TabVIsible: 标签页标题是否可视。标题不可视代表标签页不可视
    • Visible;标签页的内容是否可视。内容不可视但标题可视
    • OnShow:当选项卡显示时触发。可用于按需初始化选项卡
    • OnHide:当选项卡隐藏时触发。

    CommonUnit中相关方法:
    ShowTabSheet(Page: TPageControl; Sheet: TTabSheet):仅显示选中的选项卡,其它隐藏
    ShowTabSheet(Page: TPageControl; Index: Integer);仅显示指定序号的选项卡,其它隐藏
    HideTabSheet(Page: TPageControl; Sheet: TTabSheet):仅隐藏选中的选项卡,其它显示
    HideTabSheet(Page: TPageControl; Index: Integer);仅隐藏指定序号的选项卡,其它显示
    ShowTabAll(Page: TPageControl; Visible: Boolean);全部选项卡隐藏或显示
    HIdeTabSheetHeight(Page: TPageControl;hOffset: Integer = 4):隐藏所有的选项卡标题

    增加一个TabSheet
    tmpSht := TTabSheet.Create(pgc);
    tmpSht.Caption := ‘Test’;
    tmpSht.PageControl := pgc; //指定该选项卡归属的PageControl

    删除一个TabSheet
    Pgc.Pages[Index].Free;

    交换两个TabSheet
    if Abs(I - J) = 1 then //如果这两个相邻
    pgcTest.Pages[I - 1].PageIndex := J
    else
    Begin //如果不相邻,则利用他们中间的一个选项卡作为跳板进行交换
    pgcTest.Pages[I - 1].PageIndex := I;
    pgcTest.Pages[J - 1].PageIndex := I - 1;
    end;

    事件是向一个组件发送消息,并响应该消息的结果。
    授权技术:组件依赖其所有者来处理它的事件

    Inline关键字:声明Inline的过程在编译时,会把调用该过程的地方用该过程的编译代码替换,提升运行效率,但也会使编译后的Exe文件变得更大。

    TList类:指针型列表,能接收所有类型的数据,并自动增长,比动态数组灵活,但动态数组有类型检查,而TList没有
    注意:保存的是指针类型
    这种初始化是错误的,只是将变量I的地址重复添加了21次,栈中存的全是I的值

    删除TList列表时,要先释放其中包含的所有对象
    在使用TList列表中的元素时,要先进行类型转换,此时容易出现类型不符的错误

    TObjectList:对象列表,类型为TObject,并且每个元素的Owner都为列表本身,即TObjectList负责其中元素的内存释放,在删除TObjectList时会自动释放其中的所有元素。

    System.Contnrs单元中
    TOrderedList:抽象类,使用TList类来保存元素.

    TStack:栈,先入后出,

    利用Add,直接将新增元素添加到列表末尾

    TQueue:队列,先入先出

    调用Insert,将新增元素添加到列表的第一位

    TStrings类:字符串列表抽象类。
    TStringList类:TStrings的子类。
    TStringList中存储的字符串可以是’Key=Val’形式的,此时可通过Values[‘Key’]来获取’Val’

  • 相关阅读:
    Python-Django学习
    Python+Selenium+Pycharm
    selenium基础实例学习
    Django实例
    Django路由机制
    Selenium爬取电影网页写成csv文件
    Numpy初步
    Python matplotlib图片转化成矢量图并裁剪
    先选先赢问题
    Python退火算法在高次方程的应用
  • 原文地址:https://www.cnblogs.com/wuchangxing/p/15305680.html
Copyright © 2020-2023  润新知