但是我已经把能改的都改了啊 不会是只读的了啊 大家救命啊
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Controls, Forms,
Dialogs, DB, Grids, DBGrids, StdCtrls, DBCtrls, ExtCtrls, Buttons, Mask,
ExtDlgs;type
TForm1 = class(TForm)
dgrdCat: TDBGrid;
DataSource1: TDataSource;
Panel1: TPanel;
Splitter1: TSplitter;
Panel2: TPanel;
btnadd: TBitBtn;
btnedt: TBitBtn;
btnDel: TBitBtn;
btnsave: TBitBtn;
btncancel: TBitBtn;
btnexit: TBitBtn;
SpeedButton1: TSpeedButton;
GroupBox1: TGroupBox;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
DBEdit1: TDBEdit;
DBEdit2: TDBEdit;
DBEdit3: TDBEdit;
DBEdit4: TDBEdit;
procedure FormShow(Sender: TObject);
procedure btnaddClick(Sender: TObject);
procedure BtnCancelClick(Sender: TObject);
procedure BtnSaveClick(Sender: TObject);
procedure btnexitClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure FormCreate(Sender: TObject);
procedure btnDelClick(Sender: TObject);
procedure btnedtClick(Sender: TObject);
private
procedure SetStatus(Flag:Boolean);
procedure beforeshow;
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementationuses Unit2;{$R *.dfm}
//窗口显示
procedure TForm1.FormShow(Sender: TObject);
begin
btnsave.Enabled:=false;
btncancel.Enabled:=false;
btnadd.Enabled:=true;
btnedt.Enabled:=true;
dgrdCat.Enabled:=true;
SpeedButton1.Visible:=false;
SetStatus(true);
btnadd.SetFocus;
end;//新增
procedure TForm1.btnaddClick(Sender: TObject);
begin
try
//将数据表置为增加状态
DM.query1.Append;
except
//若操作数据表出错,则报错
ShowMessage('增加错误,请检查服务器!');
//调用formshow程序,将界面置为浏览状态
formshow(Form1);
exit;
end;
//调整输入框的状态
SetStatus(false);
//调整按钮相关控件的状态
beforeshow;
dbedit1.SetFocus;
end;//修改
procedure TForm1.btnedtClick(Sender: TObject);
begin
////若数据表里没有数据,那也就没有必要修改
if DM.query1.RecordCount=0 then
begin
MessageDlg('该表中没有记录,不能修改!', mtInformation,
[mbOk], 0);
formshow(Form1);
exit;
end;
//若数据表中有数据,则修改当前指针所指向的记录
try
//将数据表置为修改状态
DM.query1.Edit;
except
//若操作数据表出错,则报错
showmessage('表无法操作,请检查数据库和网络!');
end;
//调整输入框的状态
SetStatus(false);
beforeshow;
//调整按钮和图像编辑相关控件的状态
dbedit1.SetFocus;
end;
//删除
procedure TForm1.btnDelClick(Sender: TObject);
begin
//若数据表里没有数据,那也就没有必要删除
if DM.query1.RecordCount=0 then
begin
MessageDlg('该表中没有记录,不能删除!', mtInformation,
[mbOk], 0);
formshow(Form1);
exit;
end;
//因为删除数据是不可逆操作,所以需要谨慎一点,加一个确定框
if MessageDlg('确定要删除该记录吗?',mtConfirmation,
[mbYes, mbNo],0) = mrYes then
begin
//若确实是需要删除,则实施删除操作
DM.query1.Delete;
//刷新一遍数据集,保证用户当前界面为最新的数据
DM.query1.Refresh;
end;
//调用formshow程序,将界面置为浏览状态
formshow(Form1);
end;
//取消
procedure TForm1.BtnCancelClick(Sender: TObject);
begin
if MessageDlg('确定要取消操作吗?',mtConfirmation,
[mbYes, mbNo],0) = mrYes then
begin
DM.query1.Cancel;
formshow(Form1);
end;
end;
//保存
procedure TForm1.BtnSaveClick(Sender: TObject);
var
typ:string;
begin
try
//保存
DM.query1.Post;
//刷新一遍数据集
DM.query1.Refresh;
except
//若保存出错,则报错
MessageDlg('检查记录是否重复了,不能保存!', mtInformation,[mbOk], 0);
//取消更新操作
DM.query1.Cancel;
formshow(Form1);
exit;
end;
//调用formshow程序,将界面置为浏览状态
formshow(Form1);
end;//设置输入框状态
procedure TForm1.SetStatus(Flag: Boolean);
begin
dbedit1.ReadOnly:=Flag;
dbedit2.ReadOnly:=Flag;
dbedit3.ReadOnly:=Flag;
dbedit4.ReadOnly:=Flag;
end;//调整按钮和图像编辑相关控件的状态
procedure TForm1.beforeshow;
begin
btnadd.Enabled:=false;
btnedt.Enabled:=false;
btnsave.Enabled:=true;
btncancel.Enabled:=true;
dgrdcat.Enabled:=false;
SpeedButton1.Visible:=true;
end;
//退出
procedure TForm1.btnexitClick(Sender: TObject);
begin
Close;
end;
//关闭窗口
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
//将操作的数据表关闭。
datasource1.DataSet.Active:=false;
//释放该窗体
Form1:=nil;
action:=cafree;
end;procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
//如果数据集处于修改或者增加状态下,则报错
if (dgrdcat.DataSource.DataSet.State=dsEdit) or (dgrdcat.DataSource.DataSet.State=dsInsert) then
begin
MessageDlg('正在操作数据,不能退出!', mtInformation,[mbOk], 0);
//将canclose属性设为false,表示关闭操作取消,不运行退出
canclose:=false;
end;
end;
//创建窗体
procedure TForm1.FormCreate(Sender: TObject);
begin
try
DM.query1.Open;
except
ShowMessage('数据库打开错误,请检查服务器!');
close;
end;
end;end.
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Controls, Forms,
Dialogs, DB, Grids, DBGrids, StdCtrls, DBCtrls, ExtCtrls, Buttons, Mask,
ExtDlgs;type
TForm1 = class(TForm)
dgrdCat: TDBGrid;
DataSource1: TDataSource;
Panel1: TPanel;
Splitter1: TSplitter;
Panel2: TPanel;
btnadd: TBitBtn;
btnedt: TBitBtn;
btnDel: TBitBtn;
btnsave: TBitBtn;
btncancel: TBitBtn;
btnexit: TBitBtn;
SpeedButton1: TSpeedButton;
GroupBox1: TGroupBox;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
DBEdit1: TDBEdit;
DBEdit2: TDBEdit;
DBEdit3: TDBEdit;
DBEdit4: TDBEdit;
procedure FormShow(Sender: TObject);
procedure btnaddClick(Sender: TObject);
procedure BtnCancelClick(Sender: TObject);
procedure BtnSaveClick(Sender: TObject);
procedure btnexitClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure FormCreate(Sender: TObject);
procedure btnDelClick(Sender: TObject);
procedure btnedtClick(Sender: TObject);
private
procedure SetStatus(Flag:Boolean);
procedure beforeshow;
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementationuses Unit2;{$R *.dfm}
//窗口显示
procedure TForm1.FormShow(Sender: TObject);
begin
btnsave.Enabled:=false;
btncancel.Enabled:=false;
btnadd.Enabled:=true;
btnedt.Enabled:=true;
dgrdCat.Enabled:=true;
SpeedButton1.Visible:=false;
SetStatus(true);
btnadd.SetFocus;
end;//新增
procedure TForm1.btnaddClick(Sender: TObject);
begin
try
//将数据表置为增加状态
DM.query1.Append;
except
//若操作数据表出错,则报错
ShowMessage('增加错误,请检查服务器!');
//调用formshow程序,将界面置为浏览状态
formshow(Form1);
exit;
end;
//调整输入框的状态
SetStatus(false);
//调整按钮相关控件的状态
beforeshow;
dbedit1.SetFocus;
end;//修改
procedure TForm1.btnedtClick(Sender: TObject);
begin
////若数据表里没有数据,那也就没有必要修改
if DM.query1.RecordCount=0 then
begin
MessageDlg('该表中没有记录,不能修改!', mtInformation,
[mbOk], 0);
formshow(Form1);
exit;
end;
//若数据表中有数据,则修改当前指针所指向的记录
try
//将数据表置为修改状态
DM.query1.Edit;
except
//若操作数据表出错,则报错
showmessage('表无法操作,请检查数据库和网络!');
end;
//调整输入框的状态
SetStatus(false);
beforeshow;
//调整按钮和图像编辑相关控件的状态
dbedit1.SetFocus;
end;
//删除
procedure TForm1.btnDelClick(Sender: TObject);
begin
//若数据表里没有数据,那也就没有必要删除
if DM.query1.RecordCount=0 then
begin
MessageDlg('该表中没有记录,不能删除!', mtInformation,
[mbOk], 0);
formshow(Form1);
exit;
end;
//因为删除数据是不可逆操作,所以需要谨慎一点,加一个确定框
if MessageDlg('确定要删除该记录吗?',mtConfirmation,
[mbYes, mbNo],0) = mrYes then
begin
//若确实是需要删除,则实施删除操作
DM.query1.Delete;
//刷新一遍数据集,保证用户当前界面为最新的数据
DM.query1.Refresh;
end;
//调用formshow程序,将界面置为浏览状态
formshow(Form1);
end;
//取消
procedure TForm1.BtnCancelClick(Sender: TObject);
begin
if MessageDlg('确定要取消操作吗?',mtConfirmation,
[mbYes, mbNo],0) = mrYes then
begin
DM.query1.Cancel;
formshow(Form1);
end;
end;
//保存
procedure TForm1.BtnSaveClick(Sender: TObject);
var
typ:string;
begin
try
//保存
DM.query1.Post;
//刷新一遍数据集
DM.query1.Refresh;
except
//若保存出错,则报错
MessageDlg('检查记录是否重复了,不能保存!', mtInformation,[mbOk], 0);
//取消更新操作
DM.query1.Cancel;
formshow(Form1);
exit;
end;
//调用formshow程序,将界面置为浏览状态
formshow(Form1);
end;//设置输入框状态
procedure TForm1.SetStatus(Flag: Boolean);
begin
dbedit1.ReadOnly:=Flag;
dbedit2.ReadOnly:=Flag;
dbedit3.ReadOnly:=Flag;
dbedit4.ReadOnly:=Flag;
end;//调整按钮和图像编辑相关控件的状态
procedure TForm1.beforeshow;
begin
btnadd.Enabled:=false;
btnedt.Enabled:=false;
btnsave.Enabled:=true;
btncancel.Enabled:=true;
dgrdcat.Enabled:=false;
SpeedButton1.Visible:=true;
end;
//退出
procedure TForm1.btnexitClick(Sender: TObject);
begin
Close;
end;
//关闭窗口
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
//将操作的数据表关闭。
datasource1.DataSet.Active:=false;
//释放该窗体
Form1:=nil;
action:=cafree;
end;procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
//如果数据集处于修改或者增加状态下,则报错
if (dgrdcat.DataSource.DataSet.State=dsEdit) or (dgrdcat.DataSource.DataSet.State=dsInsert) then
begin
MessageDlg('正在操作数据,不能退出!', mtInformation,[mbOk], 0);
//将canclose属性设为false,表示关闭操作取消,不运行退出
canclose:=false;
end;
end;
//创建窗体
procedure TForm1.FormCreate(Sender: TObject);
begin
try
DM.query1.Open;
except
ShowMessage('数据库打开错误,请检查服务器!');
close;
end;
end;end.
解决方案 »
- Delphi XE2 生成的 exe 文件太大
- 如果将带alpha通道的PNG图片转换成BMP
- 再向林梅松请教一下(别人能够帮助同样感谢)
- 修改一窗口的color,有这样的api吗?
- 请教一个Delphi与foxpro数据库的删除问题,高手帮帮忙啊!!分不够再加
- 程序移植-----穷人的问题
- 我想买台电脑,以下是我的配置,大伙给点建议吧
- DBLookUpComboBox的死机问题,给分100
- 在TTable控件上连接DSN数据源,老弹出一个输入密码的窗口,怎么去掉?谢谢~!
- delphi xe6 又没有fastreport了呢?
- 这样简单的问题,我却找不到错在哪,高手帮忙看一下!
- 问一个简单的问题
我是刚学DELPHI的 请大家帮帮忙啊