当前位置:首页
开发技术指南» 文章正文
    引言:
 

 

    摘要: 如果我想在一幅图片的的指定位置修改它的像素值,设定自己需要的像素值,然后将改完后的图片保存,请问该怎么做?能给个demo吗?先谢谢了。 ......
    摘要: 我从网上找了一篇能够支持esmtp的源码,回来以后看到不支持cc和bcc就自己在 人家的基础上进行了添加,可是问题出现了,邮件的源文件应该没有问题,邮件构造成功,发件人那里多个人也能正常接收.发送的时候没有任何问题. 为了方便大家看清问题,我将构造好的邮件源码,和send()函数列出,请大家都来帮忙呀! 这是构造好的邮件信息: return-path: <angiin@sina.co......


請問一下下面這段代碼有什么區別﹐關于create(...)的

代碼如下﹕  
  procedure   TForm1.Button1Click(Sender:   TObject);  
  var  
        edit:tedit;  
  begin  
        //edit   :=   tedit.Create(nil);                 //1  
        //edit   :=   tedit.Create(self);               //2  
        //edit   :=   tedit.Create(application);//3  
        //edit   :=   tedit.Create(form1);             //4  
        edit.Parent   :=   form1;  
        edit.Visible   :=   true;  
  end;  
  我用1﹑2﹑3﹑4中的任一一行都得到相同的結果﹐那請問一下﹐它們有什么區別。  
   
  也是一個剛學D的同事問我﹐我不知道怎么回答﹐大家給我指點一下好嗎

NO.1   作者: linuxyf

组件有拥有其他组件的性能。一个组件的拥有者是由它的Owner属性指定的。如果一个组件拥有其他组件,则当它被析构时,它负责释放它拥有的组件。通常,窗口拥有在它上面出现的所有组件。  
  如果你在窗口设计时把组件放置在窗口上,窗口将自动成为组件的拥有者。当你在运行期间创建一个组件时,必须向组件的Create构造器传递组件的拥有关系;它被设置为新组件的Owner属性。下面一行  
  语句表示了如何向TButton.Create(   )构造器传递窗口隐含的参数Self。这样使窗口成为新创建组件的拥有者:  
  Mybutton:=TButton.create(self);  
  当窗口被析构时,与MyButton有关的TButton实例也会被析构。这是在VCL内部处理的。实质上,窗口再次通过Components数组属性遍历组件并析构它们。  
  通过传递nil给组件的Create()方法,可以创建一个不具备拥有者的组件。不过,如果这样做了,编程时你需要负责组件的删除。下列代码显示了这个技术:  
  Mytable:=TTable.create(nil)  
  try  
  ....  
  finally  
  Mytable.free;  
  end;  
  要使用这个技术,应当用一个try.   .   .   finally块来确保出现异常时释放所分配的资源。你不应使用这个技术,除非特殊情况—不能给组件指定拥有者。  
  另一个有关拥有关系的属性是Components属性。Components属性是一个数组属性,包含一个组件所拥有的全部组件的列表。例如,要遍历一个窗口的所有组件以显示它们的类名称,需要执行下列代码:  
  var    
  i:integer;  
  begin  
  for   i:=0   to   ComponentCount-1   do  
  showmessage(Components[i].classname);  
  end;  
  显然,你还可以针对这些组件执行更有意义的操作。这里只是简单地说明这一技术。

NO.2   作者: caohonglong2000

2和3基本没有区别。  
  self表示创建的控件属于他所在的单元,应该是form1了  
  application指的是应用程序,在你这里估计也是form1  
  而nil主要是指空的,及需要付值  
   
  *个人意见,仅供参考*

NO.3   作者: SOFTWATER

赞同   linuxyf   观点!   楼主应该看看   DDG

NO.4   作者: FrameSniper

Owner参数负责被创建对象的内存释放  
   
  edit   :=   tedit.Create(nil);                 //不指定拥有者,但程序结束的时候进程空间都没有了,肯定这个Edit也没有了,呵呵....  
  edit   :=   tedit.Create(self);               //Self就是Edit所在窗体  
  edit   :=   tedit.Create(application);//指定有程序释放,其实不指定也一样  
  edit   :=   tedit.Create(form1);             //和2完全一样,只不过一个用了隐含参数而已  
 


    摘要: 删除回复 2003-8-1 19:38:26 删除一条回复,扣除回复人信誉分2分,贴子id:2097551;回复内容:金雪根 saucer .net pa,usa =========== 他就是思归。 删除回复 2003-8-1 19:38:23 删除一条回复,扣除回复人信誉分2分,贴子id:2097551;回复内容:csdn 金雪根 saucer .net pa,usa csdn 孟宪......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE