ListView编辑数据的校验问题 |
尚未結案
|
Anonimity
一般會員 發表:8 回覆:9 積分:3 註冊:2004-01-28 發送簡訊給我 |
大家好。小弟才疏学浅,又有问题要请教大家。
小弟将数据库的内容导出后,在ListView中进行编辑,修改或增添其内容。对于Item的Caption有一个要求,就是修改后或新添加的内容不能与原有内容重复或为空,经检查合要求后再输入数据库。就如同Windows中的“资源管理器”中修改或新建文件夹,文件夹的命名不能为空或与原有文件名相同一样。
现在小弟的问题是:在ListView中修改或新增时,如何使光标始终停在Caption的编辑窗口中,在Caption内容符合要求之前不能进行其它操作?实现如同“资源管理器”中新建文件夹的功能。
这个问题困扰小弟已久,请指点解决方法。谢谢。 不断学习
------
不断学习 |
Chance36
版主 發表:31 回覆:1033 積分:792 註冊:2002-12-31 發送簡訊給我 |
|
Anonimity
一般會員 發表:8 回覆:9 積分:3 註冊:2004-01-28 發送簡訊給我 |
谢谢Chance36,因这几天工作繁忙,没来得及回复,请见谅。
这方法我也曾试过,程序如下:
procedure TForm1.ListView1Edited(Sender: TObject; Item: TListItem;
var S: String);
begin
在此檢查程序
.....
If (S 重复或为空 ) Then Begin
ShowMessage('The Item ' S ' Already in this Project!');
S := item.Caption; // S即為輸入的值
Item.EditCaption; //再進入編輯狀態
End;
end;
showmessage后,Listview已经失去焦点了,得不到想要的效果。
后找到一个关于Treeview的相近例子,修改为Listview后如愿以偿。只是找得好辛苦......
现将该例子上传,希望能对遇到相同问题的朋友有所提示,谢谢各位朋友的关心。
//定义用户消息
const
WM_EditItem = WM_User 100; //窗体中接受消息
private
{ Private declarations }
procedure WMEditItem(var Message: TMessage); message WM_EditItem; //最后......
procedure TForm1.TreeView1Edited(Sender: TObject; Node: TTreeNode;
var S: String);
var
i:Integer;
begin
with TreeView1 do
for i:=0 to Items.Count-1 do
begin
if (Items[i].Text=S) and (Items[i]<>Node) then
begin
ShowMessage('The Item ' S ' Already in this Project!');
S := Node.Text;
PostMessage(Form1.Handle, WM_EditItem, Integer(Node), 0);
Break;
end
end;
end; procedure TForm1.WMEditItem(var Message: TMessage);
begin
with TTreeNode(Message.WParam) do
EditText;
end; 不断学习
------
不断学习 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |