给你一个例程,自己去想一想,好吗?
procedure Tf_rs_bm.ListViewOrder(Fieldname:String);
var
p:^Integer;
ID:Integer;
ListItem:TListItem;
Node:TTreeNode;
Array_bmid:Array of string;
Array_bmidnumber:integer;
Light_all:Boolean;
i:integer;
SubNode:TTreeNode;
Subp:^integer;
Tem_level:integer;
begin
Listview2.items.Clear;
Light_all:=False;
Array_bmidnumber:=0;
Node:=TreeView1.Selected;
if Node=nil then Exit;
p:=Node.Data;
if p=Nil then Exit;
ID:=p^;
if id=0 then Light_all:=true
else begin
Array_bmidnumber:=1;
SetLength(Array_bmid,1);
Array_bmid[0]:=IntToStr(p^);
Tem_level:=Node.Level;
SubNode:=Node.GetNext;
While (SubNode<>nil) and (SubNode.level>Tem_level) do begin
Inc(Array_bmidnumber);
Subp:=SubNode.Data;
SetLength(Array_bmid,Array_bmidnumber);
Array_bmid[Array_bmidnumber-1]:=IntToStr(Subp^);
SubNode:=SubNode.GetNext;
end;
end;
with TQuery.Create(Nil) do
begin
DatabaseName:=DatabaseAlias;
SQL.Clear;
if Light_all then begin
SQL.Add('select id,ryxx_del,ryxx_ryjd,ryxx_xm,ryxx_xb,ryxx_ssbm,ryxx_csny,ryxx_gj,ryxx_jg,ryxx_zzmm,ryxx_hyzk,ryxx_whcd,ryxx_byxx,ryxx_sxzy,ryxx_jsjsp,ryxx_wysp,ryxx_jszc from rs_ryxx');
SQL.Add(' where ryxx_del='+IntToStr(FLAG_NOTDELETE));
end
else begin
if Array_bmidnumber<=0 then exit;
SQL.Add('select id,ryxx_del,ryxx_ryjd,ryxx_xm,ryxx_xb,ryxx_ssbm,ryxx_csny,ryxx_gj,ryxx_jg,ryxx_zzmm,ryxx_hyzk,ryxx_whcd,ryxx_byxx,ryxx_sxzy,ryxx_jsjsp,ryxx_wysp,ryxx_jszc from rs_ryxx');
SQL.Add(' where ryxx_del='+IntToStr(FLAG_NOTDELETE));
if Array_bmidnumber>0 then begin
Sql.Add(' and (ryxx_ssbm='+Array_bmid[0]);
if Array_bmidnumber>1 then begin
for i:=1 to Array_bmidnumber-1 do begin
Sql.Add(' or ryxx_ssbm='+Array_bmid[i]);
end;
end;
Sql.Add(')');
end;
end;
if LightDesc then sql.Add(' order by '+Fieldname+' desc')
else sql.Add(' order by '+Fieldname);
Open;
First;
ListView2.Items.Clear;
while not Eof do
begin
ListItem:=ListView2.Items.Add();
ListItem.Caption:=Trim(FieldByName('ryxx_xm').AsString);
New(p);
p^:=FieldByName('id').AsInteger;
ListItem.Data:=p;
if FieldByName('ryxx_xb').AsString='男' then
begin
ListItem.ImageIndex:=0;
ListItem.SubItems.Add('男');
end
else
begin
if FieldByName('ryxx_xb').AsString='女' then
begin
ListItem.ImageIndex:=1;
ListItem.SubItems.Add('女');
end
else
begin
ListItem.ImageIndex:=0;
ListItem.SubItems.Add('');
end;
end;
case FieldByName('ryxx_ryjd').AsInteger of
0: ListItem.SubItems.Add('应聘人员');
1: ListItem.SubItems.Add('试用人员');
2: ListItem.SubItems.Add('正式员工');
3: ListItem.SubItems.Add('退休员工');
4: ListItem.SubItems.Add('辞退员工');
5: ListItem.SubItems.Add('离休员工');
else ListItem.SubItems.Add('');
end;
Listitem.subitems.add(Fieldbyname('ryxx_csny').Asstring);
ListItem.subitems.Add(fieldbyname('ryxx_gj').Asstring);
ListItem.Subitems.Add(fieldbyname('ryxx_jg').Asstring);
ListItem.Subitems.Add(fieldbyname('ryxx_zzmm').Asstring);
ListItem.Subitems.Add(fieldbyname('ryxx_hyzk').Asstring);
ListItem.Subitems.Add(fieldbyname('ryxx_whcd').Asstring);
Listitem.Subitems.Add(fieldbyname('ryxx_byxx').Asstring);
ListItem.Subitems.Add(fieldbyname('ryxx_sxzy').Asstring);
ListItem.Subitems.Add(fieldbyname('ryxx_jsjsp').Asstring);
ListItem.Subitems.Add(fieldbyname('ryxx_wysp').Asstring);
ListItem.Subitems.Add(fieldbyname('ryxx_jszc').Asstring);
Next;
end;
Free;
end;
end;
procedure Tf_rs_bm.ListViewOrder(Fieldname:String);
var
p:^Integer;
ID:Integer;
ListItem:TListItem;
Node:TTreeNode;
Array_bmid:Array of string;
Array_bmidnumber:integer;
Light_all:Boolean;
i:integer;
SubNode:TTreeNode;
Subp:^integer;
Tem_level:integer;
begin
Listview2.items.Clear;
Light_all:=False;
Array_bmidnumber:=0;
Node:=TreeView1.Selected;
if Node=nil then Exit;
p:=Node.Data;
if p=Nil then Exit;
ID:=p^;
if id=0 then Light_all:=true
else begin
Array_bmidnumber:=1;
SetLength(Array_bmid,1);
Array_bmid[0]:=IntToStr(p^);
Tem_level:=Node.Level;
SubNode:=Node.GetNext;
While (SubNode<>nil) and (SubNode.level>Tem_level) do begin
Inc(Array_bmidnumber);
Subp:=SubNode.Data;
SetLength(Array_bmid,Array_bmidnumber);
Array_bmid[Array_bmidnumber-1]:=IntToStr(Subp^);
SubNode:=SubNode.GetNext;
end;
end;
with TQuery.Create(Nil) do
begin
DatabaseName:=DatabaseAlias;
SQL.Clear;
if Light_all then begin
SQL.Add('select id,ryxx_del,ryxx_ryjd,ryxx_xm,ryxx_xb,ryxx_ssbm,ryxx_csny,ryxx_gj,ryxx_jg,ryxx_zzmm,ryxx_hyzk,ryxx_whcd,ryxx_byxx,ryxx_sxzy,ryxx_jsjsp,ryxx_wysp,ryxx_jszc from rs_ryxx');
SQL.Add(' where ryxx_del='+IntToStr(FLAG_NOTDELETE));
end
else begin
if Array_bmidnumber<=0 then exit;
SQL.Add('select id,ryxx_del,ryxx_ryjd,ryxx_xm,ryxx_xb,ryxx_ssbm,ryxx_csny,ryxx_gj,ryxx_jg,ryxx_zzmm,ryxx_hyzk,ryxx_whcd,ryxx_byxx,ryxx_sxzy,ryxx_jsjsp,ryxx_wysp,ryxx_jszc from rs_ryxx');
SQL.Add(' where ryxx_del='+IntToStr(FLAG_NOTDELETE));
if Array_bmidnumber>0 then begin
Sql.Add(' and (ryxx_ssbm='+Array_bmid[0]);
if Array_bmidnumber>1 then begin
for i:=1 to Array_bmidnumber-1 do begin
Sql.Add(' or ryxx_ssbm='+Array_bmid[i]);
end;
end;
Sql.Add(')');
end;
end;
if LightDesc then sql.Add(' order by '+Fieldname+' desc')
else sql.Add(' order by '+Fieldname);
Open;
First;
ListView2.Items.Clear;
while not Eof do
begin
ListItem:=ListView2.Items.Add();
ListItem.Caption:=Trim(FieldByName('ryxx_xm').AsString);
New(p);
p^:=FieldByName('id').AsInteger;
ListItem.Data:=p;
if FieldByName('ryxx_xb').AsString='男' then
begin
ListItem.ImageIndex:=0;
ListItem.SubItems.Add('男');
end
else
begin
if FieldByName('ryxx_xb').AsString='女' then
begin
ListItem.ImageIndex:=1;
ListItem.SubItems.Add('女');
end
else
begin
ListItem.ImageIndex:=0;
ListItem.SubItems.Add('');
end;
end;
case FieldByName('ryxx_ryjd').AsInteger of
0: ListItem.SubItems.Add('应聘人员');
1: ListItem.SubItems.Add('试用人员');
2: ListItem.SubItems.Add('正式员工');
3: ListItem.SubItems.Add('退休员工');
4: ListItem.SubItems.Add('辞退员工');
5: ListItem.SubItems.Add('离休员工');
else ListItem.SubItems.Add('');
end;
Listitem.subitems.add(Fieldbyname('ryxx_csny').Asstring);
ListItem.subitems.Add(fieldbyname('ryxx_gj').Asstring);
ListItem.Subitems.Add(fieldbyname('ryxx_jg').Asstring);
ListItem.Subitems.Add(fieldbyname('ryxx_zzmm').Asstring);
ListItem.Subitems.Add(fieldbyname('ryxx_hyzk').Asstring);
ListItem.Subitems.Add(fieldbyname('ryxx_whcd').Asstring);
Listitem.Subitems.Add(fieldbyname('ryxx_byxx').Asstring);
ListItem.Subitems.Add(fieldbyname('ryxx_sxzy').Asstring);
ListItem.Subitems.Add(fieldbyname('ryxx_jsjsp').Asstring);
ListItem.Subitems.Add(fieldbyname('ryxx_wysp').Asstring);
ListItem.Subitems.Add(fieldbyname('ryxx_jszc').Asstring);
Next;
end;
Free;
end;
end;
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货