簡體   English   中英

Delphi XE8 FireMonkey TMemo透明嗎?

[英]Delphi XE8 FireMonkey TMemo Transparent?

有沒有辦法使TMemo的背景透明? 我嘗試將不透明度從1設置為0,然后整個組件(包括文本)逐漸消失,然后在0處完全消失。在0.1時,背景框仍然可見。 我當前正在使用XE8 for iOS 8.3。

由於TMemoTStyledControl您需要更改其Style以使背景透明。 為此,請右鍵單擊TMemo然后選擇“編輯自定義樣式”。 這將打開樣式編輯器。 尋找MemoStyle1 小時候,您會發現TActiveStyleObject類型的背景。 在MemoStyle1中添加一個TLayout(備注背景將始終是透明的)或一個TRectangle(以更好地控制顏色和透明度)。 將添加的TLayout(或TRectangle)align屬性更改為contents ,並將其StyleName屬性設置為“ background”。 現在,將所有子項從原始背景TActiveStyleObject到新背景中。 現在刪除原始背景。 注意:為了在樣式編輯器中刪除對象,您需要選擇對象,然后使用樣式列表頂部的刪除按鈕。 單擊樣式編輯器右上角的“應用並關閉”,您應該會在記事中看到效果。

  uses FMX.Styles.Objects;

procedure TForm1.Memo1ApplyStyleLookup(Sender: TObject);
  Var
  Obj: TFmxObject;
begin

  Obj := Memo1.FindStyleResource('background');

  if Assigned(Obj) And ( Obj is TActiveStyleObject ) Then
  TActiveStyleObject(Obj).Source := Nil;

end;

我已經測試了iamjoosy和DanielH的2個帖子。 他們都適用於iOS 8.3和Android 5.02

對於代碼解決方案,只需將其插入要使其背景透明的TMemo的OnApplyStyleLookup事件處理程序中即可。 我將TMemo的StyleLookup屬性留為空白。

以前有XE4的代碼解決方案,但對我來說不起作用,因為它測試資源對象是否是TSubImage而不是TActiveStyleObject。

這兩個答案都是很好的替代解決方案。

多虧你們兩個。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM