現(xiàn)值標(biāo)簽自定義?)
DevExpress VCL擁有230個(gè)VCL界面控件、40個(gè)自定義設(shè)計(jì)的VCL應(yīng)用主題它能幫助您創(chuàng)建優(yōu)異的用戶體驗(yàn)提供高影響力的業(yè)務(wù)解決方案并利用您現(xiàn)有的VCL技能為未來(lái)構(gòu)建下一代應(yīng)用程序。在剛更新的DevExpress VCL v23.1組件庫(kù)中包含了以下新的一些特性/功能增強(qiáng)的高DPI分辨率支持Light 樣式渲染W(wǎng)indows 11主題VCL圖表控件在本文中我們將重點(diǎn)介紹v23.1版本的圖標(biāo)控件中實(shí)現(xiàn)的一個(gè)重要特性——自定義軸、系列和總標(biāo)簽顯示文本的功能這個(gè)新功能對(duì)多種使用場(chǎng)景都十分有用包括需要對(duì)所有值標(biāo)簽應(yīng)用格式化模式、強(qiáng)調(diào)某些軸/系列值、為不同數(shù)量級(jí)顯示不同的測(cè)量單位等。DevExpress新舊版本幫助文檔下載可進(jìn)QQ qun獲取169725316如何將格式化模式應(yīng)用于值標(biāo)簽DevExpress VCL Chart控件現(xiàn)在支持高級(jí)格式化模式類似于我們的WinForms Chart控件格式化模式可以由靜態(tài)文本和一個(gè)或多個(gè)支持的占位符字段標(biāo)記組成這些占位符字段標(biāo)記包含在大括號(hào)中。所有顯示數(shù)值的占位符標(biāo)記也支持?jǐn)?shù)值格式模式例如下面的格式化模式顯示具有兩位小數(shù)點(diǎn)的浮點(diǎn)序列值{V:0.00}大括號(hào)外的文本定義了相同格式化模式的通用值標(biāo)簽。您可以將相同/不同的格式化模式分配給圖表、參數(shù)軸、值軸或簡(jiǎn)單序列的總標(biāo)簽中所有序列值的標(biāo)簽。系列值標(biāo)簽自定義沒(méi)有格式化模式的序列值標(biāo)簽按原樣顯示值簡(jiǎn)單系列也向標(biāo)簽添加相應(yīng)的參數(shù)。要在設(shè)計(jì)時(shí)將格式化模式應(yīng)用于所有值標(biāo)簽(對(duì)于一個(gè)系列)您必須雙擊Chart控件來(lái)調(diào)用Chart Designer對(duì)話框。選擇目標(biāo)系列。在Object Inspector對(duì)象檢查器中展開(kāi)View 和 ValueLabels 節(jié)點(diǎn)。為TextFormat屬性指定一個(gè)格式模式(例如{V:0.00}M km2)。在這個(gè)特殊的實(shí)例中值標(biāo)簽顯示帶有兩個(gè)小數(shù)點(diǎn)后跟著一個(gè)度量單位的序列值??倶?biāo)簽自定義要自定義顯示在Doughnut系列中心的Total標(biāo)簽?zāi)仨毚_保選擇了目標(biāo)系列。在Object Inspector對(duì)象檢查器中展開(kāi)View 和TotalLabel 節(jié)點(diǎn)。將相同的格式化模式分配給 TextFormat 屬性。完成后Total標(biāo)簽將使用與value標(biāo)簽相同的格式如何自定義個(gè)性化值標(biāo)簽除了格式化模式(用于自定義值標(biāo)簽中的顯示文本)之外還可以根據(jù)特定條件自定義單個(gè)標(biāo)簽——例如可以隱藏中間點(diǎn)的值標(biāo)簽或者為不同的數(shù)量級(jí)顯示不同的測(cè)量單位。DevExpress VCL 的圖表類包括以下值標(biāo)簽自定義事件這些事件在Chart控件決定如何繪制單個(gè)標(biāo)簽時(shí)發(fā)生OnGetValueLabelDrawParameters 和 OnGetAxisValueLabelDrawParameters 事件在XY圖中可用并允許您分別自定義系列和軸值標(biāo)簽。OnGetValueLabelDrawParameters 和 OnGetTotalLabelDrawParameters事件在一個(gè)簡(jiǎn)單的圖表中可用并允許您分別自定義系列值和總標(biāo)簽。用戶可以處理這些事件來(lái)標(biāo)識(shí)當(dāng)前處理的標(biāo)簽并定義Chart控件在屏幕上繪制標(biāo)簽的方式。例如您可以通過(guò)以下方式在標(biāo)記不同數(shù)量級(jí)的軸和序列值的標(biāo)簽中顯示不同的測(cè)量單位如果一個(gè)序列值超過(guò)100萬(wàn)對(duì)應(yīng)的值標(biāo)簽會(huì)顯示百萬(wàn)數(shù)字后面的M字符。如果序列值超過(guò)1000但小于100萬(wàn)則相應(yīng)的值標(biāo)簽顯示后面跟著k字符的千位數(shù)字。要實(shí)現(xiàn)這一點(diǎn)需要處理 OnGetValueLabelDrawParameters 事件procedure TMyForm.cdAreaGetValueLabelDrawParameters(Sender: TdxChartCustomDiagram; AArgs: TdxChartGetValueLabelDrawParametersEventArgs); begin if AArgs.SeriesPoint.Value 1000 * 1000 then // Millions AArgs.Text : Format(%.1fM, [AArgs.SeriesPoint.Value / (1000 * 1000)]) else if AArgs.SeriesPoint.Value 1000 then // Thousands AArgs.Text : Format(%.0fk, [AArgs.SeriesPoint.Value / 1000]) else AArgs.Text : Format(%0f, [AArgs.SeriesPoint.Value]); end;然后處理OnGetAxisValueLabelDrawParameters事件procedure TMyForm.cdAreaGetAxisValueLabelDrawParameters(Sender: TdxChartCustomDiagram; AArgs: TdxChartGetAxisValueLabelDrawParametersEventArgs); begin if AArgs.Axis.ClassName TdxChartAxisY then Exit; if AArgs.Value 1000 * 1000 then // Millions AArgs.Text : Format(%.1fM, [AArgs.Value / (1000 * 1000)]) else if AArgs.Value 1000 then // Thousands AArgs.Text : Format(%.0fk, [AArgs.Value / 1000]) else AArgs.Text : Format(%0f, [AArgs.Value]); end;因此序列和軸值標(biāo)簽顯示不同數(shù)量級(jí)的不同測(cè)量單位