2013-09-26 84 views
6

Tôi đang viết một thành phần ghi nhớ cần phải trông giống như một phiên thiết bị đầu cuối kiểu cũ. Điều này nên thực sự đơn giản, nhưng cách làm việc của FireMonkey dường như làm cho nó trở nên phức tạp đến mức khó tin.Thay đổi màu phông chữ và màu nền của TMemo trong FireMonkey

Trong ứng dụng FireMonkey không phải di động, tôi có thể nhấp chuột phải vào một điều khiển và chọn "Chỉnh sửa kiểu tùy chỉnh". Tùy chọn này không khả dụng trong ứng dụng dành cho thiết bị di động. Đây là lý do được đưa ra bởi một trong những nhà phát triển FireMonkey.

Nó hỗ trợ phong cách khác nhau trên iOS và Android. Chúng tôi không thể chạy ứng dụng trên Android theo phong cách iOS. Nhưng khi bạn cố gắng thay đổi kiểu dáng nền tảng , chúng tôi sẽ tự động sử dụng nó trên mỗi nền tảng đích. Nếu bạn muốn thay đổi kiểu mặc định của điều khiển fm, bạn nên đặt trên sách kiểu biểu mẫu và tạo kiểu trong đó hoặc tải theo style style kiểu nền tảng và thực hiện thay đổi trong đó.

Cũng rất quan trọng, Khi bạn tải kiểu nền tảng trong sách kiểu, bạn có thể muốn trường hợp ứng dụng đó sẽ không có hai bản sao kiểu nền (một hệ thống trong gói fmx và bản sao khác trong sách kiểu của bạn). Đối với nó, bạn nên đặt cờ đúng trong TStylebook.UseStyleManager. Trong kiểu chữ này trong sách Kiểu sẽ thay thế kiểu nền tảng.

OK, vì vậy tôi nghĩ mình cần tạo kiểu tùy chỉnh. Làm cách nào để tôi tạo một kiểu tùy chỉnh để ghi đè lên chỉ các thuộc tính phông chữ và nền?

Tôi đoán tôi có thể ghi đè thủ tục ApplyStyle giống như thế này.

procedure TMyMemo.ApplyStyle; 
var 
    BackgroundObject: TFmxObject; 
begin 
    inherited; 

    BackgroundObject := FindStyleResource('content'); 

    if Assigned(BackgroundObject) then 
    begin 
    // Change the background color of the background 
    end; 
end; 

Làm cách nào để biết loại đối tượng nền là gì và thuộc tính nào tôi cần thay đổi?

Chắc chắn, việc thay đổi màu nền của điều khiển không thể khó khăn như vậy! Tôi có thiếu một cái gì đó cơ bản với các phong cách FM?

Trả lời

1

Một điều tôi phát hiện ra là phông chữ không thể thay đổi trong FireMonkey! Bạn có thể đặt nó thành một phông chữ khác nhưng khi bạn chạy nó trên một thiết bị, nó sẽ chuyển sang phông chữ mặc định.

Nếu bạn muốn thay đổi màu nền cho bản ghi nhớ, bạn nên thêm một stylebook vào biểu mẫu của bạn và tải tệp kiểu bạn muốn (Giống như kiểu iOS ánh sáng mặc định). Khi bạn đã tải một phong cách đi đến memostyle và thay đổi de background.

Hy vọng điều này sẽ hữu ích!

0

Hy vọng bạn sẽ tìm thấy giải pháp hữu ích này

uses System.UIConsts; 


procedure TfPlanJob.mDetailApplyStyleLookup(Sender: TObject); 
var Obj: TFmxObject; 
    Rectangle1: TRectangle; 
begin  
    Obj := mDetail.FindStyleResource('background'); 
    if Obj <> nil then 
    begin 
      TControl(Obj).Margins := TBounds.Create(TRectF.Create(-1, -1, -1, -1)); 
      Rectangle1    := TRectangle.Create(Obj); 
      Obj.AddObject(Rectangle1); 
      Rectangle1.Align  := TAlignLayout.Client; 
      Rectangle1.Fill.Color := claLightslategrey; 
      Rectangle1.Stroke.Color := claNull; 
      Rectangle1.HitTest  := False; 
      Rectangle1.SendToBack; 
    end; 
end;