Lập trình thay đổi Component Palette của Delphi IDE
Nếu bạn thường làm vic với Delphi, nếu Delphi của bạn đã được cài đặt thêm
rất nhiều các thành phn điều khiển (component) và nếu bạn luôn phải sử dụng
rất nhiều component trongc dự án của mình thì có bao gibạn thấy mệt mỏi
khi phải tìm đến biểu tượng component Palette mà mình mong muốn trên
thanh ng c Component hay kng?
Component Palette ca Delphi IDE đơn giản là một điều khin dạng TAB với
tiêu đề chỉ gồm một hàng duy nhất, vì vy sẽ khiến bn mất nhiều thời gian tìm
kiếm khi có qnhiều component. Bài viết này nhằm giúp giải tỏa "nỗi bức
xúc" tn bng cách thiết lp thuộc tính Multi-lines cho điu khiển TAB
Component Palette bằng những thủ thuật đơn giản mà có khi bn không hề ngờ
tới. đây tôi sử dụng Delphi 7 tuy nhiên vi các phiên bn thấp hơn cũng
không có nhiu thay đổi.
Giới thiệu về Delphi IDE
Delphi IDE (Integrated Development Environment) là môi trưng phát trin
tích hp của Delphi. Tùy thuc vào từng phiên bn cụ thể của Delphi các
thành phn của Delphi IDE cũng nhng thay đổi nht định. Chẳng hạn trong
Delphi 7, IDE gồm có 5 thành phần chính đó là:
1. Cửa sổ chính của Delphi: Tên của cửa sổ này là TAppBuilder. Cửa s
này bao gồm trình đơn, các thanh công cvà một bảng gồm các công cụ pt
trin (Component Palette).
2. Cửa sổ thiết kế FORM: Đây chính là cửa sổ thực tế nh cho chương trình
ứng dng của bn. Khởi đầu ca sổ là mt FORM trống mỗi khi bạn khởi động
Delphi.
3. Cửa sổ Object Inspector: Tên của cửa sổ là TPropertyInspector. Đây là
cửa sổ cho pp bn thay đổi các thuộcnh cho thành phn tn FORM như
tiêu đề, tên... một cách trực quan.
4. Cửa sổ soạn thảo mã lnh Code Editor: Tên mã của ca sổ là TEditWindow.
Đây là nơi thực sự th hiện nội dung ca chương trình, là nơi bạn gõ lnh, thiết
kế nội dung cho thủ tục, cho hàm cài đặt các phương thc cho lp.
5. Cửa sổ Object TreeView: Tên mã của cửa sổ là TObjectTreeView. Cửa ssẽ
thhiện cho bạn một cách trực quan thứ tự cha con của các thành phn có mặt
trên FORM...
Bn thân Delphi IDE là một môi trường lp ghép. Delphi mở ra cho bạn rất
nhiu ch tiếp cận để thay đổi và chnh sửa sao cho phù hp và thun lợi với
từng nhân. Chẳng hạn, thanh Component Palette của Delphi IDE thực tế là
một đối tượng TTabControl không hơn kng kém. Bạn có thể thấy được điu
này thông qua một phần đon mã dùng đi đặt cho cửa sổ TAppBuilder.
object TabControl: TComponentPaleAppBuildertteTabControl
Left = 0
Top = 0
Width = 64
Height = 47
Align = alClient
Constraints.MinWidth = 20
HotTrack = True
PopupMenu = PaletteMenu
TabOrder = 0
TabStop = False
OnChange = TabControlChange
OnDragDrop = TabControlDragDrop
OnDragOver = TabControlDragOver
OnEndDrag = TabControlEndDrag
OnMouseDown = TabControlMouseDown
OnMouseMove = TabControlMouseMove
OnStartDrag = TabControlStartDrag
BorderStyle = bsNone
OnHelpRequest = ComponentPaletteHelpRequest
object PageScroller1: TPageScroller
Left = 32
Top = 6
Width = 31
Height = 39
Align = alClient
AutoScroll = True
TabOrder = 0
OnScroll = PageScroller1Scroll
end
object Panel2: TPanel
Left = 4
Top = 6
Width = 28
Height = 39
Align = alLeft
BevelOuter = bvNone
TabOrder = 1
object SelectorButton: TSpeedButton
Left = 0
Top = 0
Width = 28
Height = 28
GroupIndex = 1
Down = True
Flat = True
end
end
end
end
Như vậy, haich để thiết lp thuộc tính Multi-lines cho điều khiển TAB
Component Palette. Ý tưởng của cách thnhất là trực tiếp thay đổi mã nh
phân của file delphi32.exe trong thư mục BIN của Delphi. Để làm được điu
này các bn hãy thêm vào phần cài đặt thuộc tính của TabControl trong đoạn
trên dòng lnh sau:
MultiLine = True
Tôi đã thử cách này kết quả mang lại khá tốt. Tuy nhiên cáchy có một
nhược điểm nhỏ khi Component Palette của bạn đang ở trạng thái Dock trên
cửa sổ chính của Delphi tviệc thay đổi ch thước xem chng kng thể
(xem nh 1).
nh 1: Lỗi với ch sửa trực tiếp file delphi32.exe
Ý tưởng ca cách th2 là ta s viết một component nhỏ. Mỗi khi Delphi nạp
component y sẽ có nhiệm vđi tìm ca sổ chính của Delphi, tiếp đến tìm
đúng điều khiển TAB Component Palette thay đổi trực tiếp thuộc tính
MultiLine ca TAB. Tng thì cnhư là chuyện không tưởng nhưng như đã đề
cập, Delphi IDE là một môi trường lắp ghép chuyên nghiệp. Bản thân Delphi
IDE m ra rất nhiều hướng để bạn tùy biến. Cng ta sẽ tng bước tìm hiu mã
lệnh để thc hiện nhng công việc trên.
Tìm cửa sổ cnh của Delphi
rất nhiều cách để tìm đến cửa sổ chính của Delphi. Lưu ý, component
bạn chuẩn bị viết tương tác trực tiếp với Delphi IDE nên bản tn nó lấy cửa sổ
Application như là cửa sApplication ca Delphi. Vì vy, theo ý kiến riêng,
bạn có th ng đoạn mã sau để tìm cửa sổ chính:
function GetIdeMainForm: TCustomForm;
begin
Result := TForm(Application.FindComponent(AppBuilder));
end;
Tìm điều khin TAB Component Palette
Để tìm được điu khiển TAB này, bn hãy dùng đon mã sau:
function GetTabControl : TTabControl;
var
MainForm : TCustomForm;
begin
Result := nil;
MainForm := GetIdeMainForm;
if MainForm <> nil then
Result := TTabControl(MainForm.FindComponent(TabControl))
end;
Tìm menu popup của điều khiển TAB Component Palette
Đểm được điều này, bn hãy dùng:
function GetComponentPalettePopupMenu : TPopupMenu;
var
MainForm : TCustomForm;
begin
Result := nil;
MainForm := GetIdeMainForm;
if MainForm <> nil then
Result := TPopupMenu(MainForm.FindComponent(PaletteMenu));
end;
Sở dĩ chúng ta mun tìm menu popupy vì ta s thêm một mục chọn Multi-
Lines dùng để chuyển đổi giữa hai trạng ti của TAB Component Palette
(xem nh 2).
nh 2: Mục chọn mi
Toàn b nội dung mã lnh của component có thể xem phần " nguồn".
Cài đặt và sử dng
Để sử dụng component vừa tạo, bạn cần phải cài đặt vào Delphi IDE.
Bước 1. Lưu toàn bnội dung mã lệnh ở trên o một file, chẳng hạn tôi chọn
file tên là IdeEnhancement.pas.
Bước 2. Chọn chứcng Install Component trên menu Component của Delphi
IDE. Một cửa sổ mới xuất hiện. Bạn hãy khai báo các thông tin như ở hình 3.
Sau đó nhn OK.