哪位高手给俺讲讲with xx as xx do 的用法,谢谢!

解决方案 »

  1.   

    with  ... do
    是开域语句,如
    panel1.left:=10;
    panel1.top:=10;
    panel1.width:=10;
    可以写成
    with panel1 do
    begin
      left:=10;
      top:=10;
      width:=10;
    end;
    用这样的写法有时可以用基类,这样可以没有实例如:
    with TPanel.Create(Self) do
    begin
      Parent:=Form1;
      Left:=10;
      Top:=10;
    end;

    with TFormSplash.Create(Self) do
    begin
      ShowModal;
      Free;
    end;
    as 是强制类型转换
    如Sender as TButton
      

  2.   

    1、with xxxxx do 
    是delphi 中的开域语句,作用如下:
    加入有一段代吗:
      form1.edit1.text:="spankj";
      form1.edit1.color:=clwindows;
    你使用开域 with xxxxx do 就可以这样写:
      with form1 do 
        begin
           edit1.text:="spankj";
           edit1.color:=clwindows;
        end;
    2、xx as yy 是delphi 中的类转换语句
       还有 xx is yy 是判断xx 是不是yy 的实例。
    好好看看下面的贴子:
       http://expert.csdn.net/Expert/topic/1349/1349600.xml?temp=.4624597
    祝你好运
      

  3.   

    另外with xxx,yyy do
      begin
      end;
    这样的用法也有。但比较容易混淆。可以减少代码输入量。如果数据比较复杂不建议用这种方法
      

  4.   

    with doand as
    是两种东西,分开理解。
      

  5.   

    with query1 do
    begin
    close;
    sql.clear;
    sql.add('select * from student');
    open;
    end;
      

  6.   

    把你的问题结合起来讲就是这样的:
    比如你有若干个TButton对象,你想要把被单击的对象的Caption改为'Clicked',并使之向左移10个点,则你应该将这些TButton对象的OnClick事件指向同一处代码(如procedure TForm1.Button1Click(Sender: TObject);可由双击Button1产生),代码如下:
    with (Sender as TButton) do
    begin
      Caption:='Clicked';
      Left:=Left-10;
    end;
      

  7.   

    li_zhifu(东北人)可能是理解最正确的,同意。