热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

数据集和非数据感知控件使用

1unitfrmMainUnit;23interface45uses6Windows,Messages,SysUtils,Variants,Classes,Graphics,Con
  1 unit frmMainUnit;
  2 
  3 interface
  4 
  5 uses
  6   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  7   jpeg, // 这里是一些手工的引用
  8   Dialogs, DB, ADODB, StdCtrls, DBCtrls, Mask, Grids, DBGrids, Buttons, Menus,
  9   ExtCtrls, ExtDlgs;
 10 
 11 type
 12   TfrmMain = class(TForm)
 13     ADOConnection1: TADOConnection;
 14     ADOQuery1: TADOQuery;
 15     DataSource1: TDataSource;
 16     DBGrid1: TDBGrid;
 17     DBEdit1: TDBEdit;
 18     DBComboBox1: TDBComboBox;
 19     Label1: TLabel;
 20     Label2: TLabel;
 21     DBEdit2: TDBEdit;
 22     Label3: TLabel;
 23     DBEdit3: TDBEdit;
 24     Label4: TLabel;
 25     DBEdit4: TDBEdit;
 26     Label5: TLabel;
 27     BitBtn1: TBitBtn;
 28     BitBtn2: TBitBtn;
 29     BitBtn3: TBitBtn;
 30     Label8: TLabel;
 31     Panel1: TPanel;
 32     Image1: TImage;
 33     PopupMenu1: TPopupMenu;
 34     A1: TMenuItem;
 35     N1: TMenuItem;
 36     B1: TMenuItem;
 37     N2: TMenuItem;
 38     C1: TMenuItem;
 39     p1: TOpenPictureDialog;
 40     p2: TSavePictureDialog;
 41     procedure FormCreate(Sender: TObject);
 42     procedure ADOQuery1AfterPost(DataSet: TDataSet);
 43     procedure ADOQuery1BeforeEdit(DataSet: TDataSet);
 44     procedure ADOQuery1NewRecord(DataSet: TDataSet);
 45     procedure BitBtn2Click(Sender: TObject);
 46     procedure BitBtn1Click(Sender: TObject);
 47     procedure BitBtn3Click(Sender: TObject);
 48     procedure A1Click(Sender: TObject);
 49     procedure ADOQuery1AfterScroll(DataSet: TDataSet);
 50     procedure B1Click(Sender: TObject);
 51     procedure C1Click(Sender: TObject);
 52     procedure Image1DblClick(Sender: TObject);
 53   private
 54     { Private declarations }
 55     function ShowImage(DataSet: TDataSet; FieldName: string; Image: TImage;
 56       Panel: TPanel): Boolean;
 57   public
 58     { Public declarations }
 59   end;
 60 
 61 var
 62   frmMain: TfrmMain;
 63 
 64 implementation
 65 
 66 {$R *.dfm}
 67 
 68 
 69 function TfrmMain.ShowImage(DataSet: TDataSet; FieldName: string; Image:
 70   TImage; Panel: TPanel): Boolean;
 71 var
 72   ms: TMemoryStream;
 73   JI: TJpegImage;
 74 begin
 75   ms := TMemoryStream.Create;
 76   JI := TJpegImage.Create;
 77   try
 78     try // 图片均以jpg格式保存,不支持使用dbimage,都在AfterScroll事件中读取。
 79       TBlobField(DataSet.FieldByName(FieldName)).SaveToStream(ms);
 80       if ms.Size > 0 then
 81       begin
 82         ms.Position := 0;
 83         JI.LoadFromStream(ms);
 84         Image.Picture.Bitmap.Assign(JI);
 85         if (Image.Picture.Bitmap.Width > 119) or (Image.Picture.Bitmap.Width >
 86           137) then
 87           Image.Stretch := True
 88         else
 89           Image.Stretch := false;
 90         Panel.Caption := ‘‘;
 91       end
 92       else
 93       begin
 94         Image.Picture := nil;
 95         Panel.Caption := 无照片;
 96       end;
 97     finally
 98       FreeAndNil(ms);
 99       FreeAndNil(JI);
100     end;
101     result := True;
102   except
103     result := false;
104   end;
105 end;
106 
107 procedure TfrmMain.A1Click(Sender: TObject);
108 var
109   ms: TMemoryStream;
110   JI: TJpegImage;
111 begin
112   if not ADOQuery1.Active then
113     exit;
114   if p1.Execute then
115   begin
116     ms := TMemoryStream.Create;
117     JI := TJpegImage.Create;
118     try // 图片读取后都转换成jpg格式并压缩后保存到数据库中。
119       if lowercase(ExtractFileExt(p1.FileName)) = .bmp then
120       begin
121         Image1.Picture.LoadFromFile(p1.FileName);
122         JI.Assign(Image1.Picture.Bitmap);
123       end
124       else
125       begin
126         JI.LoadFromFile(p1.FileName);
127         Image1.Picture.Bitmap.Assign(JI);
128       end;
129       JI.CompressionQuality := 75; // 图片压缩比,越低越不清楚。
130       JI.Compress;
131       JI.SaveToStream(ms);
132       if not(ADOQuery1.State in dsEditModes) then
133         ADOQuery1.Edit;
134       TBlobField(ADOQuery1.FieldByName(fphoto)).LoadFromStream(ms);
135       if (Image1.Picture.Bitmap.Width > 119) or (Image1.Picture.Bitmap.Height >
136         137) then
137         Image1.Stretch := True
138       else
139         Image1.Stretch := false;
140       Panel1.Caption := ‘‘;
141     finally
142       FreeAndNil(ms);
143       FreeAndNil(JI);
144       JI.Free;
145     end;
146   end;
147 end;
148 
149 procedure TfrmMain.ADOQuery1AfterPost(DataSet: TDataSet);
150 begin // 保存或退出编辑状态时,显示为删除
151   BitBtn2.Caption := 删除 &D;
152 end;
153 
154 procedure TfrmMain.ADOQuery1AfterScroll(DataSet: TDataSet);
155 begin
156   ShowImage(ADOQuery1, fphoto, Image1, Panel1);
157 end;
158 
159 procedure TfrmMain.ADOQuery1BeforeEdit(DataSet: TDataSet);
160 begin // 进入编辑状态时,显示为取消
161   BitBtn2.Caption := 取消 &D;
162 end;
163 
164 procedure TfrmMain.ADOQuery1NewRecord(DataSet: TDataSet);
165 begin // 这里处理新增
166   ADOQuery1.FieldByName(fsex).AsString := ;
167 end;
168 
169 procedure TfrmMain.B1Click(Sender: TObject);
170 begin
171   if not ADOQuery1.Active then
172     exit;
173   if ADOQuery1.State in dsEditModes then
174     exit;
175   if TBlobField(ADOQuery1.FieldByName(FPhoto)).IsNull then
176     exit; // 如果图片为空,就没必要继续了
177   if p2.Execute then
178     if ExtractFileExt(p2.FileName) = ‘‘ then
179       TBlobField(ADOQuery1.FieldByName(FPhoto))
180         .SaveToFile(p2.FileName + .jpg)
181     else
182       TBlobField(ADOQuery1.FieldByName(FPhoto)).SaveToFile(p2.FileName);
183 end;
184 
185 procedure TfrmMain.BitBtn1Click(Sender: TObject);
186 begin
187   ADOQuery1.Append;
188 end;
189 
190 procedure TfrmMain.BitBtn2Click(Sender: TObject);
191 begin
192   if ADOQuery1.State in dsEditModes then
193     ADOQuery1.Cancel
194   else
195     if Application.MessageBox(是否删除当前记录?, 提示信息, MB_OKCANCEL +
196     MB_ICONQUESTION + MB_DEFBUTTON2) = IDOK then
197     ADOQuery1.Delete;
198   ShowImage(ADOQuery1, fphoto, Image1, Panel1);
199 end;
200 
201 procedure TfrmMain.BitBtn3Click(Sender: TObject);
202 begin
203   ADOQuery1.Post;
204 end;
205 
206 procedure TfrmMain.C1Click(Sender: TObject);
207 begin
208   if not ADOQuery1.Active then
209     exit;
210   if TBlobField(ADOQuery1.FieldByName(fphoto)).IsNull then
211     exit;
212   if MessageBox(Application.Handle, 是否清除照片?, 提示信息,
213     MB_ICONQUESTION + MB_YESNO + MB_DEFBUTTON2) = IDNO then
214     exit;
215   Image1.Picture := nil;
216   if not(ADOQuery1.State in dsEditModes) then
217     ADOQuery1.Edit;
218   TBlobField(ADOQuery1.FieldByName(fphoto)).Clear;
219   ShowImage(ADOQuery1, fphoto, Image1, Panel1);
220 end;
221 
222 procedure TfrmMain.FormCreate(Sender: TObject);
223 begin
224   with ADOQuery1 do
225   begin
226     close;
227     sql.Text := select * from temployee;
228     Open;
229   end;
230 end;
231 
232 procedure TfrmMain.Image1DblClick(Sender: TObject);
233 var
234   mPoint: TPoint;
235 begin
236   GetCursorPos(mPoint);
237   PopupMenu1.Popup(mPoint.X, mPoint.Y);
238 end;
239 
240 end.

数据集和非数据感知控件使用


推荐阅读
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 使用圣杯布局模式实现网站首页的内容布局
    本文介绍了使用圣杯布局模式实现网站首页的内容布局的方法,包括HTML部分代码和实例。同时还提供了公司新闻、最新产品、关于我们、联系我们等页面的布局示例。商品展示区包括了车里子和农家生态土鸡蛋等产品的价格信息。 ... [详细]
  • Tkinter Frame容器grid布局并使用Scrollbar滚动原理
    本文介绍了如何使用Tkinter实现Frame容器的grid布局,并通过Scrollbar实现滚动效果。通过将Canvas作为父容器,使用滚动Canvas来滚动Frame,实现了在Frame中添加多个按钮,并通过Scrollbar进行滚动。同时,还介绍了更新Frame大小和绑定滚动按钮的方法,以及配置Scrollbar的相关参数。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 动态规划算法的基本步骤及最长递增子序列问题详解
    本文详细介绍了动态规划算法的基本步骤,包括划分阶段、选择状态、决策和状态转移方程,并以最长递增子序列问题为例进行了详细解析。动态规划算法的有效性依赖于问题本身所具有的最优子结构性质和子问题重叠性质。通过将子问题的解保存在一个表中,在以后尽可能多地利用这些子问题的解,从而提高算法的效率。 ... [详细]
  • 本文介绍了指针的概念以及在函数调用时使用指针作为参数的情况。指针存放的是变量的地址,通过指针可以修改指针所指的变量的值。然而,如果想要修改指针的指向,就需要使用指针的引用。文章还通过一个简单的示例代码解释了指针的引用的使用方法,并思考了在修改指针的指向后,取指针的输出结果。 ... [详细]
  • ASP.NET2.0数据教程之十四:使用FormView的模板
    本文介绍了在ASP.NET 2.0中使用FormView控件来实现自定义的显示外观,与GridView和DetailsView不同,FormView使用模板来呈现,可以实现不规则的外观呈现。同时还介绍了TemplateField的用法和FormView与DetailsView的区别。 ... [详细]
  • Redis底层数据结构之压缩列表的介绍及实现原理
    本文介绍了Redis底层数据结构之压缩列表的概念、实现原理以及使用场景。压缩列表是Redis为了节约内存而开发的一种顺序数据结构,由特殊编码的连续内存块组成。文章详细解释了压缩列表的构成和各个属性的含义,以及如何通过指针来计算表尾节点的地址。压缩列表适用于列表键和哈希键中只包含少量小整数值和短字符串的情况。通过使用压缩列表,可以有效减少内存占用,提升Redis的性能。 ... [详细]
  • 本文介绍了一个免费的asp.net控件,该控件具备数据显示、录入、更新、删除等功能。它比datagrid更易用、更实用,同时具备多种功能,例如属性设置、数据排序、字段类型格式化显示、密码字段支持、图像字段上传和生成缩略图等。此外,它还提供了数据验证、日期选择器、数字选择器等功能,以及防止注入攻击、非本页提交和自动分页技术等安全性和性能优化功能。最后,该控件还支持字段值合计和数据导出功能。总之,该控件功能强大且免费,适用于asp.net开发。 ... [详细]
  • 我用Tkinter制作了一个图形用户界面,有两个主按钮:“开始”和“停止”。请您就如何使用“停止”按钮终止“开始”按钮为以下代码调用的已运行功能提供建议 ... [详细]
  • pythonMatplotlib(二)
    Matplotlib+pandas作图一、对csv文件进行提取ruixi.csv对上述表格进行提取并做图画出图像二、对.xlsx进行提取:rui ... [详细]
  • MVC中的自定义控件
    怎么样创建自定义控 ... [详细]
  • CSS|网格-行-结束属性原文:https://www.gee ... [详细]
  • 关于extjs开发实战pdf的信息
    本文目录一览:1、extjs实用开发指南2、本 ... [详细]
author-avatar
jinglongyy70
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有