三层中,把应用层中的ListView中的数据传到客户端的ListView上,用什么方式,定义一个方法怎么表达出来(20分)

  • 主题发起人 主题发起人 xbbtzhao
  • 开始时间 开始时间
X

xbbtzhao

Unregistered / Unconfirmed
GUEST, unregistred user!
三层中,把应用层中的ListView中的数据传到客户端的ListView上,用什么方式,定义一个方法怎么表达出来?
 
自己把listView的数据取出来,传到客户端不就行了,客户端根据数据再设置数据就行了嘛。跟取表数据二维表格。一样。
 
楼上的朋友,道理我都懂点,就是实际操作不知怎样写
 
建一個過程,用VarArrayCreate創建個二維數組,把ListView內容保存進去,再返回變量.
麻煩了點.
 
楼上的朋友能不能写下详细的代码:怎么把ListView写入數組,又怎样把數組写给ListView
 
--大概和下面差不多,你自己修改修改,不過這樣好像比較麻煩
private
v:Variant;
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
implementation
{$R *.dfm}
//保存
procedure TForm1.Button1Click(Sender: TObject);
var
MaxR:Integer;
MaxC:Integer;
r:integer;
c:integer;
begin
MaxR:=ListView1.Items.Count;
MaxC:=ListView1.Columns.Count;
v:=vararraycreate([0,MaxR,0,MaxC-1],varVariant);
//保存標題
for c:=0 to ListView1.Columns.Count-1do
begin
v[0,c]:=ListView1.Columns.Items[c].Caption;
end;
//保存數據
for r:=0 to ListView1.Items.Count-1do
begin
v[r+1,0]:=ListView1.Items[r].Caption;
for c:=0 to ListView1.Items[r].SubItems.count-1do
begin
v[r+1,c+1]:=ListView1.Items[r].SubItems.Strings[c];
end;
end;
end;

//恢復
procedure TForm1.Button2Click(Sender: TObject);
var
MaxR:Integer;
MaxC:Integer;
r:integer;
c:integer;
s:string;
begin
if not VarIsArray(v) then
Exit;
//恢復標題
r:=VarArrayLowBound(v,1);
for c:=VarArrayLowBound(v,2) to VarArrayHighBound(v,2)do
with ListView2.Columns.Adddo
Caption:=v[r,c];
//恢復數據
for r:=VarArrayLowBound(v,1)+1 to VarArrayHighBound(v,1)do
begin
with ListView2.Items.Adddo
begin
caption:=v[r,VarArrayLowBound(v,2)];
for c:=VarArrayLowBound(v,2)+1 to VarArrayHighBound(v,2)do
SubItems.Add(v[r,c]);
end;
end;
end;
 
三层这样写是比较麻烦的,工作量很大,如果用ClientDataSet组件就比较好一点,但要对数据库,不知有无更好的方法
 
还有一个问题:我在应用层定义一个properyt
function TDBMLINK.Get_LinkUser: OleVariant;//不知选什么类型才能返回ListItems类型
begin
Result:=AppSer.ListView.Items //我要返回的是TListItems类型 ,
end;
提示:Incompatible types: 'OleVariant' and 'TListItems'
 
问题已解,
 
接受答案了.
 
后退
顶部