用哪些方法在DbGridwps表头每页都显示显示中文最好

DELPHI 表格控件DBGridEh全属性设置详解
最全的属性设置说明_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
DELPHI 表格控件DBGridEh全属性设置详解
最全的属性设置说明
&&DELPHI 表格控件DBGridEh属性设置详解 ,花了几天时间整理出来的,应该是目前最全的了
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
还剩3页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢轻松实现DBGrid的多表头
用法:& 设置DBGrid的Column的Caption属性& 例如:Column1的Caption为111|222&&&&&&& Column2的Caption为111|333&&&&&&& 那么Column1和Column2公用一个表头111
uses& Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,& Grids, DBGrids, M
type& TADBGrid = class(TDBGrid)& private&&& { Private declarations }&&& //兄弟列子标题,当前列子标题&&& BrerLayerTitles, CurLayerTitles: TStringL&&& SaveFont: TF&&& //根据当前数据列号和表头的层号获取表头的区域&&& function TitleLayerRect(LayerTitles: TS TitleRect: TR LayerID, ACol: Integer): TR&&& //解出当前数据列标题为子标题并返回标题层数(子标题数)&&& function ExtractSubTitle(LayerTitles: TS ACol: Integer): I& protected&&& { Protected declarations }&&& procedure DrawCell(ACol, ARow: L ARect: TR AState: TGridDrawState);&&& procedure P& public&&& { Public declarations }&&& constructor Create(AOwner: TComponent);&&& destructor D& published&&& { Published declarations }&
procedure R
implementation
procedure Rbegin& RegisterComponents(Samples, [TADBGrid]);
constructor TADBGrid.Create(AOwner: TComponent);begin&& BrerLayerTitles := TStringList.C& curLayerTitles := TStringList.C& SaveFont := TFont.C
destructor TADBGrid.Dbegin& BrerLayerTitles.F& curLayerTitles.F& SaveFont.F&
procedure TADBGrid.DrawCell(ACol, ARow: I ARect: TR& AState: TGridDrawState);var& SubTitleRT, CaptionRt, IndicatorRT: TR& Column: TC& SubTitle:& i: Ibegin& if (ARow = 0) and (ACol & 0) then& begin&&& ExtractSubTitle(curLayerTitles, RawToDataColumn(ACol));&&& for i := 0 to curLayerTitles.Count - 1 do&&& begin&&&&& SubTitleRT := TitleLayerRect(curLayerTitles, ARect, i, RawToDataColumn(ACol));&&&&& CaptionRt := SubTitleRT;&&&&& Canvas.Brush.Color := FixedC&&&&& Canvas.FillRect(SubTitleRT);
&&&&& DrawEdge(Canvas.Handle, SubTitleRT, BDR_RAISEDINNER, BF_TOPLEFT);&&&&& if i && CurLayerTitles.Count - 1 then&&&&& begin&&&&&&& DrawEdge(Canvas.Handle, SubTitleRT, BDR_RAISEDOUTER, BF_BOTTOM);&&&&&&& Dec(SubTitleRT.Bottom, 2);&&&&& end else Dec(SubTitleRT.Bottom, 1);&&&&& Canvas.Pen.Color := clW&&&&& Dec(SubTitleRT.Right, 1);&&&&& Canvas.MoveTo(SubTitleRT.Right, SubTitleRT.Top);&&&&& Canvas.LineTo(SubTitleRT.Right, SubTitleRT.Bottom);&&&&& Canvas.LineTo(SubTitleRT.Left, SubTitleRT.Bottom);&&&&& Column := Columns[RawToDataColumn(ACol)];&&&&& SubTitle := ;&&&&& if Assigned(Column) then&&&&& begin&&&&&&& SubTitle := CurLayerTitles[i];&&&&&&& SaveFont.Assign(Canvas.Font);&&&&&&& Canvas.Font.Assign(TitleFont);&&&&&&& try&&&&&&&&& InflateRect(SubTitleRT, -1, -1);&&&&&&&&& DrawText(Canvas.Handle, PChar(SubTitle), Length(SubTitle),&&&&&&&&&&& SubTitleRT, DT_CENTER or DT_SINGLELINE or DT_VCENTER);&&&&&&& finally&&&&&&&&& Canvas.Font.Assign(SaveFont);&&&&&&&&&&&&&&&&&& if dgIndicator in Options then&&& begin&&&&& IndicatorRT := Rect(0, 0, IndicatorWidth + 1, RowHeights[0]);&&&&& Canvas.FillRect(IndicatorRT);&&&&& IndicatorRT.Right := IndicatorRT.Right - 1;&&&&& Canvas.Rectangle(IndicatorRT);&&&&& IndicatorRT.Right := IndicatorRT.Right + 1;&&&&& DrawEdge(Canvas.Handle, IndicatorRT, BDR_RAISEDOUTER, BF_RIGHT);&&&& end& else begin&&&&&& if ACol = 0 then&&&&& DrawEdge(Canvas.Handle, ARect, BDR_SUNKENOUTER, BF_BOTTOMRIGHT);&
function TADBGrid.ExtractSubTitle(LayerTitles: TS& ACol: Integer): Ivar L, P: I& SubTitle:begin& Result := 0;& if Assigned(Columns[ACol]) then&&& SubTitle := Columns[ACol].Title.Caption& else E& if LayerTitles && nil then LayerTitles.C& L := 0;& repeat&&& P := Pos(|, SubTitle);&&& if P = 0 then&&& begin&&&&& if LayerTitles && nil then LayerTitles.Add(SubTitle);&&& end&&& else begin&&&&& if LayerTitles && nil then LayerTitles.Add(Copy(SubTitle, 1, P - 1));&&&&& SubTitle := Copy(SubTitle, P + 1, Length(SubTitle) - P);&&&&&& L := L + 1;& until P = 0;& Result := L;
procedure TADBGrid.Pvar& i, MaxLayer, Layer: I& TM: TTextMbegin& if ([csLoading, csDestroying] * ComponentState) && [] then E& MaxLayer := 0;& //获取表头最大层数& for i := 0 to Columns.Count - 1 do& begin&&& Layer := ExtractSubTitle(nil, i);&&& if Layer & MaxLayer then MaxLayer := L&& SaveFont.Assign(Canvas.Font);& Canvas.Font.Assign(TitleFont);& try&&& GetTextMetrics(Canvas.Handle, TM);&&& //调整DBGrid的标题行高度&&& RowHeights[0] := (TM.tmHeight + TM.tmInternalLeading + 3) * MaxL& finally&&& Canvas.Font.Assign(SaveFont);&&
function TADBGrid.TitleLayerRect(LayerTitles: TS TitleRect: TR& LayerID, ACol: Integer): TRvar& SubTitle:& i, j: I& bBrer: Bbegin& Result := TitleR& if Assigned(Columns[ACol]) then&&& SubTitle := Columns[ACol].Title.Caption& else E& ExtractSubTitle(LayerTitles, ACol);& //联合左边的兄弟列<当鼠标放在DBgrid表头事件的时候显示提示?解决办法 - Delphi当前位置:& &&&当鼠标放在DBgrid表头事件的时候显示提示?解决办法当鼠标放在DBgrid表头事件的时候显示提示?解决办法www.MyException.Cn&&网友分享于:&&浏览:7次当鼠标放在DBgrid表头事件的时候显示提示?当鼠标放在DBgrid表头事件的时候显示提示
我的目的是想取鼠标在DBgrid表头的时候显示菜单?------解决方案--------------------不知道你在说什么
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 12345678910 Copyright & &&版权所有请问怎么让delphi中的每一个dbgrid都可以点击表头排序_百度知道
请问怎么让delphi中的每一个dbgrid都可以点击表头排序
希望有一个function之类的可以让每一个dbgrid都排序,不仅是让其中一个dbgrid排序
我有更好的答案
dbgrid本身只能是支持点击标题栏可以响应事件,具体排序的算法还要你自己来写代码!你可以使用ehlib 的 dbgrideh, 这个控件是支持TITLE排序的!另外,也可以使用devexpress vcl 这个是自动支持排序的
不方便用第三方控件,具体排序的算法我在每一个dbgrid的双击表头那里也会写,但我不想每一个dbgrid都去写,有没有一个程序让每个dbgrid都双击可以排序啊
可以考虑做个做程,捕获点击到的dbgrid的title 的sender,根据sender的不同做不同的算法...
就是不会写啊
procedure&TForm1.dbgrid1TitleClick(Column:&TColumn);begin&&case&Column.ID&of&&&&0:&&&&&&begin&&&&&&&//第一列的排序代码&&&&&&&&&&&1:&&&&&&begin&&&&&&&//第二列的排序代码&&&&&&&&&&//.......以下类推...&&
采纳率:61%
来自团队:
如果为DBGrid写个循环,循环中判断控件类型,获取页面的控件
dbgrid有排序属性么,设置了这个属性为true,这个dbgrid就可以点击排序了?这个属性的英文是什么啊
换成 dbgrideh 控件好了
为您推荐:
其他类似问题
dbgrid的相关知识
&#xe675;换一换
回答问题,赢新手礼包&#xe6b9;
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。}

我要回帖

更多关于 word表头每页显示 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信