⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 155.htm

📁 水木清华的BBS文章
💻 HTM
📖 第 1 页 / 共 2 页
字号:
              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 + -