(转载)Delphi7中ZEOSDBO控件使用 原文 https://www.amingstudio.com/delphi/225.html

摘要:
=2005ado)I.安装控制装置1。输入EOSDBO-7.1.4-stablepackagesdelphi7双击ZeosDbo.bpg;数据库:=True;vars:=Tstringlist.Create;=0tos.Count-1dobeginListView1.Items.Add.Caption;=s、 字符串[i]:

本文采用的是Delphi7+ZEOSDBO

 
查看更多关于 ZEOSDBO 的文章

控件,读取Sqlite数据库,并解决Dbgrid Memo字段及乱码的问题

很多同学 都在问Delphi7怎么弄sqlite数据库, 网上也没有很清晰的,所以就写出来,大家一起分享
本人菜鸟,大神勿喷。
这里使用的是ZEOSDBO控, 官网为https://sourceforge.net/projects/zeoslib/,最新版本为7.2.4。
支持的很多。。。
(pooled.* ASA7 ASA8 ASA9 ASA12 oracle oracle-9i sqlite sqlite-3 interbase-6
firebird-1.0 firebird-1.5 firebird-2.0 firebird-2.1 firebird-2.5 firebirdd-1.5
firebirdd-2.0 firebirdd-2.1 firebirdd-2.5 postgresql postgresql-7 postgresql-8 postgresql-9
mysql mysql-4.1 mysql-5 mysqld-4.1 mysqld-5 MariaDB-5 mssql sybase FreeTDS_MsSQL<=6.5 FreeTDS_Sybase<10 FreeTDS_Sybase-10+ FreeTDS_MsSQL-7.0 FreeTDS_MsSQL-2000 FreeTDS_MsSQL>=2005 ado)

一、安装控件

    • 1、进入 ...EOSDBO-7.1.4-stablepackagesdelphi7 双击 ZeosDbo.bpg。然后点击Delphi7菜单栏的 project à compile all projects,编译完点击 ok。
    • 2、在Delphi7菜单栏 Tool àEnvironmentOptionsàLibraryàLibrary Path中加入路径,(所在文件夹)EOSDBO-7.1.4-stablepackagesdelphi7uild
 
  • 3、双击 ..EOSDBO-7.1.4-stablepackagesdelphi7ComponentDesign.dpk,点击install,安装完毕后,控件就都出现了

二、读取数据库

    • 1、新建个application 拖入DbGrid1、DataSource1、ZQuery1、ZConnection1、listview1、Button1、Button2 7个控件
    • 2、首先把控件链接起来,我习惯用代码写在Form1的onCreate事件中
      procedure TForm1.FormCreate(Sender: TObject);
      var
        path: string;
      begin
        path := ExtractFileDir(ParamStr(0)); // 获取根目录路径
        ZQuery1.Connection := ZConnection1;
        DataSource1.DataSet := ZQuery1;
        DBGrid1.DataSource := DataSource1;
        with ZConnection1 do
        begin
          Protocol := 'sqlite-3'; // 数据库类型
          port := 3306; // 端口
          HostName := '127.0.0.1';
          Database := path + '/FpcEfficiency.db'; // 数据库路径
          Connected := True;
        end;
 
    • 3、在Listview1中显示表名
      • 1)修改Listview1的 ViewStyle属性为 vsReport ,双击Listview1 添加一个column 修改Caption属性为 数据库表名,RowSelect属性改为True,GridLines属性改为True;
      • 2)修改button2 caption属性为 读取表 button1 Caption属性为连接表
      • 3)在Button2的OnClick事件中写入代码
      procedure TForm1.Button2Click(Sender: TObject);
      var
        s: TStrings;
        i: Integer;
      begin
        ListView1.Items.Clear;
        try
          s := Tstringlist.Create;
          ZConnection1.GetTableNames('', s); // 第一个参数为过滤 不过滤为空
          for i := 0 to s.Count - 1 do
          begin
            ListView1.Items.Add.Caption := s.Strings[i];
          end;
        finally
          FreeAndNil(s);
        end;
      end;

      这时,已经能读取表名了

 
    • 4、在DbGrid1中显示数据库内容
      在Button1的OnClick事件中写入代码
      procedure TForm1.Button1Click(Sender: TObject);
      begin
        if ListView1.Items.Count = 0 then
          ShowMessage('请先读取表名')
        else if ListView1.SelCount <= 0 then
          ShowMessage('先选择表!')
        else
        begin
          with ZQuery1 do
          begin
            Close;
            SQL.Clear;
            SQL.add('select * from ' + ListView1.Selected.Caption);
            Open;
          end;
        end;
      end;

      这时若发现全部为乱码,修改ZConnection1的AutoEncodeString属性为True就好了。

 
  • 5、由于用的是Dbgrid,Text字段都不显示内容,显示的为(Memo)。网上有很多解决的办法,大部分都推荐换DbGridh控件,这里既然用,就不换了,用代码搞定。
    Query1 Fields 有个ongettext事件,用这个实现。定义两个过程
    procedure TForm1.ShowTextField(Sender: TField; var Text: string;
      DisplayText: Boolean);
    begin
      Text := Sender.AsString;
    end;
    
    procedure TForm1.SetTextFieldEvent(const ADatSet: TZQuery);
    var
      i: integer;
    begin
      with ADatSet do
      begin
        DisableControls;
        try
          for i := 0 to Fields.Count - 1 do
            if Fields[i] is TMemoField then
              Fields[i].OnGetText := ShowTextField;
        finally
          EnableControls;
        end;
      end;
    end;

    然后在ZQuery1的AfterOpen事件中写入代码

    procedure TForm1.ZQuery1AfterOpen(DataSet: TDataSet);
    begin
     SetTextFieldEvent(ZQuery1);
    end;

三、最后就是DbGrid1颜色调整了。在DbGrid1控件的onDrawColumnCell事件中自己发挥了

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
  i: Integer;
begin
  if gdSelected in State then
    Exit;
  // 定义表头的字体和背景颜色:
  for i := 0 to (Sender as TDBGrid).Columns.Count - 1 do
  begin
    (Sender as TDBGrid).Columns[i].Title.Font.Name := '宋体'; // 字体
    (Sender as TDBGrid).Columns[i].Title.Font.Size := 9; // 字体大小
    (Sender as TDBGrid).Columns[i].Title.Font.Color := $000000FF; // 字体颜色(红色)
    (Sender as TDBGrid).Columns[i].Title.Color := $0000FF00; // 背景色(绿色)
  end;
  // 隔行改变网格背景色:
  if zQuery1.RecNo mod 2 = 0 then
    (Sender as TDBGrid).Canvas.Brush.Color := clInfoBk // 定义背景颜色
  else
    (Sender as TDBGrid).Canvas.Brush.Color := RGB(191, 255, 223); // 定义背景颜色
  // 定义网格线的颜色:
  DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
  with (Sender as TDBGrid).Canvas do // 画 cell 的边框
  begin
    Pen.Color := $00FF0000; // 定义画笔颜色(蓝色)
    MoveTo(Rect.Left, Rect.Bottom); // 画笔定位
    LineTo(Rect.Right, Rect.Bottom); // 画蓝色的横线
    Pen.Color := $0000FF00; // 定义画笔颜色(绿色)
    MoveTo(Rect.Right, Rect.Top); // 画笔定位
    LineTo(Rect.Right, Rect.Bottom); // 画绿色的竖线
  end;
end;

结果如图所示
Delphi7中ZEOSDBO控件使用 Delphi专题 第1张

免责声明:文章转载自《(转载)Delphi7中ZEOSDBO控件使用 原文 https://www.amingstudio.com/delphi/225.html》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇quartus使用串口IP模块python爬虫入门01:教你在 Chrome 浏览器轻松抓包下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Swing高级控件

  这篇文章给大家演示一下Swing中的高级控件的用法,为了方面大家入门,我们的示例将会尽可能的简化。Swing中的高级控件包括JTabbedPane(页签),JPanel(面板),JDesktopPane(桌面窗格),JInternalFrame(内部窗口),JProgressBar(进度条),JTree(树),JMenuBar(菜单栏),JPopupM...

winform 用户控件、 动态创建添加控件、timer控件、控件联动

用户控件: 相当于一个Panel 可以把多个控件放在里面 组合为一个控件,方便使用和布局。 动态创建添加控件 可以在一个大容器里一次性放入多个控件 例:根据文本框中输入的数字 给flowLayoutPanel1 添加多少个button public Form2(haoyou hao) { InitializeCom...

[原译]AVALONDOCK 2.0入门指南第一部分

AvalonDock 2.0可以用来为WPF创建一个类似Visual Studio的界面,深入理解如何使用AvalonDock进行开发是很重要的。 在这个入门指南里,我将演示如何开始使用AvalonDock,下面的文章都是基于2.0版本的。并且不能用于早期的版本。 AvalonDock是一个组合的布局模型,很多的控件都在视图上显示,一个DockingMan...

C# Label显示多行文本及换行(WinForm/WebForm)

Windows中Label控件是把Label的AutoSize属性设为False,这样就可以拖放了。记录一下。WinForm 很多朋友都会在开发WinForm中遇到Label要显示的内容太长,但却不能换行的问题.这里我总结了几种方法,供大家参考:        第一种是把Label的AutoSize属性设为False,手动修改Label的大小.这样的好处是...

Python使用Plotly绘图工具,绘制散点图、线形图

今天在研究Plotly绘制散点图的方法 使用Python3.6 + Plotly Plotly版本2.0.0 在开始之前先说说,还需要安装库Numpy,安装方法在我的另一篇博客中有写到:https://www.cnblogs.com/ws17345067708/p/10531531.html 因为Plotly没有自己独立的线性图形函数,所以把线性图形与散点...

【译】颜色空间 REC.709 vs sRGB的

(原文link https://www.image-engineering.de/library/technotes/714-color-spaces-rec-709-vs-srgb, 欢迎指正) 如果你不关心背景知识的话,下面这句话或许足够了,HDTV(REC.709)和sRGB用的是一样的三基色,但是转换函数(gamma)不同。 颜色空间定义 感谢耐心...