在开发的过程中,遇到一个难题,如何在程序运行的时候  选中多个控件  对其 进行排序    现在我主要是不知道 如何选中多个控件  
    
    哪位大哥要是有好的解决办法,请赐教...小弟在这不胜感激啊..    如果能提供源代码的那就更感谢了...

解决方案 »

  1.   

    2L的朋友  灰常感谢你的回答...我已经把 cnpack的源码 下载下来了..可是 我找了一遍  不知道 要从哪里找..怎么找 可以找到我要的信息你能指点我一下吗?
      

  2.   

    找那些控件多选后对齐之类的代码.说真的,我没看过源码,不过CNPACK能实现,即源码中有代码可参考.
      

  3.   

    不运行的时候 可以按SHIFT 选中多个控件
    运行的时候貌似不能多选吧…… 
      

  4.   

    程序不運行的時候,按shift+多個組合組件可排序
      

  5.   

    创建一个列表,保存控件
    在mouseDown事件中
      if ssShift in shift then
      begin
        aList.add(sender as TWinControl);
      end;并且还有一些细节问题,比如选中控件显示,已选中控件第二次点击从列表删除等。
      

  6.   

    1:在命名控件时要以例如 panel001,memo002,panel003,来区别先后顺序,panel1,memo2,panel3,否则上了10个控件就会乱掉。
    2:新建一个aList:TStringList;
    3:在mouseDown事件中
      if ssShift in shift then
      begin
        (sender as TControl).font.color:=clred;给选中的控件的字体变颜色,以表示此控件选中了
        aList.add(rightstr((sender as TControl).name,3));  //将此控件的名称的最三位加载到alist当中去
      end;
    4:aList.sort   //排序
    5:
    for i:=0 to panel1.controlcount-1 do
    begin
      if alist.index(rightstr(panel1.controls[i].name,3)>=0
      begin
          Panel1.controls[i].位置:=index(rightstr(panel1.controls[i].name,3)  //看这个处于Alist的第几位,你就 把控件放到第几的位置(至于这个控件的第N个位置的left和top,你有你自己的算法,你自己搞定)
      end;
    end;
      

  7.   


    这位朋友,你好
    很感谢你抽空 关注了我这个问题
    你说的思路我有去尝试过...不过 有几个地方还是不理解为什么要取name的 后三位 ?
    这样做的话..还要去修改项目里的很多控件 不实用有没有办法 我选择什么控件..就对哪些控件排序呢?  而且是像 cnpack 那样 左对齐 右对齐 等等如果有好的想法..只需提供 思路就行..不胜感激
      

  8.   

    你说要排序,那么排序就总会有一个先后序顺吧?
    因为将控件的名称存入了aList:TStriingList里,而如果aList.sort后,如果控件超过了10个。例如1,2,3,4....12,13,14,.sort后就会变成了1,12,13,14,2,3,4。这样,顺序就乱掉了。而如果001,002,003,004,012,013,014,就不会乱了
      

  9.   

    http://www.cc616.com/delphi/delphi1689.aspx
    这个地址 有些说明