if Caption<>'' then
  begin
    Rect:=GetClientRect;
    FontHeight:=Canvas.TextHeight('W');
    Rect.Top = ((Rect.Bottom+Rect.Top)-FontHeight) div 2;
    Rect.Bottom = Rect.Top+FontHeight;
    Flags:=DT_EXPANDTABS or DT_VCENTER or Alignments[Alignment];
    Flags:=DrawTextBiDiModeFlags(Flags);
    DrawText(Canvas.Handle,PAnsiChar(Caption),-1,Rect,Flags);
  end; 这个是VCL给panel控件添加标题的代码,我怎么看都不懂,那位高手能帮我解释下,
这些函数都是什么意思!!! 感激不尽

解决方案 »

  1.   


    if Caption<>'' then
      begin
      Rect:=GetClientRect;                                    // 获取工作区(Panle)的坐标值
      FontHeight:=Canvas.TextHeight('W');                     //获取像'W'一样的字高
      Rect.Top = ((Rect.Bottom+Rect.Top)-FontHeight) div 2;   //设置字体顶部值
      Rect.Bottom = Rect.Top+FontHeight;                      //设置字体底部值
      Flags:=DT_EXPANDTABS or DT_VCENTER or Alignments[Alignment];//设置参数
      Flags:=DrawTextBiDiModeFlags(Flags);                     //设置参数
      DrawText(Canvas.Handle,PAnsiChar(Caption),-1,Rect,Flags);//写标题
      end; 
    还不明白就查Delphi Help
      

  2.   

    Rect:=GetClientRect;
    得到可视区域FontHeight:=Canvas.TextHeight('W');
      Rect.Top = ((Rect.Bottom+Rect.Top)-FontHeight) div 2;
      Rect.Bottom = Rect.Top+FontHeight;
    重新定义区域,使区域可以容纳文字的高度并垂直居中Flags:=DT_EXPANDTABS or DT_VCENTER or Alignments[Alignment];
    Flags:=DrawTextBiDiModeFlags(Flags);
    设置DrawText函数的标志,也就是设定DrawText绘制方式
    DrawText(Canvas.Handle,PAnsiChar(Caption),-1,Rect,Flags);
    在指定的设备上下文中以指定的标志和区域绘制文字,标志和函数本身可参考windows sdk帮助
      

  3.   

    Flags:=DT_EXPANDTABS or DT_VCENTER or Alignments[Alignment];
    这句是什么意思呢? 
      

  4.   

    drawtext绘制的文字矩形应具有DT_EXPANDTABS(可扩展)、DT_VCENTER(垂直居中)、Alignments[Alignment](你设置的水平对齐方式,在tpanel的属性面板可以设置)属性