有什么方法可以固定住DBGrid 的某几个列使它一直在左边,不会滚动? 高手请进!(50分)

  • 主题发起人 Dark Angel
  • 开始时间
D

Dark Angel

Unregistered / Unconfirmed
GUEST, unregistred user!
我想固定住DBGrid 的某几个列,
比方说我想固定第一列和第二列,使它在按横向滚动栏时不会随着滚动,但其它列却可以
滚动!
有什么好的想法和建议可以提出来,大家一起做个试验,交流交流!
 
强制转换成TStringGrid
然后修改固定栏数目,好象是fixedcol
 
用infopower的wwDbGrid.
或者参考他的原码.
 
inforpower3000做这个最合适不过了。
 
分数加到200吧,我来帮你 !!!!
 
To dedema
把你的方法说出来,行我话我给你200分。。。
 
好的。嘻。。。。。
本来,我的专家分只有15分,
那一天,突然专家分多了200分,激发了我对分数的贪心了。。。呵呵。。。。
如果你想固定第一列和第二列,则方法如下:
在dbgrid的OnColumnMoved事件中,写下
if (fromindex=0)or(toindex=0)or(fromindex=1)or(toindex=1) then
dbgrid1.Columns[toindex].Index :=fromindex;
这样,第一,二列就移不了啦!
不过,我也不会太小气的。你要是没有,50就50吧!

 
又来了:
我 在 使 用 Delphi 5进 行 数 据 库 编 程 的 时 候 , 希 望 DBGRID构 件 在 显 示 数 据 的 时 候 能 象 FoxPro的BROWSE命 令 一 样 , 锁 定 左 边 指 定 的 几 列 不 进 行 滚 动 , 请 问 应 用 什 么 方 法 来 实 现 ?
我 们 知 道 Delphi的 TStringGrid有 一 个 属 性 FixedCols来 指 定 不 滚 动 的列 。 虽 然 TDBGrid不 能 直 接 使 用 这 一 属 性 , 但 通 过 强 制 类 型 转 换 也 可 以 实 先 这 一 功 能 , 因为 这 两 个 类 都 来 自 TCustomGrid类 。 下 面 我 们 以 Delphi 3.0的 Demos/Db/CtrlGrid为 例 来说 明 具 体 的 用 法 。 在 这 个 例 子 的 TFmCtrlGrid.FormShow过 程 中 加 入 如 下 一 行 :TStringGrid(DbGrid1).FixedCols := 2;
运 行 该 程 序 ,在 左 右 移 动 各 列 时, Symbol列 不 会 移 动 。 除 了 这 种 方 法 , 也 可 以 采 用 下 面 的 方 法 : 首 先 在 Form声 明 部 分 加上 type TMyGrid = Class(TDBGrid) end;然 后 在 TFmCtrlGrid.FormShow过程中加入: TMyGrid(DbGrid1).FixedCols := 2;
两 者 从 形 式 上 略 有 不 同 , 但 实 质 都 是 一 样 的 。 我 们 这 里 设 置FixedCols为 2, 这 是 因 为 在 DBGrid构 件 最 左 侧 有 个 指 示 列 , 如 果 你 将 DBGrid的 Options属性 的 dgIndicator设 为False, 则 应 设 置 FixedCols为 1。

此法在以下操作后失效:
1、鼠标将其中一栏的宽度拉大后。
2、出现被锁定列的标题文字无法显示。
3、在移动标题栏或改变dbgrid的行或列时
 
用dbgrideh吧又可打印。
 
用IP2000或IP3000吧,只要设一个属性就可以搞定了。
 
最有建设性的议见是Dedema 提的,虽然我还没试。
另外我自己想研究一下Grid 的底层,免得受那个鸟DBgrid 的气
在此谢过各位的热心帮助了!
 
象lich007说的,好象没有好办法。。。
 
顶部