? Digao Dalpiaz電報新聞



03/25/2024(版本6.7)(最小DZHTMLTEXT版本:6.3 )
03/16/2024(版本6.6)
03/10/2024(版本6.5)
02/23/2024(版本6.4)
02/22/2024(版本6.3)
02/20/2024(版本6.2)
Lib{Platform}{Config} 。請查看您的圖書館路徑。01/21/2024(版本6.1)(最小dzhtmltext版本:5.2 )
01/12/2024(版本6.0)(最小dzhtmltext版本:5.1 )
警告! ! !請通過刪除以前的DAM組件文件夾來完全卸載以前的版本,因為許多文件已更改其名稱和位置。
12/11/2023(版本5.2)
07/29/2023(版本5.1)
04/11/2023(版本5.0)(最小DZHTMLTEXT版本:4.0 )
DamUnitName屬性中支持子文件夾09/12/2021(版本4.16)
07/24/2021(版本4.15)
06/13/2021(版本4.14)
03/21/2021(版本4.13)
03/14/2021(版本4.12)
03/13/2021(版本4.11)
03/05/2021(版本4.10)
02/10/2021(版本4.9)
12/18/2020(版本4.8)
11/27/2020(版本4.7)
11/11/2020(版本4.6)
10/31/2020(版本4.5)
10/27/2020(版本4.4)
10/26/2020(版本4.3)(最小dzhtmltext版本:2.6 )
10/26/2020(版本4.2)
10/18/2020(版本4.1)(最小dzhtmltext版本:2.04 )
10/14/2020(版本4.0)
評論:
09/24/2020
08/11/2020
08/07/2020
08/03/2020
07/30/2020
07/21/2020
05/25/2020
<img:nnn> ),實現的成像主義者支持。有必要更新TDZHTMLTEXT組件。05/03/2020
05/02/2020
DamParams填充參數。這是XE8以下的Delphi版本所需的,因為沒有動態數組作為類型支持。System.ImageList來自Domlist單元(設計時間軟件包)的Imagelist,因為XE8以下的Delphi版本不支持。AutoWidth屬性。現在,TDAMMSG組件中有一個新的屬性FixedWidth ,因此您可以通過消息指定自定義寬度。如果固定寬度為零(默認值),則組件將保持自動寬度內部功能。CenterButtons屬性更改為默認錯誤,因為新的Windows對話框樣式的按鈕在右側對齊。04/26/2020
<imgres:{resource_name}>標籤中包含圖像。只需將PNG圖像添加到應用程序資源中,然後使用標籤將其引用到消息中。此實現位於DAM使用的DZHTMLTEXT組件中。您只需要更新DZHTMLTEXT組件,此功能將可用。請閱讀DZHTMLTEXT圖像標籤部分以獲取更多信息。重要的是:在設計時間內看不到圖像。04/19/2020
10/07/2019
10/06/2019
10/05/2019
2019年5月3日
2019年2月11日
2019年2月8日
2019年2月7日
2019年2月6日
2019年2月5日
在TDAM組件上添加新屬性MessageColor和ButtonColor,以允許消息對話框自定義。
您構建的幾乎每個應用程序,都需要添加消息對話框。
Delphi為您提供了一些選項,例如ShowMessage,MessagedLG和Message Box。
隨著您的項目越來越大,對話框可能會弄亂您的代碼,主要是如果您需要在消息中寫許多行,並且使用許多參數。
如果您需要格式化消息的某些部分,則需要以自定義表單添加標籤。這可能真的很糟糕。
查看此消息:
begin
ShowMessage( ' The task was scheduled to run at the time: ' +aTime+ ' . ' +# 13 # 10 +
# 13 # 10 +
' Please, check the schedule at main board. ' +
' If you want to change schedule, find by ID # ' +IntToStr(IDNumber)+ ' . ' +# 13 # 10 +
# 13 # 10 +
' This task was created by user ' +aUserName+ ' . Only this user can edit this task profile. ' );
end ;所以,我認為這真的很醜陋,您不覺得嗎? ?
使用大壩,您可以寫下這樣的消息: ?
begin
InfoTaskScheduled([aTime, IDNumber, aUserName]);
end ;此組件允許您在“容器”中管理所有應用程序。您可以使用嚮導創建者創建“消息”對話框,從而使您可以格式化消息(粗體,斜體,下劃線,字體名稱,字體大小,文本背景顏色,對齊中心,對準右,使用選項卡對齊,可點擊鏈接等)。
您可以指定消息按鈕,圖標,表單標題等等。
然後,您為消息指定名稱。因此,您可以在應用程序的任何部分都調用該消息,只需通過消息名稱調用該方法!
如果您在消息文本中指定參數,則在調用消息方法時,可以指定將在文本中替換的參數。
請仔細閱讀本文檔,以了解此組件的工作原理。 ?
大壩容器列出了創建的所有消息,該消息存儲在DFM:

消息嚮導創建者,自定義消息對話框:

消息對話框:?

快捷方式
CTRL+C可在消息表上使用,以將消息複製到剪貼板。
首先,您需要安裝我的DZHTMLTEXT組件。在這裡獲取:https://github.com/digao-dalpiaz/dzhtmltext
這是具有HTML格式組件的標籤。消息使用此組件顯示格式化的文本。
如果要立即安裝DZHTMLTEXT和DAM,使用組件安裝程序實用程序,在安裝DZHTMLTEXT之後,您將需要在安裝Delphi之前打開和關閉Delphi(這只是為了更新MSBUILD使用的庫路徑文件)。
LibWin32Release 。支持Delphi Xe3..delphi 12
轉到菜單軟件包>打開軟件包文件(.lpk)並加載lazdampackage.lpk ,然後單擊編譯。
轉到菜單軟件包>打開軟件包文件(.lpk)並加載lazdamdesignpackage.lpk ,然後單擊使用> install> install 。
目前,以下語言可用於消息:
該語言在消息對話框中設置按鈕的標題,例如OK,CANCEL,是,否和表單的標題,當信息,問題,警告,錯誤和消息(自定義)時。表單標題可以在消息屬性中更改,並且可以由其他對象自動設置,例如父級標題,主表單標題和應用程序標題。
您可以打開一個問題,向我發送新的語言翻譯或正確的當前翻譯
主要思想是將一個TDAM以主形式或主要數據模塊刪除。 TDAM是一個具有所有TDAMMSG(消息對話框)的容器。
要管理消息,只需雙擊TDAM組件,或右鍵單擊,然後選擇“管理大壩消息” 。
但是如何打電話給消息呢?
TDAM有一個名為DamUnitName的屬性。在這裡,您定義一個單位名稱以包含所有消息方法。當您使用函數構建單元時,組件將在項目文件夾中自動創建本單元,並使用基於所有創建消息的方法(具有與消息名稱相同的名稱)。
因此,在任何單元中,您只需在本單元中添加用途,然後通過消息名稱調用您想要的消息。如果消息具有參數,則該方法將自動聲明數組中的參數。
是的,但是如果我在同一類(TFORM/TDATAMODULE),即TDAM和TDAMMSG消息,如果我通過消息名稱調用方法,Delphi會認為我在引用消息的對象!
這是事實,因此,組件具有對象隱藏函數。您只需要以_開頭命名消息。因此,單位構建器將刪除此字符以命名該方法,並且Delphi不會混淆這兩件事。
我建議您創建以_角色開頭的所有命名消息。
如果您使用嚮導,則名稱將自動從此字符開始。
大壩管理器上有一個按鈕,可以隱藏所有選定的消息。
請記住,每次更改消息時,都需要重建單元。只需單擊按鈕構建單元即可更新。
好的,但是我不想使用這個單元!還有另一種方法嗎?
是的當然。您可以使用TDAMMSG對象的功能調用消息。只需使用消息對象Run或RunAsBool功能即可。在這種情況下,我建議您不要隱藏該消息,因此您可以按照對象名稱來調用。
但是,老實說,我建議您使用該單元,因為這將變得更有意義。
我可以在應用程序中使用多個TDAM容器嗎?
是的,你可以。 TDAM允許您定義一些配置,例如消息字體和聲音。因此,您可能有一個以上的TDAM可以擁有這組配置。除此之外,您還可以使用各種TDAM按類別進行分組消息。您也可以將TDAM放置在特定的形式中,但請記住,當然需要存在容器才能發射消息。
如果您使用的是多個TDAM,建議您在所有TDAM組件上設置相同的DamUnitName ,因此,當您調用構建單元按鈕時,它將生成一個單個單元,其中包含所有TDAM容器的所有消息。因此,您可以在項目的所有其他單元中使用此單個單元來撥打任何消息。
消息結果代碼:
如果通過消息名稱來調用消息,則該方法將是一個過程,如果消息只有一個按鈕。
如果消息具有兩個或三個按鈕,則該方法將是一個函數。當它具有兩個按鈕時,該函數將始終返回布爾值,如果單擊左側的第一個按鈕,則返回true,或者單擊第二個按鈕(右側的最後一個按鈕),則返回false。
當消息具有三個按鈕時,該函數將返回整數值1、2或3,具體取決於消息對話框中按下哪個按鈕。第一個按鈕是左一個。第二個是中間按鈕;第三個按鈕是正確的按鈕。
因此,使用三個按鈕時,您可以使用變量甚至case :
case QuestionSaveFile([aFileName]) of
1 : DoSaveFile; // Yes button
2 : { continue } ; // No button
3 : Abort; // Cancel button
end ;如果要在消息中使用可更換參數,只需鍵入%p即可。您可以在同一消息中指定多個參數。當您調用消息時,參數數組按照消息中鍵入的順序順序依次。
參數數組是變體類型,因此它們不需要轉換。
例子:
// TDamMsg Message property = 'This is a %p message number %p at time %p'
MyCustomMessage([ ' test ' , 123 , Now]);
// or
MsgInfo( ' This is a %p message number %p at time %p ' , [ ' test ' , 123 , Now]);ButtonsColor: TColor =在消息對話框上定義按鈕區域的背景顏色。
ButtonsFont: TFont =定義對話框按鈕的文本字體
ButtonsFontColor: TAlphaColor =定義對話框按鈕的文本字體顏色(僅在FMX環境中可用)
CenterButtons: Boolean =定義消息表格的按鈕是否在中心對齊。如果此屬性是錯誤的,則按鈕將在表格右側對齊。
DamDefault: Boolean =定義是否將使用此TDAM來發射快速消息(請閱讀快速消息部分)。您只能將一個定義為應用程序中的默認值。
DamUnitName: String =指定項目文件夾中所有消息方法創建要創建的單位名稱。請勿指定文件擴展名,因為組件將使用“ .pas”擴展名自動完成名稱。
DialogBorder: Boolean =定義消息對話框的窗口是否包含邊框。您可以禁用此屬性以創建現代對話主題。
DialogPosition: TDamDlgPosition =定義對話框形式的啟動位置:
HandleExceptions: Boolean =定義此TDAM來處理所有應用程序異常,以與所有其他DAM消息相同的對話框顯示錯誤消息。只能設置一個TDAM來處理應用程序中的異常。
HideIcon: Boolean =如果為true,則“消息”對話框中的圖標將被抑制。
Images: TCustomImageList =允許您在消息文本中使用標籤<img:idx>設置圖像庫,其中idx為image index。
Language: TDamLanguage =定義消息按鈕和消息表格標題使用的語言。當您將TDAM組件的實例放置時,將根據系統當前語言初始化此屬性。如果沒有根據系統可用的語言,則將設置英語。該屬性沒有默認值,正是因為它應該存儲所定義的語言。
MessageColor: TColor =在消息對話框上定義消息區域的背景顏色。
MessageFont: TFont =定義消息的文本字體
MessageFontColor: TAlphaColor =定義消息的文本字體顏色(僅在FMX環境中可用)
PlaySounds: Boolean =啟用系統聲音時,顯示警告,問題和錯誤類型的消息。
OnLinkClick(Sender: TObject; Msg: TDamMsg; const Target: string; var Handled: Boolean; var CloseMsg: Boolean; var MsgResult: TDamMsgRes)當單擊消息中包含的鏈接時,將觸發此事件。
默認情況下,將使用Windows API的Shellexecute自動打開鏈接目標,因此,如果目標是Web鏈接,則默認瀏覽器將打開鏈接,或者目標是系統文件,則該路徑將由Windows執行/打開。
如果您想繞過此行為,請使用此事件並將其Handled為true。當您要關閉消息窗口時,您也可以將CloseMsg設置為true和MsgResult標誌。
OnShowMessage(Sender: TObject; Msg: TDamMsg; var MsgText: String; var Handled: Boolean; var MsgResult: TDamMsgRes) fires fires fires fires fires在顯示大壩消息之前,允許您通過使用“句柄”參數攔截消息甚至旁觀消息。
警告!如果您繞過異常消息,則組件不會引起異常,繼續執行代碼(除非您在事件過程中創建自己的異常)。
Button1: String =消息對話框上的按鈕1的標題。當按鈕= dbone/dbtwo/dbthree時可用。
Button2: String =消息對話框上的按鈕2標題。當按鈕= dbtwo/dbthree時可用。
Button3: String =消息對話框上的按鈕3標題。當按鈕= dbthree時可用。
Buttons: TDamMsgButtons =定義消息對話框中的按鈕:
CustomIcon: TIcon =定義一個自定義圖標,要在消息對話框中顯示。僅在圖標= dicustom時顯示此圖標。
CustomTitle: String =定義消息表單的自定義標題。此標題僅使用,然後title = dtcustom。
Dam: TDam =定義此消息的大壩容器。
FixedWidth: Integer =定義消息窗口中的文本部分的固定寬度,以像素為單位。如果此值為零(默認值),則將根據消息文本自動計算窗口寬度。消息形式的最小和最大固定限制(最小= 300px /最大=屏幕寬度的75% - 當Android或iOS時,最大值=屏幕寬度的95%) 。
HelpContext: THelpContext =定義幫助上下文。如果定義了此屬性,則“消息”對話框將顯示一個幫助按鈕並將在上下文目標上打開應用程序幫助。也可以使用F1密鑰。
HelpKeyword: String =定義幫助關鍵字。如果定義了此屬性,則“消息”對話框將顯示一個幫助按鈕並在關鍵字目標上打開應用程序幫助。也可以使用F1密鑰。
Icon: TDamMsgIcon =在消息對話框中定義圖標:
Message: String =消息文本。請使用消息嚮導創建者進行文本格式或閱讀HTLABEL文檔。可更換的參數在消息文本中由%p定義。在消息方法中使用與消息文本中指定的順序相同的順序,在數組中使用這些參數。您還可以指定文字{except}以捕獲當前異常消息,並在消息文本中的此變量上替換(請參見異常示例)。
Name: String =消息對象名稱。如果然後名稱以_字符開頭,則表示消息是隱藏的,因此當您調用具有相同名稱的消息方法時,Delphi不會認為您在調用此對象。
RaiseExcept: Boolean =將此消息設置為加薪消息。當您致電此消息時,將提出消息文本的例外。在這種情況下,您需要至少使用一個帶有handle exceptions = true的TDAM,否則不會使用DAM自定義對消息進行格式。
SwapFocus: Boolean =默認情況下,當發出消息時,始終左側的第一個按鈕將從焦點開始。如果啟用此選項,則此消息將在終於按鈕(右側的按鈕)開始焦點。
Title: TDamMsgTitle =定義消息表格標題
所有消息參數將自動按組件“逃脫”。
示例:
procedure Test1 ;
begin
MyCustomMessage([ ' This will display <b> literal string ' , ' This will display "%p" literal string ' ]);
end ;
procedure Test2 ;
begin
MsgInfo( ' <b>First message parameter</b>: %p ' , [ ' Here I want to display literal <> characters ' ]);
end ;%p and {except} )。如果要在固定消息部分中顯示HTML字面字符,請在dzhtmltext文檔中查看逃生常數。
procedure MsgInfo ( const Msg: String; const Params: TDamParams = nil ); // message with Information icon
procedure MsgWarn ( const Msg: String; const Params: TDamParams = nil ); // message with Warning icon
procedure MsgError ( const Msg: String; const Params: TDamParams = nil ); // message with Error icon
function MsgQuest ( const Msg: String; const Params: TDamParams = nil ): Boolean; // message with Question mark icon
procedure MsgRaise ( const Msg: String; const Params: TDamParams = nil ); // message with Error icon (this raises an exception)
procedure ShowErrorMsg ; // show current error message
function CaptureErrorMsg : String; // get current error message這些方法可在全球,單位DamUnit或您在Damunitname屬性中指定的單位名稱提供。
您可以直接在代碼上顯示快速消息,只需鍵入您喜歡的消息和參數即可。
這些方法將使用定義為默認的TDAM容器。因此,您需要將一個TDAM提供,將
DamDefault屬性設置為True 。
如果按下“是”按鈕,則函數MsgQuest結果為TRUE,或者按下否按下了false。
該方法ShowErrorMsg顯示了當前的例外。您可以將其用作try..cept塊。
函數CaptureErrorMsg允許您在當前異常上獲取錯誤消息。您應該在try ..外塊上使用它。
異常捕獲示例:
try
DoSomeStuff;
except
ShowErrorMessage; // will show error message dialog using Dam concept
end ; try
DoSaveFile;
except
MsgError( ' Fatal error saving file: %p ' , [CaptureErrorMsg]);
end ;如果您在消息文本中指定字面{except} ,則將通過當前錯誤消息替換:
try
DoSaveFile;
except
MsgError( ' Fatal error saving file: {except} ' ); // don't need to use CaptureErrorMsg function!
end ;您還可以重新調整一個例外:
try
DoSaveFile;
except
raise EDam.Create( ' Fatal error saving file: {except} ' ); // re-raise a new exception with better text message
end ;您可以在大壩消息對像上設置RaiseExcept參數,因此,當調用消息時,將提高例外。
請記住:要利用大壩資源,您需要在DAM容器對像上設置HandleExceptions 。當提出異常時,大壩將攔截此異常並顯示自定義對話框。
示例:
procedure TestException_Generic ;
begin
raise Exception.Create( ' This is my generic exception ' );
// HTML tags are NOT allowed when using generic exception
end ;
procedure TestException_DamRunTimeCreation ;
begin
raise EDam.Create( ' This is my <b>exception</b> with parameter %p ' , [ ' First parameter ' ]);
end ;
procedure TestException_DamDesignTimeCreation ;
begin
raise EDam.Create(MyCustomMessage, [ ' First parameter ' ]);
// MyCustomMessage represents a TDamMsg object created at design-time
end ;
procedure TestException_DamDesignTimeCreation_ByProperty ;
begin
_MyCustomMessage.Run([ ' First parameter ' ]);
// or
MyCustomMessage([ ' First parameter ' ]);
// MyCustomMessage represents a TDamMsg object created at design-time with property RaiseExcept=True
end ;
procedure TestException_Quick ;
begin
MsgRaise( ' This is my <b>exception</b> with parameter %p ' , [ ' First parameter ' ]);
// This method is for compatibility, but I recommend you to use "raise EDam.Create" instead.
end ;有一個名為damlang.ini (資源文件夾)的文件,該文件在組件上使用所有字符串。如果要更改此文件上的一些文本,則需要在此之後運行“構建DAM Resource.bat ”。此批次將在根組件文件夾中創建一個新的文件“ DAM_RESOURCE.RES ”。
之後,請運行“ Afterbuild.bat ”將此新資源文件發佈到“ LIB”文件夾。
如果要添加新語言,則需要進行一些更改。因此,請打開一個新問題並發布您想要的語言字符串,然後我將在組件中申請。
當您使用XE8以下的Delphi版本時,在包含Tdamparams參數的所有DAM方法中,您將無法直接傳遞動態數組參數。
在這種情況下,使用全局函數DamParams 。該功能也可以在DAM自動生成的單元中獲得。
因此,以下是如何在這些版本中使用DAM消息方法的一些示例:
// Quick message:
MsgInfo( ' This is a test message with parameter value = %p ' , DamParams([ 999 ]));
// Custom message:
MyCustomMessage(DamParams([ ' Parameter 1 ' , ' Parameter 2 ' ]));該組件的設計大約在2005年左右,當時我檢查了為我的應用程序創建標準化對話框的需求。
當時,我稱之為“更好的對話”的組成部分,葡萄牙語中將是DM( DiálogoMelhor )。
一段時間後,該項目與容器包含了一個新結構。然後,我將組件重命名為“甚至更好的對話”,葡萄牙語中的是Dialogo Ainda Melhor )。 ?
因此,組件的名稱最終留在水壩中。
今天,我在幾乎所有的Delphi應用程序中都使用此組件。