锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
琛ㄦ牸瑙嗗浘鎸夎錛屽垪甯冨眬錛岃浼樺厛欏哄簭緇樺埗錛岀粯鍒剁殑鍩烘湰鍏冪礌鏄鍜屽崟鍏?/span>(cell)銆傜敱浜庢暟鎹唴瀹圭殑鍔ㄦ佹э紝琛屾槸鍔ㄦ佺敓鎴愮殑銆傝〃鏍艱鍥炬彁渚涗簡(jiǎn)鍚勭鍙畾鍒舵э紝鍖呮嫭鍙夌殑鍒嗙粍琛岄鏍煎拰鑻ュ共鑷畾涔夐鏍鹼紝榪欎簺澶嶆潅鐗規(guī)ц儗鍚庢湁寰堝ソ鐨勮璁°?/span>
瑙嗗浘緇樺埗鐩稿叧鐨勫嚑緇勭被錛?/span>
ViewInfo綾繪棌錛?/span>
鎻忚堪瑙嗗浘鍏冪礌鐨勭粯鍒朵俊鎭紝瑙嗗浘鍏冪礌瑕佺粯鍒舵垚浠涔堟牱瀛愶紝瀹屽叏鐢卞叾ViewInfo紜畾銆傜鍏堢被鏄?/span>TcxCustomGridCellViewInfo錛屾暟鎹錛屾暟鎹崟鍏冿紝鍒嗙粍琛岀瓑瑙嗗浘鍏冪礌浠ュ強(qiáng)瑙嗗浘鏈韓閮芥湁鐩稿簲鐨勬淳鐢熺被銆?/span>
Painter綾繪棌錛?/span>
鎸夌収ViewInfo錛屽湪鐢誨竷涓婄粯鍒惰鍥懼厓绱犮傜鍏堢被鏄?/span>TcxCustomGridCellPainter銆?/span> TcxCustomGridCellPainter = class
private
FCanvas: TcxCanvas;
FViewInfo: TcxCustomGridCellViewInfo;
View綾繪棌錛?/span>
鏁翠釜瑙嗗浘鐨勬弿榪幫紝鍖呮嫭浜?jiǎn)鍚効U嶈緗俊鎭傜鍏堟槸TcxCustomGridView銆?/span>
View鍜?/span>ViewInfo鐨勪笉鍚屽湪ViewInfo鎻忚堪緇樺埗淇℃伅錛岃?/span>View鎻忚堪璁劇疆淇℃伅錛?/span>ViewInfo鏄姩鎬佹瀯閫犵殑錛屽綋Grid鍒涘緩鏃訛紝濡傛灉鏈変竴涓垎緇勫鏉¤褰曪紝閭d箞姣忔潯璁板綍浼?xì)鐢熸垚涓涓?/span>ViewInfo瀹炰緥錛屽鏋滄敹璧峰垎緇勶紝榪欎簺瀹炰緥灝嗚閿姣侊紝灞曞紑鍒嗙粍錛屼細(xì)鍐嶆鐢熸垚姣忔潯璁板綍鐨?/span>ViewInfo瀹炰緥錛岃屼竴涓〃鏍艱鍥懼緇堝彧鏈変竴涓疄渚嬨?/span>
LookAndFeelPainter綾繪棌錛?/span>
鐢ㄤ簬榪涜鏈夊叧鍒嗙粍琛岄鏍肩殑緇樺埗銆傜鍏堟槸TcxCustomLookAndFeelPainter銆?/span>
緇樺埗瑙嗗浘鍏冪礌鏃訛紝娑夊強(qiáng)鍒板垎緇勮椋庢牸(GroupRowStyle)鐨勭粯鍒朵換鍔★紝閮借濮旀墭緇?/span>LookAndFeelPainter綾葷殑瀹炰緥錛岀敱姝ゅ疄鐜板鎬佺殑椋庢牸銆?/span>
Style鍜?/span>Styles綾繪棌錛?/span>
Style綾葷殑紲栧厛鏄?/span>TcxCustomStyle錛?/span>Styles綾葷殑紲栧厛鏄?/span>TcxCustomStyles銆?/span>TcxCustomStyle綾昏〃紺轟竴縐嶈嚜瀹氫箟椋庢牸錛?/span>TcxCustomStyles綾昏〃紺轟竴緇勯鏍箋?/span>TcxCustomStyles鍐呴儴鐢ㄤ竴涓?/span>map淇濆瓨榪欎簺椋庢牸錛岀粰鍑洪敭錛屽彲閫氳繃Values灞炴у彇鍑烘寚瀹氱殑椋庢牸銆?/span>
TcxCustomStyles = class(TcxInterfacedPersistent, IcxStyleChangeListener)
public
property Values[Index: Integer]: TcxCustomStyle read GetValue write SetValue;
閿殑鍙栧艱寖鍥村涓嬶細(xì)
vsCustomTableFirst = vsCustomLast + 1;
vsContent = vsCustomTableFirst;
vsContentEven = vsCustomTableFirst + 1;
vsContentOdd = vsCustomTableFirst + 2;
vsFilterBox = vsCustomTableFirst + 3;
vsInactive = vsCustomTableFirst + 4;
vsIncSearch = vsCustomTableFirst + 5;
vsSelection = vsCustomTableFirst + 6;
// vsCustomTableLast = vsSelection;
vsHotTrack = vsCustomTableFirst + 7;
vsCustomTableLast = vsHotTrack;
鑰冩煡浠ヤ笂鍑犵粍綾葷殑鍏崇郴錛?/span>
Painter鍜?/span>ViewInfo錛?/span>
Painter綾誨拰ViewInfo綾誨叿鏈夊搴斿叧緋伙紝鍦ㄨ鍥懼厓绱犵粯鍒舵椂鍒涘緩鍑?/span>Painter綾葷殑瀹炰緥錛屽叾涓湁澶氭佹満鍒剁殑浣滅敤錛屼笅闈㈠叿浣撲簡(jiǎn)瑙d竴涓嬭繖涓垱寤鴻繃紼嬨?/span>
鍦?/span>TcxCustomGridCellPainter媧劇敓鐨勪竴緇勭被涓紝鍙湁瀹冭嚜宸辨湁鏋勯犲嚱鏁幫細(xì)
constructor TcxCustomGridCellPainter.Create(ACanvas: TcxCanvas;
AViewInfo: TcxCustomGridCellViewInfo);
begin
inherited Create;
FCanvas := ACanvas;
FViewInfo := AViewInfo;
end;
閭d箞褰撻渶瑕佽皟鐢ㄥ叾媧劇敓綾繪柟娉曟椂錛屾槸濡備綍鏋勯犲嚭媧劇敓綾誨疄渚嬬殑錛?/span>Painter綾誨疄渚嬮兘鏄湪ViewInfo綾葷殑鏂規(guī)硶涓垱寤哄嚭鏉ョ殑錛屼唬鐮佸涓嬶細(xì)
GetPainterClass.Create()
TcxGridDataRowViewInfo = class(TcxCustomGridRowViewInfo)
protected:
function GetPainterClass: TcxCustomGridCellPainterClass; override;
function TcxGridDataRowViewInfo.GetPainterClass: TcxCustomGridCellPainterClass;
begin
Result := TcxGridDataRowPainter;
end;
榪欐牱錛屽垱寤哄摢涓?/span>Painter綾葷殑瀹炰緥鍐沖畾浜?/span>ViewInfo綾葷殑瀹炰緥錛岄氳繃鏌愪釜ViewInfo瀹炰緥璋冪敤GetPainterClass.Create()錛屽氨榪斿洖瀵瑰簲Painter綾葷殑瀹炰緥銆?/span>
ViewInfo綾昏繘琛岀粯鍒舵椂錛屼細(xì)璋冪敤Painter綾葷殑緇樺埗鏂規(guī)硶錛?/span>Painter綾昏繘琛岀粯鍒舵椂錛屼篃浼?xì)璋冪?/span>ViewInfo綾葷殑緇樺埗鏂規(guī)硶錛屾瘮濡傦細(xì)
procedure TcxCustomGridRecordsPainter.Paint;
var
I: Integer;
begin
with FViewInfo do
for I := 0 to Count - 1 do
with Items[I] do
if Calculated then Paint;
end;
璺熻釜緇樺埗榪囩▼鍙互鐪嬪埌錛屾鏄湪涓ょ璋冪敤鐨勪氦鏇夸腑緇樺嚭浜?jiǎn)瑙嗗泟勬瘡涓厓绱犲Q屾渶緇堝湪鏄劇ず璁懼涓婄殑緇樺埗鏄敱Painter綾誨疄鐜扮殑錛岃?/span>ViewInfo鐨勭粯鍒舵柟娉曚細(xì)璧峰埌璋冨害鐨勪綔鐢紝姣斿鎶婃暟鎹鐨勭粯鍒跺垎瑙f垚鍚勬暟鎹崟鍏冪殑緇樺埗銆?/span>
鎴戜滑宸茬粡浜?jiǎn)瑙e垘图屽墠涓縐嶈皟鐢ㄦ槸閫氳繃鏋勯犲眬閮ㄥ疄渚嬶紝閭d箞鍚庝竴縐嶅憿?
TcxCustomGridCellPainter涓畾涔変簡(jiǎn)FViewInfo縐佹湁鎴愬憳錛屽茍灝嗗叾瀹氫箟涓轟繚鎶ゅ睘鎬?/span>
TcxCustomGridCellPainter = class
private
FCanvas: TcxCanvas;
FViewInfo: TcxCustomGridCellViewInfo;
protected
property ViewInfo: TcxCustomGridCellViewInfo read FViewInfo;
鍏舵淳鐢熺被緇ф壙浜?jiǎn)璇ュ睘鎬э紝騫跺皢鍏墮噸鏂板畾涔?/span>
TcxGridDataRowPainter = class(TcxCustomGridRowPainter)
private
function GetViewInfo: TcxGridDataRowViewInfo;
protected
property ViewInfo: TcxGridDataRowViewInfo read GetViewInfo;
function TcxGridDataRowPainter.GetViewInfo: TcxGridDataRowViewInfo;
begin
Result := TcxGridDataRowViewInfo(inherited ViewInfo);
end;
View鍜?/span>Styles錛?/span>
瑙嗗浘椋庢牸鏄鍥劇殑灞炴э細(xì)
TcxCustomGridView = class(TcxControlChildComponent, IcxStoredObject, IcxStoredParent,
IcxGridViewLayoutEditorSupport, IcxGridViewDesignerMenu)
private
FStyles: TcxCustomGridStyles;
Protected:
property Styles: TcxCustomGridStyles read FStyles write SetStyles;
procedure TcxCustomGridView.SetStyles(Value: TcxCustomGridStyles);
begin
FStyles.Assign(Value);
end;
鐗瑰畾鐨勮鍥句嬌鐢ㄧ壒瀹氱殑瑙嗗浘椋庢牸錛屼互琛ㄨ鍥句負(fù)渚嬶紝鍙互鐪嬪埌涓よ呮槸濡備綍瀵瑰簲鐨勩?/span>
TcxGridTableView = class(TcxCustomGridTableView)
Published:
property Styles: TcxGridTableViewStyles read GetStyles write SetStyles;
function TcxGridTableView.GetStyles: TcxGridTableViewStyles;
begin
Result := TcxGridTableViewStyles(inherited Styles);
end;
procedure TcxGridTableView.SetStyles(Value: TcxGridTableViewStyles);
begin
inherited Styles := Value;
end;
View鍜?/span>LookAndFeelPainter錛?/span>
ViewInfo錛?/span>GridStyles鍜?/span>GridView綾婚兘鏈?/span>LookAndFeelPainter灞炴э紝鍥犱負(fù)鍒嗙粍琛岄鏍艱緗槸浣滅敤浜庢暣涓鍥劇殑錛屾墍浠ヨ灞炴х湡姝e畾涔夋槸鍦?/span>GridView涓紝GridStyles鍜?/span>ViewInfo鍙槸榪斿洖涓涓紩鐢紝鎻愪緵璇ュ睘鎬ф槸涓轟簡(jiǎn)鏂逛究錛屾瘮濡?/span>ViewInfo榪涜緇樺埗鏃訛紝瑕佺敤鍒伴鏍肩殑璁劇疆銆?/span>
function TcxCustomGridView.GetLookAndFeelPainter: TcxCustomLookAndFeelPainterClass;
begin
if Control = nil then
Result := TcxStandardLookAndFeelPainter
else
Result := TcxCustomGrid(Control).LookAndFeelPainter;
end;
function TcxCustomGridStyles.GetLookAndFeelPainter: TcxCustomLookAndFeelPainterClass;
begin
Result := GridView.LookAndFeelPainter;
end;
/* TcxGridViewHandler鏄鍥?/span>ViewInfo鐨勭鍏堢被銆?/span>*/
function TcxGridViewHandler.GetLookAndFeelPainter: TcxCustomLookAndFeelPainterClass;
begin
Result := FGridView.LookAndFeelPainter;
end;
/* TcxCustomGridViewCellViewInfo鏄鍥懼厓绱?/span>ViewInfo鐨勭鍏堢被錛?/span>FGridViewInfo鏄?/span>GridViewInfo灞炴х殑鎴愬憳鍙橀噺銆?/span>*/
function TcxCustomGridViewCellViewInfo.GetLookAndFeelPainter: TcxCustomLookAndFeelPainterClass;
begin
Result := FGridViewInfo.LookAndFeelPainter;
end;