procedure ItemAdd; {菜单的动态添加___自定义的过程}
var
aItem: TMenuItem;
i: Integer;
begin
with frmMain.ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('select c_Name from Account');
ExecSql;
Open;
end;
for i:=1 to frmMain.ADOQuery1.RecordCount do
begin
aItem:=TMenuItem.Create(nil);
aItem.Caption:=frmMain.ADOQuery1.fieldbyname('c_Name').AsString;
{aItem.OnClick:=MenuClick;}
frmMain.MainMenu1.Items.Items[2].Items[0].Add(aItem);
frmMain.ADOQuery1.Next;
end;
end;现在想编写 OnClick 事件,能根据菜单的Caption值,在DBGrid中列出相关的数据.
比如:
某菜单的Caption 是"我的现金",点击之后,在 DBGrid 中列出表 "Account" 的字段 "c_Name" 是" 我的现金" 的记录
var
aItem: TMenuItem;
i: Integer;
begin
with frmMain.ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('select c_Name from Account');
ExecSql;
Open;
end;
for i:=1 to frmMain.ADOQuery1.RecordCount do
begin
aItem:=TMenuItem.Create(nil);
aItem.Caption:=frmMain.ADOQuery1.fieldbyname('c_Name').AsString;
{aItem.OnClick:=MenuClick;}
frmMain.MainMenu1.Items.Items[2].Items[0].Add(aItem);
frmMain.ADOQuery1.Next;
end;
end;现在想编写 OnClick 事件,能根据菜单的Caption值,在DBGrid中列出相关的数据.
比如:
某菜单的Caption 是"我的现金",点击之后,在 DBGrid 中列出表 "Account" 的字段 "c_Name" 是" 我的现金" 的记录
解决方案 »
- delphi:TAstaClientDataSet有RecNo查找记录方法吗?
- Delphi未来发展的Q&A(borland重要趋势消息)
- 请教 ADO连接ORACLE数据库时出现ORA-12456 PERMISSION DENIED的错误。
- 截取字符串前三位??在线急
- 一个女孩子和我认识一年,她说会跟我一生,她在浙江,我厦门,我叫她来,她也同意了。可她说来了也要我和我分开住。我和她bye了。我的做
- 要怎样得到图片的‘创建时间’和‘最后被修改的时间’呢???????
- 有没有将代码转为流程图的工具,我用过Sourcecode2Flowchart不太好
- 哪儿有Dehphi7的第三方控件下载?
- 百度搜索的问题,求救高手。
- 请教:如何屏蔽系统热键 ?!
- .dll如何注册?
- 一个Query问题---急,请高手们帮我see在什么地方出错!!!------在线等候your help!
begin
ShowMessage((Sender as TMenuItem).Caption);
end;从你的MenuItem的Caption取得例如"我的现金" 然后再对其进行数据库的查询过滤
var
SelStr: string; // MenuItem 的 Caption 能否直接 附值给 SelStr ?
...
Sql.Add('Select * from Account where c_Name = ' + SelStr);
...
SelStr := StringReplace(SelStr, '&', '', [rfReplaceAll]); //替换掉Caption中的&符号,默认是有一个&符号表示下划线的热键的,数据库查询的时候不需要它,替换掉
...
Sql.Add('Select * from Account where c_Name = ' + SelStr);
...
不过
Sql.Add('Select * from Account where c_Name = ' + SelStr); 有问题
上述语句在SQl 2000中 即为:Select * from Account where c_Name = 我的现金;这是错的.
SQL 语句中 对 string 的值要用 单引号,这个怎么解决?
上述语句在SQl 2000中 即为:Select * from Account where c_Name = 我的现金;这是错的.
SQL 语句中 对 string 的值要用 单引号,这个怎么解决?
--------------------------------------
可以
Sql.Add('Select * from Account where c_Name = ' + '''' + SelStr + '''');
也可以
Sql.Add('Select * from Account where c_Name = :aPara');
Parameters.ParamByName('aPara').Value := SelStr;
是不是 SelStr 的值有问题 ?
SelStr := StringReplace(SelStr, '&', '', [rfReplaceAll]); //替换掉Caption中的&符
第一个SelStr 的值: '张三的现金(Y)'
第二个SelStr 的值: '张三的现金(Y)'
没有变化
function Del(const S: string): string;
var
ilPos, irPos: Integer;
begin
Result := StringReplace(S, '&', '', [rfReplaceAll]); //如果全部是中文的话,&符号在()里面,如果是英文的话,可能没有()
ilPos := Pos('(', Result);
irPos := Pos(')', Result);
System.Delete(Result, ilPos, irPos - ilPos + 1);
end;SelStr := (Sender as TMenuItem).Caption;
SelStr := Del(SelStr);
I: Integer;
S: string;
C: char;
begin
S := '12345';
for I := 1 to Length(S) do
begin
C := S[I]; //读取第I个字符到字符C中
end;
end;