🚀 Khám Phá $CurEntProperties trong Uniface: Tăng Cường UI Động
Lưu ý: Bài viết này đã được hỗ trợ bởi AI để đảm bảo sự rõ ràng và chính xác.
Chào các nhà phát triển! 👋 Bạn đang làm việc với Uniface và muốn làm cho giao diện người dùng (UI) của ứng dụng của bạn trở nên động và phản hồi tốt hơn với hành động của người dùng? Hôm nay, chúng ta sẽ khám phá một hàm ProcScript mạnh mẽ cho phép bạn làm điều đó: $CurEntProperties. Hãy cùng tìm hiểu một cách đơn giản nhất! ✨
🤔 Uniface và ProcScript là gì?
Đối với những ai mới làm quen, Uniface là một nền tảng phát triển low-code được sử dụng để tạo, triển khai và quản lý các ứng dụng phức tạp. Ngôn ngữ lập trình độc quyền của nó được gọi là ProcScript, ngôn ngữ mà chúng ta sẽ sử dụng hôm nay.
Trong Uniface, một thực thể giống như một bản thiết kế cho dữ liệu của bạn (có thể xem như một bảng cơ sở dữ liệu hoặc một cấu trúc dữ liệu), và một sự xuất hiện là một thể hiện cụ thể hoặc bản ghi của thực thể đó (như một hàng đơn lẻ trong bảng).
🎨 $CurEntProperties hoạt động như thế nào?
Hàm $CurEntProperties là vũ khí bí mật của bạn để thay đổi các thuộc tính trực quan của một thực thể bên trong một sự xuất hiện cụ thể của thực thể cha của nó. Hãy tưởng tượng bạn có một danh sách sách, và cho một cuốn sách cụ thể, bạn muốn làm nổi bật tên tác giả. Hàm này cho phép bạn nhắm mục tiêu chỉ vào lĩnh vực tác giả đó mà không thay đổi các lĩnh vực khác.
Nó cho phép bạn thiết lập động các thuộc tính như màu nền, kiểu phông chữ, và nhiều hơn nữa, trực tiếp từ mã của bạn!
⚙️ Cách sử dụng: Cú pháp
Hàm này có thể được sử dụng theo hai cách: để thiết lập thuộc tính hoặc để lấy các thuộc tính hiện tại.
Để thiết lập thuộc tính:
$CurEntProperties("MyEntity") = "backcolor=lightgreen;font=bold"
Để lấy các thuộc tính hiện tại:
vCurrentProps = $CurEntProperties("MyEntity")
Giải thích các tham số
- Entity (Chuỗi): Tên của thực thể bạn muốn sửa đổi. Ví dụ,
"AUTHOR". - Properties (Chuỗi): Danh sách các thuộc tính và giá trị bạn muốn thiết lập, phân tách bởi dấu chấm phẩy. Ví dụ,
"backcolor=yellow;visible=false".
Kết quả trả về
Khi bạn sử dụng để lấy thuộc tính, nó trả về một chuỗi chứa các thuộc tính đã được thay đổi từ giá trị mặc định của chúng. Nếu không có thuộc tính nào bị thay đổi hoặc xảy ra lỗi, nó sẽ trả về một chuỗi rỗng ("").
💡 Ví dụ thực tiễn: Nổi bật tác giả
Hãy sử dụng ví dụ từ tài liệu. Giả sử bạn có một ứng dụng hiển thị sách. Mỗi cuốn sách (thực thể cha, BOOK) có thể có nhiều tác giả (thực thể bên trong, AUTHOR).
Giả sử cho cuốn sách hiện tại bạn đang xem, bạn muốn thay đổi màu nền của trường "LASTNAME". Đây là cách bạn thực hiện:
; Mã này chạy trong một trigger, ví dụ, khi người dùng nhấp vào nút.
$CurEntProperties("LASTNAME") = "backcolor=lightgreen"
Thế là xong! Bây giờ, cho bản ghi sách hiện tại, trường "LASTNAME" sẽ có màu nền xanh sáng. Tất cả các bản ghi sách khác sẽ giữ nguyên. Điều này thật hoàn hảo để thu hút sự chú ý đến dữ liệu cụ thể một cách nhanh chóng.
✅ Bạn có thể sử dụng ở đâu?
Bạn có thể sử dụng $CurEntProperties trong tất cả các loại thành phần, nhưng nó chỉ có hiệu ứng trực quan trong một số tình huống:
- Thành phần Form: Hoạt động với widget thực thể mặc định và widget Grid. Một widget chỉ là một phần tử UI, như ô nhập liệu hoặc bảng dữ liệu.
- Thành phần Dynamic Server Page: Hoạt động với widget thực thể mặc định.
Nó sẽ không có hiệu ứng trong Static Server Pages hoặc các thành phần cũ kiểu ký tự (non-GUI) vì chúng không có khái niệm về widget thực thể trực quan.
⚠️ Điều quan trọng cần nhớ!
Thông thường, khi một thành phần được tải lại, bất kỳ thay đổi nào bạn đã thực hiện với $CurEntProperties sẽ được đặt lại về giá trị mặc định mà bạn đã thiết lập trong Uniface IDE.
Tuy nhiên, có một ngoại lệ! Nếu thành phần form của bạn có thuộc tính "Keep Data in Memory" được đánh dấu, các thay đổi thuộc tính động này sẽ không được đặt lại. Đây là một chi tiết quan trọng cần nhớ khi thiết kế quản lý trạng thái của ứng dụng của bạn.
🔍 Thực hành tốt nhất khi sử dụng $CurEntProperties
- Kiểm tra kỹ các thuộc tính: Trước khi thiết lập một thuộc tính, hãy chắc chắn rằng bạn đã kiểm tra các thuộc tính hiện tại để tránh xung đột.
- Sử dụng trong tình huống phù hợp: Chỉ sử dụng
$CurEntPropertiestrong các thành phần hỗ trợ để đạt được hiệu quả tốt nhất. - Giữ mã nguồn sạch sẽ: Đảm bảo rằng mã của bạn dễ đọc và bảo trì để những người khác có thể hiểu.
⚠️ Những cạm bẫy phổ biến
- Quên không kiểm tra trạng thái: Nếu bạn không kiểm tra xem thành phần có được tải lại hay không, bạn có thể mất các thay đổi mà bạn đã thực hiện.
- Sử dụng không đúng ngữ cảnh: Sử dụng
$CurEntPropertiestrong các thành phần không hỗ trợ có thể dẫn đến việc không có hiệu ứng gì.
💡 Mẹo hiệu suất
- Tránh thay đổi nhiều thuộc tính cùng lúc: Điều này có thể làm cho mã của bạn khó đọc và có thể ảnh hưởng đến hiệu suất.
- Sử dụng các thuộc tính mặc định: Khi có thể, hãy sử dụng các thuộc tính mặc định từ Uniface để giảm thiểu việc thay đổi không cần thiết.
❓ Câu hỏi thường gặp
-
$CurEntProperties có hoạt động trên tất cả các loại thành phần không?
Không, nó chỉ có hiệu ứng trực quan trong các thành phần Form và Dynamic Server Page. -
Nếu không có thuộc tính nào được thay đổi, hàm sẽ trả về gì?
Nó sẽ trả về một chuỗi rỗng. -
Có cách nào để giữ các thay đổi sau khi tải lại không?
Nếu thành phần của bạn có thuộc tính "Keep Data in Memory" được đánh dấu, các thay đổi sẽ được giữ lại.
Hy vọng bài viết này giúp bạn xây dựng những ứng dụng Uniface tương tác và thân thiện hơn với người dùng. Chúc bạn lập trình vui vẻ! 👨💻👩💻