parent
1d410164f6
commit
8dc7a0c6d8
|
|
@ -41,10 +41,6 @@ type TcustomGridCtl = class(tcustomscrollcontrol) //
|
||||||
begin
|
begin
|
||||||
InvalidateRect(nil,false);
|
InvalidateRect(nil,false);
|
||||||
end
|
end
|
||||||
function UpDateScrollBar();
|
|
||||||
begin
|
|
||||||
DoControlAlign();
|
|
||||||
end
|
|
||||||
public
|
public
|
||||||
function IncPaintLock();
|
function IncPaintLock();
|
||||||
begin
|
begin
|
||||||
|
|
@ -66,40 +62,22 @@ type TcustomGridCtl = class(tcustomscrollcontrol) //
|
||||||
end
|
end
|
||||||
inherited;
|
inherited;
|
||||||
end
|
end
|
||||||
|
function UpDateScrollBar();
|
||||||
|
begin
|
||||||
|
DoControlAlign();
|
||||||
|
end
|
||||||
function DoControlAlign();override;
|
function DoControlAlign();override;
|
||||||
begin
|
begin
|
||||||
UpDateFixed();
|
if(IsUpDating())then
|
||||||
InitialScroll();
|
|
||||||
end
|
|
||||||
private
|
|
||||||
function allwidth();
|
|
||||||
begin
|
|
||||||
//return (FxWidth-FXfiexed);
|
|
||||||
r := 0;
|
|
||||||
for i:= 0 to FColsWidths.length()-1 do
|
|
||||||
begin
|
begin
|
||||||
r+=FColsWidths[i];
|
FScroolChanged := true;
|
||||||
end
|
end else
|
||||||
return r;
|
|
||||||
end
|
|
||||||
function allheigth();
|
|
||||||
begin
|
|
||||||
//return FyHeight-FYfiexed;
|
|
||||||
if FVariableRows then
|
|
||||||
begin
|
begin
|
||||||
r := 0;
|
UpDateFixed();
|
||||||
for i:= 0 to FRowsHeight.length()-1 do
|
pt := New TPAINTCOUNT(self);
|
||||||
begin
|
InitialScroll();
|
||||||
r+=FRowsHeight[i];
|
end
|
||||||
end
|
|
||||||
return r;
|
|
||||||
end else
|
|
||||||
begin
|
|
||||||
r := FRowHeight*FItemCount;
|
|
||||||
return r;
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
public
|
|
||||||
function Create(AOwner);override; //构造
|
function Create(AOwner);override; //构造
|
||||||
begin
|
begin
|
||||||
inherited;
|
inherited;
|
||||||
|
|
@ -127,6 +105,8 @@ type TcustomGridCtl = class(tcustomscrollcontrol) //
|
||||||
FColsWidths := new tnumindexarray();
|
FColsWidths := new tnumindexarray();
|
||||||
FRowsHeight := new tnumindexarray();
|
FRowsHeight := new tnumindexarray();
|
||||||
FVariableRows := false;
|
FVariableRows := false;
|
||||||
|
ThumbTrack := true;
|
||||||
|
FScroolChanged := false;
|
||||||
end
|
end
|
||||||
function GetItemRect(i);virtual; //根据行号获得其区域
|
function GetItemRect(i);virtual; //根据行号获得其区域
|
||||||
begin
|
begin
|
||||||
|
|
@ -721,6 +701,14 @@ type TcustomGridCtl = class(tcustomscrollcontrol) //
|
||||||
@param(FixedRows)(integer) 固定的行数作为列标 %%
|
@param(FixedRows)(integer) 固定的行数作为列标 %%
|
||||||
**}
|
**}
|
||||||
private
|
private
|
||||||
|
function allwidth();
|
||||||
|
begin
|
||||||
|
return FxWidth;
|
||||||
|
end
|
||||||
|
function allheigth();
|
||||||
|
begin
|
||||||
|
return FyHeight;
|
||||||
|
end
|
||||||
function DrawAllParts(cvs,part,merg,rec);
|
function DrawAllParts(cvs,part,merg,rec);
|
||||||
begin
|
begin
|
||||||
bcvs := new TCanvsRgnClipAutoSave(cvs,rec);
|
bcvs := new TCanvsRgnClipAutoSave(cvs,rec);
|
||||||
|
|
@ -854,7 +842,6 @@ type TcustomGridCtl = class(tcustomscrollcontrol) //
|
||||||
DoControlAlign();
|
DoControlAlign();
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function UpDateFixed(); //更新固定宽度
|
function UpDateFixed(); //更新固定宽度
|
||||||
begin
|
begin
|
||||||
xfix := 0;
|
xfix := 0;
|
||||||
|
|
@ -879,6 +866,7 @@ type TcustomGridCtl = class(tcustomscrollcontrol) //
|
||||||
end
|
end
|
||||||
end else
|
end else
|
||||||
begin
|
begin
|
||||||
|
FyHeight := FRowHeight*FItemCount;
|
||||||
FYfiexed := FMarginTop+FFixedRows * FRowHeight;
|
FYfiexed := FMarginTop+FFixedRows * FRowHeight;
|
||||||
end
|
end
|
||||||
FXfiexed := FMarginLeft+xfix;
|
FXfiexed := FMarginLeft+xfix;
|
||||||
|
|
@ -906,7 +894,8 @@ type TcustomGridCtl = class(tcustomscrollcontrol) //
|
||||||
cursor := FC_NORMAL;
|
cursor := FC_NORMAL;
|
||||||
FC_CURRENT := FC_NORMAL;
|
FC_CURRENT := FC_NORMAL;
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
FScroolChanged;
|
||||||
FMergers;
|
FMergers;
|
||||||
FAutoScroll;
|
FAutoScroll;
|
||||||
//固定***********
|
//固定***********
|
||||||
|
|
@ -943,6 +932,43 @@ type TcustomGridCtl = class(tcustomscrollcontrol) //
|
||||||
FCurrentSizeId;
|
FCurrentSizeId;
|
||||||
FCurrentSizePos;
|
FCurrentSizePos;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
type TCanvsRgnClipAutoSave=class()//canvas 裁剪
|
||||||
|
{**
|
||||||
|
@expan(说明) 裁剪canvas区域,销毁时还原 %%
|
||||||
|
**}
|
||||||
|
function Create(cvs,rec);
|
||||||
|
begin
|
||||||
|
{**
|
||||||
|
@explan(说明)构造裁剪对象 %%
|
||||||
|
@param(cvs)(tcustomcanvas) canvas 对象 %%
|
||||||
|
@param(rec)(array(左上右下))区域 %%
|
||||||
|
**}
|
||||||
|
if(cvs is class(tcustomcanvas))and cvs.HandleAllocated()and ifarray(rec)then
|
||||||
|
begin
|
||||||
|
FW32api := cvs._wapi;
|
||||||
|
FCvsHandle := cvs.Handle;
|
||||||
|
FCrg := FW32api.CreateRectRgn(rec[0],rec[1],rec[2],rec[3]);
|
||||||
|
FBKrg := FW32api.SelectClipRgn(FCvsHandle,FCrg); //裁剪区域
|
||||||
|
end
|
||||||
|
end
|
||||||
|
function Destroy();
|
||||||
|
begin
|
||||||
|
if FW32api and FCvsHandle and FBKrg and FCrg then
|
||||||
|
begin
|
||||||
|
FW32api.SelectClipRgn(FCvsHandle,FBKrg); //恢复区域
|
||||||
|
FW32api.DeleteObject(FCrg); //销毁区域
|
||||||
|
end
|
||||||
|
FW32api := nil;
|
||||||
|
end
|
||||||
|
private
|
||||||
|
FBKrg;
|
||||||
|
FCrg;
|
||||||
|
FCvsHandle;
|
||||||
|
FW32api;
|
||||||
|
end
|
||||||
implementation
|
implementation
|
||||||
type TPAINTCOUNT=class
|
type TPAINTCOUNT=class
|
||||||
{**
|
{**
|
||||||
|
|
@ -953,12 +979,12 @@ type TPAINTCOUNT=class
|
||||||
if v is class(TControl)then
|
if v is class(TControl)then
|
||||||
begin
|
begin
|
||||||
FPainter := v;
|
FPainter := v;
|
||||||
v.BeginUpDate();
|
v.IncPaintLock();
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
function Destroy();
|
function Destroy();
|
||||||
begin
|
begin
|
||||||
if FPainter then FPainter.EndUpDate();
|
if FPainter then FPainter.DecPaintLock();
|
||||||
FPainter := nil;
|
FPainter := nil;
|
||||||
end
|
end
|
||||||
FPainter;
|
FPainter;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue