2012-12-20 7 views
6

Tôi có một TToolBar được tạo trong thời gian thiết kế không có ToolButton. Ý tưởng của tôi là tạo ToolButton trong thời gian chạy và đặt chúng ở đó khi các biểu mẫu của tôi được tạo ra, chỉ để hiển thị cho người dùng những biểu mẫu nào được mở mà không cần mở menu "Windows" trong menu chính.Làm cách nào tôi có thể gán sự kiện OnClick của một ToolButton khi chạy?

Tôi có một đơn vị có tên NavigationUtils.pas mà tôi sử dụng để lưu trữ các thủ tục/chức năng về điều hướng (khi tạo các nút khi biểu mẫu của tôi được tạo).

Câu hỏi đặt ra là: Làm cách nào tôi có thể định cấu hình sự kiện OnClick khi ToolButton được tạo?

+1

'NewToolButton.OnClick: = ... ' –

+1

Hi, @DavidHeffernan, tốt, tôi đã cố gắng điều này và nhận được lỗi: ** NavigationUtils.pas (24): Các kiểu không tương thích: 'TNotifyEvent' và 'thủ tục, con trỏ không định kiểu hoặc tham số chưa được nhập' ** – juniorgarcia

+0

Vâng, vấn đề chính xác như được mô tả. Bạn đang cố gán một thứ không phải là 'TNotifyEvent'. –

Trả lời

13

Từ nhận xét, rõ ràng là bạn không chỉ định TNotifyEvent cho sự kiện OnClick. Tờ khai TNotifyEvent là:

TNotifyEvent = procedure(Sender: TObject) of object; 

Vì vậy, bạn cần một thủ tục, với một tham số duy nhất của loại TObject, và các thủ tục phải có phương pháp của một đối tượng. Vì vậy, một cái gì đó như thế này:

procedure TMyForm.ToolButtonClick(Sender: TObject); 

Và sau đó bạn có thể gán nó như vậy:

NewToolButton.OnClick := ToolButtonClick; 
+0

Có và sự kiện phải được công khai. –

+0

@RolandBengtsson No. Nó có thể là riêng tư. –

+1

Xin chào, @DavidHeffernan. Người đàn ông, tôi đã tìm thấy giải pháp sau những gì bạn thấy và thêm "MyOnClickEvent" vào biểu mẫu chính, người chứa thanh công cụ được tạo trong thời gian thiết kế. Tôi chỉ cần cấu hình sự kiện của thanh công cụ ** toolbarFormsCustomDrawButton **, vì vậy tôi đã sử dụng Sender's Sender làm Sender cho thủ tục OnClick của nút đó được tạo trong thời gian chạy để tìm kiếm một biểu mẫu với chú thích của người gửi (TToolButton). Cảm ơn rất nhiều vì sự giúp đỡ! – juniorgarcia