我在一个过程中动态的在窗口中创建一个控件,设置它的属性可以,但是如果要用到Handle句柄来操作的话所做操作就会无效。
比如说我在过程中创建一个TreeView,完成后设置属性OK。但我想取消横向滚动条就用
ShowScrollBar(TmpTreeView.Handle, SB_HORZ, False); 
这个时候操作无效,我用过其它的用Handle的函数,都是一样的,无效!
请问怎么回事,,程序如下procedure TFormMyFriendList.AddGroup(GroupCaption: String);
var
  TreeTmp         :TTreeView;
begin
  { 创建树 }
  TreeTmp                   :=  TTreeView.Create(Nil);  TreeTmp.Parent            :=  Self;
  TreeTmp.Align             :=  alClient;
  TreeTmp.BorderStyle       :=  bsNone;
  TreeTmp.Ctl3D             :=  False;
  TreeTmp.Font.Name         :=  'Arial';
  TreeTmp.Font.Size         :=  9;
  TreeTmp.Images            :=  ImageList1;
  TreeTmp.Name              :=  'Group_'+ IntToStr(OutlookBar.OutlookItems.Count - 1);
  TreeTmp.RightClickSelect  :=  True;
  TreeTmp.BorderColor       :=  clWhite;
  TreeTmp.ShowHint          :=  False;
  TreeTmp.ShowLines         :=  False;
  TreeTmp.ShowRoot          :=  False;
  TreeTmp.ReadOnly          :=  True;
  TreeTmp.OnClick           :=  suiTreeView1Click;
  TreeTmp.OnMouseDown       :=  suiTreeView1MouseDown;
上面操作都可以,
  ShowScrollBar(TreeTmp.Handle, SB_HORZ, False);    //取消横向滚动条
这句就不行了  TreeView_SetItemHeight(TreeTmp.Handle,130);     //设置项目高度
这句也不能。
反正只在有Handle的就不行。end;

解决方案 »

  1.   

    应该是没有问题的,看看我的测试代码:procedure TForm1.Button1Click(Sender: TObject);
    var TV:TTreeView;
        Node:TTreeNode;
        i:integer;
    begin
      TV:=TTreeView.Create(self);
      TV.Parent:=Form1;
      node:=TTreeNode.Create(TV.Items);
      for i:=1 to 500 do TV.Items.Add(node,'aaa');
      ShowMessage('产生滚动条');
      ShowScrollBar(TV.Handle,SB_VERT,False);
      ShowMessage('去掉滚动条');
      Node.Free;
      TV.Free;
    end;