procedure tjcksz.fill_dbgrid(adoquery_vcl: tadoquery);
begin
  datamodule2.SHARE_DataSource.dataset := adoquery_vcl;
end;procedure TJCKSZ.suiTreeView1Click(Sender: TObject);
var
  click_node: string;
begin
    click_node := self.suiTreeView1.Selected.text;
    if click_node = 'HS编码' then begin
      fill_dbgrid(datamodule2.HS_CODE_ADOQuery);
      wwDBGrid1.Columns[0].DisplayWidth:=10;
      wwDBGrid1.Columns[1].DisplayWidth:=30;
      wwDBGrid1.Columns[2].DisplayWidth:=10;
      showmessage('hs');
    end;    if click_node = '报价汇率' then begin
      fill_dbgrid(datamodule2.BJHL_adoquery);
      wwDBGrid1.Columns[0].DisplayWidth:=10;
      wwDBGrid1.Columns[1].DisplayWidth:=30;
      wwDBGrid1.Columns[2].DisplayWidth:=10;
      showmessage('hv');
    end;end;在另外一个窗体调用:
procedure tcpgl.open_node(i: string);
var
  j: integer;
begin
  if not assigned(JCKSZ) then
  begin
    jcksz := tjcksz.create(nil);
    for j := 0 to jcksz.suitreeview1.items.count - 1 do
    begin
      if jcksz.suitreeview1.items.item[j].text = i then
      begin
        JCKSZ.suiTreeView1.items.item[j].selected := true;
        jcksz.suiTreeView1.OnClick(self);
        JCKSZ.showmodal;
        jcksz.free;
        jcksz := nil;
        exit;
      end;
    end;
  end;
end;wwdbgrid列宽不变,,如果用鼠标单击SUITREEVIEW控件时就改变,不知道怎么回事?
其中里面的SHOWMESSAGE每次都正确显示的,说明条件正确,但就是WWDBGRID列宽不变,
请教了。。

解决方案 »

  1.   

    …… 你为什么不写在OnChange事件?写在Click?
      

  2.   

    石头首先,OnChange事件直接就有Node给你用Sender: TObject; Node: TTreeNode。其次,最好别用OnClick事件,直接用Click方法。另外,你有没有仔细的单步调试?用用CodeSite。
      

  3.   

    好小子,又用InfoPower,又用suipack。强啊。
      

  4.   

    看石头的代码,我知道石头不经常用Ctrl + Shift + C不经常用Code Completion……
      

  5.   

    加了一行事件代码,14个字符搞定感谢reallike and leeon868 .so same man....^^