📄 155.htm
字号:
2: ShowMessage('Via Tag -- Button2 Click'); <br>
end; <br>
end; <br>
end; <br>
<br>
<br>
7. 执行看看吧! <br>
<br>
七 如何将自制的图形贴到SpeedButton上 <br>
<br>
<br>
我做了一个很大的SpeedButton, 如果用Delphi所提供的Bitmap图形放在Button <br>
上, 显得太小了, <br>
因此我要自己做一张图放到Button上, 但.. <br>
<br>
<br>
1). 我应该用BitBtn or SpeedButton ? <br>
<br>
2). 如果直接将自己的Bitmap贴上去, Button上只能出现一种颜色, 似乎还 <br>
另外需要一张Mask来协助, <br>
请问我该如何制做出Mask, 又如何才能将 Bitmap与mask放在同一个图档中 <br>
(就像Delphi所提供的Icon or <br>
(就像Delphi所提供的Icon or <br>
Bitmap一样) , 直接在Grply属性中Load就好了呢??? <br>
<br>
3). 可有专门制做这种Icon or Bitmap的工具???? <br>
<br>
<br>
1) 用哪一个都行, 惟 SpeedButton 并没有 TabStop, 所以, 您的应用程式 <br>
该用哪一个, <br>
您自己可以衡量看看. <br>
<br>
2) Glyph 属性您可以自由指定 load 进来任一个 bitmap 档案, <br>
惟请注意这张图型的左下角那个点是「透明指示色」, <br>
图型中与该点同色的点都会被代成与按钮同色(这样才有透明背景的效果嘛! <br>
:p), 所以, <br>
您试试将该图的左下角的点改成其他颜色, 然後再指定 glyph 重新 load <br>
一次看看, <br>
相信就不会变成灰阶或只出现部分颜色了. <br>
<br>
3) Delphi 内附的 Image Editor 就可以用. 不支援 bitmap 输出图档的绘 <br>
图软体恐怕不多, 至少 Win95 <br>
附的小画家也可以吧. <br>
<br>
八 如何在 DBMemo 中插入字串? <br>
<br>
如何在 DBMemo 中插入字串? <br>
<br>
例如: <br>
原字串: 1256 <br>
插入字串後: 123456 <br>
<br>
<br>
<br>
您可以参考我目前的作法:利用 SelStart, SelLength 属性, 配合 SetSelTextBuf <br>
<br>
方法 <br>
<br>
例: <br>
procedure TForm1.Button1Click(Sender: TObject); <br>
var <br>
sInserted: string; <br>
begin <br>
with Memo1 do <br>
begin <br>
SelStart := SelStart + SelLength; <br>
SelLength := 0; <br>
SelLength := 0; <br>
SetSelTextBuf('Test'); <br>
end; <br>
end; <br>
<br>
九 如何侦测DBGrid目前的记录与栏位资讯 <br>
<br>
各位Delphi迷大家好,scorpio在此第一次发问... <br>
<br>
请问用什麽方式可以抓到游标或滑鼠目前所在DBGrid的Record? <br>
我的意思是,让游标所在之record可以立即显示在另外的edit 内 <br>
<br>
我用: Edit1.Text:=FieldByName(' 栏位名称').AsString <br>
可是它都没有随著游标位置改变内容ㄋㄟ有没有像是CurrentRecord之类的 <br>
pointer呢?How to use it??? <br>
<br>
<br>
<br>
如果您的问题是对应一组 Edit 元件的话, 建""采用 TDBEdit 或 TDBLabel, <br>
可以不必再费心管记录位置; <br>
<br>
如果是只有一个 EditBox, 内容要一直反应 DBGrid 的目前记录的目前栏位, <br>
那可以同时在 DataSource 的 <br>
OnDataChange 与 DbGrid 的 OnColEnter 这两个事件中写更新EditBox内容的 <br>
程式. <br>
<br>
例如 DBGrid 的 OnColEnter 事件: <br>
<br>
procedure TForm1.DBGrid1ColEnter(Sender: TObject); <br>
begin <br>
if DBGrid1.SelectedField nil then <br>
Edit1.Text := DBGrid1.SelectedField.AsString; <br>
end; <br>
<br>
但只靠 OnColEnter 是不够的, 因为, 在同一个 Column(同一个栏位)上下移动 <br>
反白方格时, OnColEnter <br>
是不会被触发的, 所以, 可以再搭配 OnDataChange事件, 在 State 为 <br>
dsBrowse 时的 DataChange, <br>
可以视同记录位置的改变,以下的程式是呼叫 DBGrid 的 OnColEnter 事件处理 <br>
程序: <br>
<br>
procedure TForm1.DataSource1DataChange(Sender: TObject; Field: <br>
TField); <br>
begin <br>
if DataSource1.State = dsBrowse then <br>
if DataSource1.State = dsBrowse then <br>
DBGrid1ColEnter(Sender); <br>
end; <br>
<br>
十 有关TListbox的使用 <br>
<br>
listbox1.Items 为Tstring类,符合标准调用. <br>
(1)赋值 <br>
listbox1.items.add('STRING') 增加一条 <br>
(2)取值 <br>
ListBox1.items[i] 取出一条 <br>
(3)删除 <br>
listbox1.items.delete(i) 删除一条 <br>
(4)数据类型(长度)定义 <br>
i:=ListBox1.items.count 数据条数 <br>
FileListBox1.selected[i] 该条数据选中否 <br>
i=(0..ListBox1.items.count) <br>
(5)其他 <br>
listbox1.Clear 清除数据 <br>
<br>
十一 有关TListView的使用 <br>
<br>
ListView1.Items 为标准 Tlistitems类 <br>
ListView1.Items <br>
(1)赋值 <br>
with ListView1.Items.Add do <br>
begin <br>
Caption:='caption'; //添加第一项 <br>
SubItems.add('aaaaa'); //添加后面数据 <br>
SubItems.add('1234'); <br>
SubItems.add('1234'); <br>
end; //一定要使用WITH结构. <br>
(2)取值 <br>
listview1.Items.Item[i].Caption 取得某条数据标题 <br>
listview1.Items.Item[i].SubItems.Strings[j] 取得某条数据内容 <br>
listview1.Items.Item[i].SubItems.CommaText 一条记录的全部内容, <br>
格式: "标题","内容1","内容2",.... <br>
listview1.Items.Item[i].SubItems.Text 一条记录的全部内容, <br>
格式: 标题%0D%0A内容%0D%0A内容2%0D%0A.... <br>
<br>
(3)删除 <br>
listview1.Items.Item[i].Delete; 删除一条数据 <br>
(4)数据类型(长度)定义 <br>
i:=ListView1.Items.Count 数据条数 <br>
listview1.Items.Item[i].Selected 该条数据选中否(MultiSelect决定单选复选 <br>
d 该条数据选中否(MultiSelect决定单选复选 <br>
) <br>
(5)其他 <br>
ListView1.Items.Clear; 清除数据 <br>
<br>
十二 在StringGrid怎样制作只读的列 <br>
<br>
在 OnSelectCell事件处理程序中,加入: (所有的列均设成可修改的) <br>
<br>
if Col mod 2 = 0 then <br>
grd.Options := grd.Options + [goEditing] <br>
else <br>
grd.Options := grd.Options - [goEditing]; <br>
<br>
十三 怎样读出MEMO控件的当前行 <br>
<br>
使用MEMO控件的em_LineFromChar属性,程序如下: <br>
<br>
procedure TMyForm.BitBtn1Click(Sender: TObject); <br>
var <br>
iLine : Integer ; <br>
begin <br>
iLine := Memo1.Perform(em_LineFromChar, $FFFF, 0); <br>
form(em_LineFromChar, $FFFF, 0); <br>
{ Note: 第一行为 0 } <br>
messageDlg('Line Number: ' + IntToStr(iLine), mtInformation, <br>
[mbOK], 0 ) ; <br>
end; <br>
-- <br>
<br>
快乐的海哥 <br>
<br>
※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: 166.111.5.44] <br>
</small><hr>
<p align="center">[<a href="index.htm">回到开始</a>][<a href="7.htm">上一层</a>][<a href="156.htm">下一篇</a>]
<p align="center"><a href="http://cterm.163.net">欢迎访问Cterm主页</a></p>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -