Welcome

首页 / 软件开发 / Delphi / Delphi中继承方式使用控件

Delphi中继承方式使用控件2013-12-12 博客园 万一以前写代码, 总是把主单元弄得满满当当; 现在更喜欢把控件比较独立的功能写成一个单元, 改写属性、 重载方法...哪怕只有一点点和默认不同, 也喜欢独立出来. 刚刚用到 TListBox, 需要能拖动元素、双击删除.

 

unit ListBox2; interfaceusesSystem.Classes, Vcl.Controls, Vcl.StdCtrls, System.Types; typeTListBox2 = class(TCustomListBox)protectedprocedure DragOver(Source: TObject; X: Integer; Y: Integer; State: TDragState; var Accept: Boolean); override;procedure DblClick; override;publicconstructor Create(AOwner: TComponent); override;procedure DragDrop(Source: TObject; X: Integer; Y: Integer); override;end; implementation{ TListBox2 }constructor TListBox2.Create(AOwner: TComponent);begininherited;DragMode := dmAutomatic;end; procedure TListBox2.DblClick;begininherited;Items.Delete(ItemIndex);end; procedure TListBox2.DragDrop(Source: TObject; X, Y: Integer);begininherited;Items.Exchange(ItemIndex, ItemAtPos(Point(X,Y), True));end; procedure TListBox2.DragOver(Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);begininherited;Accept := True;end; end.
测试:

uses ListBox2; procedure TForm1.FormCreate(Sender: TObject);beginwith TListBox2.Create(Self) dobeginParent := Self;Align := alLeft;Items.CommaText := "A,B,C,D,E,F,G";end;end;