delphi XE7 demo FireDAC_SQLite 报错

zqdl8 2015-01-21 09:39:22
官方网站下载的示例,编译完后直接安装到手机,点击右上角的添加图标,就直接提示这个。对话框为执行?把代码贴出来,那位大侠给琢磨一下呢?自己估摸着是InputQuery这个对话框在我的手机上不支持,手机android4.0的啊,换了一个也是同样的问题,茫然了。。。。。。


unit uMain;

interface

uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Dialogs, Data.FMTBcd,
System.Rtti, System.Bindings.Outputs, Fmx.Bind.Editors, Data.Bind.EngExt,
Fmx.Bind.DBEngExt, Data.Bind.Components, Data.Bind.DBScope, Data.DB,
FMX.StdCtrls, FMX.Layouts, FMX.ListBox, FireDAC.Stan.Intf, FireDAC.Stan.Option,
FireDAC.Stan.Param, FireDAC.Stan.Error, FireDAC.DatS, FireDAC.Phys.Intf, FireDAC.DApt.Intf,
FireDAC.Stan.Async, FireDAC.DApt, FireDAC.UI.Intf, FireDAC.Stan.Def, FireDAC.Stan.Pool,
FireDAC.Phys, FireDAC.Comp.Client, FireDAC.Comp.DataSet, FireDAC.Stan.ExprFuncs,
FireDAC.FMXUI.Wait, FireDAC.Comp.UI, FireDAC.Phys.SQLite,
FireDAC.Phys.SQLiteDef;

type
TFireDAC_SQLiteForm = class(TForm)
ToolBar1: TToolBar;
ListBox1: TListBox;
btnAdd: TButton;
BindingsList1: TBindingsList;
BindSourceDB1: TBindSourceDB;
LinkFillControlToField1: TLinkFillControlToField;
FDTableTask: TFDTable;
FireTaskList: TFDConnection;
FDQueryDelete: TFDQuery;
FDQueryInsert: TFDQuery;
FDPhysSQLiteDriverLink1: TFDPhysSQLiteDriverLink;
FDGUIxWaitCursor1: TFDGUIxWaitCursor;
Title: TLabel;
btnDelete: TButton;
procedure btnAddClick(Sender: TObject);
procedure TaskListBeforeConnect(Sender: TObject);
procedure TaskListAfterConnect(Sender: TObject);
procedure btnDeleteClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
procedure OnIdle(Sender: TObject; var FDone: Boolean);
{ Private declarations }
public
{ Public declarations }
end;

var
FireDAC_SQLiteForm: TFireDAC_SQLiteForm;

implementation

uses
IOUtils;

{$R *.fmx}

procedure TFireDAC_SQLiteForm.btnAddClick(Sender: TObject);
var
TaskName: String;
begin
try
if InputQuery('Enter New Task', 'Task', TaskName) and not (TaskName.Trim = '') then
begin
FDQueryInsert.ParamByName('TaskName').AsString := TaskName;
FDQueryInsert.ExecSQL();
FDTableTask.Refresh;
LinkFillControlToField1.BindList.FillList;
end;
except
on e: Exception do
begin
SHowMessage(e.Message);
end;
end;
end;

procedure TFireDAC_SQLiteForm.btnDeleteClick(Sender: TObject);
var
TaskName: String;
LIndex: Integer;
begin
TaskName := ListBox1.Selected.Text;
try
FDQueryDelete.ParamByName('TaskName').AsString := TaskName;
FDQueryDelete.ExecSQL();
FDTableTask.Refresh;
LinkFillControlToField1.BindList.FillList;
if (ListBox1.Selected = nil) and (ListBox1.Count > 0) then
// Select last item
ListBox1.ItemIndex := ListBox1.Count - 1;
except
on e: Exception do
begin
SHowMessage(e.Message);
end;
end;
end;

procedure TFireDAC_SQLiteForm.FormCreate(Sender: TObject);
begin
try
// For unidirectional dataset, don't refill automatically when dataset is activated
// because dataset is reactivated everytime use DataSet.First.
LinkFillControlToField1.AutoActivate := False;
LinkFillControlToField1.AutoFill := False;
Application.OnIdle := OnIdle;
FireTaskList.Connected := True;
FDTableTask.Active := True;
LinkFillControlToField1.BindList.FillList;
except
on e: Exception do
begin
SHowMessage(e.Message);
end;
end;
end;

procedure TFireDAC_SQLiteForm.OnIdle(Sender: TObject; var FDone: Boolean);
begin
btnDelete.Visible := ListBox1.Selected <> nil;
end;

procedure TFireDAC_SQLiteForm.TaskListAfterConnect(Sender: TObject);
begin
FireTaskList.ExecSQL ('CREATE TABLE IF NOT EXISTS Task (TaskName TEXT NOT NULL)');
end;

procedure TFireDAC_SQLiteForm.TaskListBeforeConnect(Sender: TObject);
begin
{$IF DEFINED(IOS) or DEFINED(ANDROID)}
FireTaskList.Params.Values['Database'] :=
TPath.GetDocumentsPath + PathDelim + 'tasks.s3db';
// was: GetHomePath + PathDelim +
// 'Documents' + PathDelim + 'tasks.s3db';
{$ENDIF}
end;

// better use:

end.




...全文
944 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
nippycn 2015-06-02
  • 打赏
  • 举报
回复
DEMO是XE7下的吗 不是版本问题??
踏雪无痕 2015-01-25
  • 打赏
  • 举报
回复
DEMO竟然会出这种问题。。。。。。。。。
lyhoo163 2015-01-24
  • 打赏
  • 举报
回复
等待新版本再支持吧!
frtrnr 2015-01-24
  • 打赏
  • 举报
回复
blocking对话框没有在本平台上实现 估计是用了windows的api,无法在安卓上使用

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧