function TForm1.Get2To10(s: string): double;
var //将二进制数转换为十进制;(该单元用不到)
i,len:integer;
begin
result:=0;
len:=length(s);
for i:=1 to len do
begin
if pos(copy(s,i,1),'10')=0 then
begin
result:=0;
break;
end;
result:=result+strtoint(copy(s,i,1))*(power(2,(len-i)));
end;
end;
procedure TForm1.Get10To2(num: integer;var value:string);
begin // 将十进制数转换为二进制;
if (num<2) then
value:=inttostr(num)+value
else
begin
value:=inttostr(num-2*(num div 2))+value;
Get10To2((num div 2),value);
end;
end;
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState); //保存所按键对应键盘字符、ASCII码、二进制码;
var
m:tlistitem;
s:string;
begin
s:='';
Get10To2(key,s);
with listview1 do
begin
m:=Items.Add;
m.Caption:= char(key );
m.SubItems.Add(inttostr(key));
m.SubItems.Add(s);
end;
end;
procedure TForm1.Button5Click(Sender: TObject);// 将LISTVIEW1内容保存至文本文件;
var
myfile:textfile;
s1,s2,s3:string;
t:integer;
begin
assignfile(myfile,'c:\ax.txt');
rewrite(myfile);
try
for t:=0 to listview1.Items.Count-1 do//注意,每一项CAPTION前加#,子标题加@;
begin
s1:='#'+listview1.Items[t].Caption;
s2:='@'+listview1.Items[t].SubItems.Strings[0];
s3:='@'+listview1.Items[t].SubItems.Strings[1];
writeln(myfile,s1);writeln(myfile,s2);writeln(myfile,s3);
end;
finally
closefile(myfile);
end;
end;
procedure TForm1.Button6Click(Sender: TObject);
var //从文本文件将数据加载到LISTVIEW1
myfile:textfile;
m:tlistitem;
s:string;
h:integer;
begin
listview1.Clear;
assignfile(myfile,'c:\ax.txt');
reset(myfile);
h:=0; //保存图标索引;
try
while not eof(myfile) do
begin
readln(myfile,s);
with listview1 do
begin
if copy(s,1,1)='#' then
begin
m:=Items.add;
m.ImageIndex:=h;
m.caption:=copy(s,2,length(s)-1);
end
else
begin
m.SubItems.Add(copy(s,2,length(s)-1));
//最后一项总是加载不了,大家看看怎么回事?;
end;
inc(h);
end;
end;
finally
closefile(myfile);
if h<>0 then m.Free;
end;
end;
procedure TForm1.ListView1ColumnClick(Sender: TObject;
Column: TListColumn); //排序LISTVIEW(列表或详细资料)
begin
isascsort:=not isascsort;//判断排序方式,每次按下总是反向排序;
columntosort:=column.Index;
(sender as tcustomlistview).AlphaSort;
end;
procedure TForm1.ListView1Compare(Sender: TObject; Item1, Item2: TListItem;
Data: Integer; var Compare: Integer);
var //自定义排序号方式,与资源管理器文件列表类似;
xx:integer;
begin
if columntosort=0 then
if isascsort then
compare:=comparetext(item1.Caption,item2.Caption)
else
compare:=comparetext(item2.Caption,item1.Caption)
else
begin
xx:=columntosort-1;
if isascsort then
compare:=comparetext(item1.SubItems[xx],item2.SubItems[xx])
else
compare:=comparetext(item2.SubItems[xx],item1.SubItems[xx]);
end;
end;
procedure TForm1.ListView1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);//当选中一项按DELETE键发生;
begin
if key=46 then
if messagedlg('sure delete item?',mtConfirmation,[mbYes, mbNo],0)=mrYes then
listview1.Selected.Delete;
end;
procedure TForm1.delete1Click(Sender: TObject);//删除选中项
begin
if listview1.Selected<>nil then
if messagedlg('sure delete item?',mtConfirmation,[mbYes, mbNo],0)=mrYes then
listview1.Selected.Delete;
end;
procedure TForm1.edit2Click(Sender: TObject);//编辑选中项CAPTION
begin
if listview1.Selected<>nil then
listview1.Selected.EditCaption;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
listview1.ViewStyle:=vsicon;//大标题
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
listview1.ViewStyle:=vssmallicon;//小标题;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
listview1.ViewStyle:=vslist;//列表;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
listview1.ViewStyle:=vsreport;//详细资料;
end;
procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
if (item.Index mod 2)>0 then //以不同颜色显示不同项;
listview1.Canvas.Brush.Color:=clskyblue
else
listview1.Canvas.Brush.Color:=clwhite;
end;
procedure TForm1.ListView1SelectItem(Sender: TObject; Item: TListItem;
Selected: Boolean);
begin
listview1.RowSelect:=true;//选中一标题可选中整行(详细资料);
end;
修正:
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key=37 then showmessage('left');
if key=38 then showmessage('right');
if key=39 then showmessage('up');
if key=40 then showmessage('down');
end;
procedure TForm1.Edit1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if button=mbLeft then showmessage('你按下了鼠标左键');
if button=mbright then showmessage('你按下了鼠标右键');
if button=mbmiddle then showmessage('你按下了鼠标中键');
end;
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key=37 then showmessage('left');
if key=38 then showmessage('right');
if key=37 then showmessage('up');
if key=37 then showmessage('down');
end;