Trước Delphi 2006 (tôi nghĩ) đã giới thiệu TFlowPanel và TGridPanel, tôi đã thực hiện một điều khiển tương tự về khái niệm. Nó vẫn làm một vài điều những điều khiển không làm, và khi nâng cấp mã của tôi để Delphi 2009, tôi quyết định thêm một vài cải tiến cho điều đó là tốt.Kéo và thả thiết kế thời gian trong Delphi?
Ngay bây giờ, thứ tự các điều khiển con được xác định theo thứ tự tạo của chúng. FlowPanel và GridPanel cho thấy một cách tốt hơn với ControlIndex và các thuộc tính được lọc khác, nhưng tôi đã tự hỏi nếu có một cách để xử lý kéo và thả sắp xếp lại trong thiết kế thời gian? Theo như tôi có thể nói, kéo một điều khiển chỉnh sửa và thả nó vào bảng điều khiển của tôi không gọi bất cứ điều gì mà tôi có thể truy cập vào lúc thiết kế.
Tôi đã tưởng tượng một cách để phát hiện hoạt động thả trực tiếp hoặc có thể phát hiện khi điều khiển được di chuyển để tôi có thể xác định nơi cần đi.
Bất kỳ ý tưởng nào?
Cập nhật: OK, đã hoạt động. Kiểm soát vùng chứa đã được ghi đè AlignControls để quản lý vị trí của các điều khiển. Khi bạn kéo điều khiển lồng nhau và thả nó, AlignControls lại được gọi. Sau đó tôi so sánh các tọa độ mới của điều khiển với các điều khiển khác trong danh sách và di chuyển nó đến vị trí thích hợp.
Có một vài vấn đề mà tôi phải làm việc (chủ yếu liên quan đến nhiều cuộc gọi đến AlignControls) nhưng khái niệm cơ bản là đủ đơn giản. Nhờ tất cả những người bình luận cho tất cả sự giúp đỡ.
"thứ tự của các điều khiển con được xác định theo thứ tự tạo" Thứ tự là gì? Thứ tự tab? Bạn có muốn đặt tab cho chúng từ trên xuống dưới trong bảng điều khiển không? – Serguzest
Ngay bây giờ, nếu bạn chọn bảng điều khiển và sau đó thêm các điều khiển vào nó, các điều khiển sẽ được trình bày theo thứ tự bạn đã thêm chúng. Để sắp xếp lại, bạn sẽ cắt và dán hoặc xem biểu mẫu dưới dạng văn bản và dịch chuyển chúng xung quanh. Bây giờ tôi đã thêm một thuộc tính ControlIndex là một TFlowPanel nhưng muốn người dùng điều khiển có thể chỉ cần kéo và thả để sắp xếp lại. Vì vậy, lấy Edit2 và thả nó sang bên trái của Edit1 và họ hoán đổi vị trí trên bảng điều khiển. –