2011-09-02 28 views
7

Chỉ cần bắt đầu thử nghiệm FireMonkey và không thể tìm cách tạo các thành phần có kích thước/vị trí động.Neo các thành phần GUI vào FireMonkey

VCL có thuộc tính Anchor, FM thì không.

Bất kỳ ai nhìn thấy một cái gì đó tôi đã bỏ lỡ

Cập nhật:

Simple neo không có sẵn trong FM. Bạn phải tạo ra TLayouts và căn chỉnh chúng, sau đó đặt các điều khiển bên trong bảng điều khiển để có chúng 'dính'. Nếu bạn sử dụng phiên bản cũ hơn của Builder hoặc Delphi, điều này sẽ giống như chúng tôi đã từng phải làm với TPanels.

+0

Có ['FMX.Types.TControl.Anchors'] (http://docwiki.embarcadero.com/VCL/XE2/en/FMX.Types.TControl.Anchors), nhưng riêng tư và do đó không có sẵn. –

+0

Bạn có thể muốn xem thành phần TLayout. Có vẻ như bạn thả nó vào biểu mẫu, định cấu hình và sau đó thả một số thành phần vào đó ... chỉ là một phỏng đoán. –

+0

@Bob: căn chỉnh không giống như neo. –

Trả lời

11

Đây là câu trả lời cho câu hỏi của bạn. Các tài sản neo trong VCL dường như đã được thay thế bởi Margins và Padding (do cân nhắc hiệu suất) và tôi tìm thấy một số tài liệu tại wiki XE2 (http://docwiki.embarcadero.com/RADStudio/en/FireMonkey_Application_Design). Tôi nghi ngờ nếu neo sẽ được đưa vào một ngày sau đó. Để neo hai nút (Ok và Cancel) ở dưới cùng của một hình thức ở phía bên phải làm như sau.See hình ảnh dưới đây cho Ok và hủy bỏ nút.

enter image description here

Đặt một bảng nhỏ thẳng xuống đáy trên biểu mẫu, nói khoảng 40 chiều cao. Đặt 'Lề' trên bảng điều khiển phía dưới để tạo không gian nhỏ hơn, trong đó các nút sẽ phát trực tiếp, đảm bảo bạn đặt nút căn chỉnh thành chế độ alRight. Ví dụ khoảng cách giữa cạnh bên phải của biểu mẫu và nút bên phải nhất có biên độ là 15. Lề trên và dưới được đặt thành 12. Điều đó neo nút đúng nhất.

'Đệm' là đối diện với lề, phần đệm đặt không gian ngoài tầm kiểm soát. Để nút bên phải nhất tôi thêm một padding của 20 để bên trái bên, đây sẽ là không gian giữa hai nút. Đối với nút thứ hai bên trái của đầu tiên, tất cả những gì chúng ta cần làm là thiết lập thuộc tính align thành alRight, không cần phải điều chỉnh padding hoặc lề.

+0

Tôi rất thích xem hình ảnh, nhưng nó quá nhỏ, bạn có thể đăng một phiên bản lớn hơn không? – Johan

+1

Tôi tự hỏi liệu nó có quá nhỏ hay không Tôi chỉ cần bỏ một phiên bản lớn hơn – rhody

+0

+1 Sử dụng các tấm lồng nhau, chính PITA nhưng nó hoạt động. – Johan

5

Đây là câu trả lời bạn đang tìm kiếm: Điều khiển FMX không có neo.

Tôi cho rằng đây sẽ là tính năng "phiên bản tiếp theo".

+2

Loại đó làm cho Firemonkey vô dụng. Không, tôi sẽ viết lại điều đó, nó làm cho Firemonkey vô dụng. –

+0

((: họ đang ở trong - những gì tôi muốn gọi - "kinh doanh khỉ - firemonkey" – ComputerSaysNo

+1

Điều này là không đúng, sử dụng lề và đệm, giải thích của nó trong tài liệu wiki. Không có ngay lập tức rõ ràng như neo Họ làm việc Hãy xem câu trả lời của tôi dưới đây – rhody

7

Thả nhiều thành phần TLayout trên biểu mẫu và định cấu hình các thuộc tính căn chỉnh của chúng như mong muốn. Thả các thành phần khác vào các bố cục này và thiết lập các thuộc tính căn chỉnh của chúng liên quan đến TLayout chúng được chứa trong. Có vẻ là làm việc cho tôi ...

+0

Điều đó cho sự liên kết thành phần, không neo thành phần Ví dụ nếu tôi cần nút OK để giữ nguyên kích thước nhưng theo kích thước cửa sổ bên phải thấp hơn. –

+0

@Gregor Có lẽ tôi chỉ không hiểu ... Nếu tôi thả một TLayout trên Form và thiết lập nó Alignment để alBottom thả một TButton vào TLayout và thiết lập nó liên kết để alRight nó sau khi thay đổi kích thước của hình thức độc đáo –

+0

xuất hiện để làm việc nhưng làm cho thiết kế GUI là một nỗi đau. Đơn giản neo không còn có sẵn, bây giờ tôi phải tạo TLAyouts.Điều này cũng giống như những ngày cũ với TPanels để có được những thứ để ở lại wh bạn muốn họ. Chào mừng bạn đến với năm 1990 –

1

Nhìn nhanh thuộc tính căn chỉnh cho thấy nhiều sự lựa chọn hơn chúng ta có trong Delphi trước phiên bản:

enter image description here

không có giải quyết vấn đề của bạn (ít nhất là một phần).
Tôi nhớ việc sử dụng OK trong một thời gian dài chỉ cần sử dụng lồng nhau panel s và align để bố cục nội dung.

+0

không phải là một bước tiến lớn. Tôi phải làm tổ TLayouts để được neo đậu. Nếu tôi nhớ lại từ Builder 5 ngày của tôi, đó là một nỗi đau lớn trong * ss –

+1

Đó là, nhưng ít nhất là không làm cho Firemonkey vô dụng, nó chỉ có nghĩa là có chỗ để cải thiện. Mọi người đều la hét để giải phóng tất cả những tính năng đã hứa. Nó thậm chí nằm trong các tập tin (xem 'http: // docwiki.embarcadero.com/VCL/XE2/vi/FMX.Types.TControl.Anchors', tuy nhiên tôi đoán là chúng chưa tạo ra tất cả các lỗi, vì vậy chúng' Trong thời gian tất cả sẽ là đúng.Tôi cho một màu hồng tickled với cơ hội để viết cho iOS (nơi không có thay đổi kích thước :-). – Johan

+0

"không phải là một bước tiến lớn" ... oh phổ biến - chỉ cần tiếp tục sử dụng VCL nếu bạn chưa sẵn sàng cho một cái gì đó mới. Có rất nhiều điều tuyệt vời trong Firemonkey và đây là phiên bản đầu tiên của nó ... tất nhiên vẫn còn một số vấn đề ... xa IMHO – jpfollenius

0

Bạn có thể sử dụng LiveBindings và biểu thức để đặt thuộc tính của điều khiển dựa trên điều khiển chính, mặc dù đó là rất nhiều công việc.

Nếu không, hãy sử dụng Lề và Đệm (như HTML/CSS).

Các vấn đề liên quan