当listview的viewstyle为vsReport时,能否读取和保存listview的设置?
解决方案 »
- 为何DataModule数据模件中不能放MSCOMM32.ocx ?
- 急求quick report362版,有的请与我联系或是发到我信箱里。
- SQL SERVER 2000里的数据类型(decimal/numeric) 相当于Delphi里的什么类型
- 从Tpanel组件继承做一个组件tLinkPanel,如果往这个组件里面增加一个lable控件?
- 定义了过程后怎么用
- 我不会了
- 使用table1.Insert方法,为什么插入的记录不是在当前位置
- 谁能提供这样一个grid控件给我的,100分!
- 請問哪里有RxLib for delphi6 和 delphi6 sp1
- windows一启动出现一个对话框! 说什么注册表改了!!!!怎么消除啊!!!
- 請問Twebbrowser要如何submit這段javascript的form呢?
- 数据表的表名问题
procedure TForm1.SaveData(Sender: TObject);
var
li_count,li_idx: integer;
MyFile:TFileStream;
ls_select: string;
function WriteString(TheString:pchar):integer;
begin
result := strlen(TheString);
MyFile.write(result,sizeof(integer));
if result > 0 then result := MyFile.write(TheString[0],strlen(TheString))
end;
begin
if not SaveDialog1.execute then exit;
MyFile := TFileStream.create(SaveDialog1.filename,fmCreate);
with MyFile do try
WriteString(pchar(DataHead));
with listview1.items do begin
li_count := count;
ls_select := stringofchar('0',li_count);
write(li_count,sizeof(li_count));
for li_idx := li_count - 1 downto 0 do with item[li_idx] do begin
if selected then ls_select[li_idx + 1] := '1';
WriteString(pchar(subitems.text));
//在这里保存该项的data包含的数据
WriteString(pchar(caption));
write(imageindex,sizeof(integer));
end;
WriteString(pchar(ls_select));
end;
finally
free;
end;
end;procedure TForm1.LoadData(TheFile:string);
var
li_count,li_idx,li_buff: integer;
MyFile:TFileStream;
ls_select: string;
function ReadString:string;
var li_len:integer;
begin
MyFile.Read(li_len,sizeof(integer));
if (li_len = 0) or (li_len > 10000) then result := '' else begin
result := stringofchar(#0,li_len);
MyFile.Read(result[1],li_len);
end;
end;
begin
MyFile := TFileStream.create(TheFile,fmOpenRead + fmShareDenyNone);
with MyFile do try
if ReadString <> DataHead then begin
showmessage('无效的数据文件格式');
exit;
end;
with listview1.items do begin
clear;
Read(li_count,sizeof(li_count));
for li_idx := 1 to li_count do with insert(0) do begin
subitems.text := ReadString;
//在这里读取并设置data属性
caption := ReadString;
Read(li_buff,sizeof(integer));
imageindex := li_buff;
end;
ls_select := ReadString;
for li_idx := 1 to li_count do
if ls_select[li_idx] = '1' then item[li_idx - 1].selected := true;
end;
finally
free;
end;
end;
var
FileName, Decollator: string;
i, j: Integer;
F: TextFile;
begin
if SaveDialog.Execute then
begin
FileName := SaveDialog.FileName;
if SaveDialog.FilterIndex = 1 then
begin
Decollator := #9;
if RightStr(FileName, 4) <> '.txt' then
FileName := FileName + '.txt';
end
else
begin
Decollator := ',';
if RightStr(FileName, 4) <> '.csv' then
FileName := FileName + '.csv';
end;
try
AssignFile(F, FileName);
ReWrite(F);
for i := 0 to WorkList.Columns.Count - 1 do
begin
if i = WorkList.Columns.Count - 1 then
Writeln(F, WorkList.Columns[i].Caption)
else
Write(F, WorkList.Columns[i].Caption + Decollator);
end;
for i := 0 to WorkList.Items.Count - 1 do
begin
if WorkList.Items[i].SubItems.Count > 0 then
Write(F, WorkList.Items[i].Caption + Decollator)
else
Writeln(F, WorkList.Items[i].Caption);
for j := 0 to WorkList.Columns.Count - 2 do
begin
if j = WorkList.Columns.Count - 2 then
Writeln(F, WorkList.Items[i].SubItems[j])
else
Write(F, WorkList.Items[i].SubItems[j] + Decollator);
end;
end;
finally
CloseFile(F);
end;
end;
end;