像网页一样分框操作,我实现办法是
用TSplitter控件
在FORM上放两个listview,一个的ALIGN设为LEFT,另一个设为CLIENT,同时把SPLITTER放在它们之间就可以实现效果
左边框我读取test.txt文档局部内容,我要怎么样操作才能在右边的框和左边的链接呢?
比如
test.txt 内容为
2009-2-1 9:56:40 192.168.1.12 A www.sina.com
2009-2-1 9:56:41 192.168.1.12 A www.sina.com
2009-2-1 9:56:45 192.168.1.12 A www.delphisearch.cn
2009-2-1 9:56:46 192.168.1.12 A i3.sinaimg.cn
左边框为
www.sina.com
www.delphisearch.cn
i3.sinaimg.cn
当我点击左边框的www.sina.com项
右边框会显示
2009-2-1 9:56:40 192.168.1.12 A www.sina.com
2009-2-1 9:56:41 192.168.1.12 A www.sina.com
请教各位大大,我实在太菜啦,要怎么才能实现?麻烦帮指点下,不甚感激.不知道我想的分框方式对吗?
用TSplitter控件
在FORM上放两个listview,一个的ALIGN设为LEFT,另一个设为CLIENT,同时把SPLITTER放在它们之间就可以实现效果
左边框我读取test.txt文档局部内容,我要怎么样操作才能在右边的框和左边的链接呢?
比如
test.txt 内容为
2009-2-1 9:56:40 192.168.1.12 A www.sina.com
2009-2-1 9:56:41 192.168.1.12 A www.sina.com
2009-2-1 9:56:45 192.168.1.12 A www.delphisearch.cn
2009-2-1 9:56:46 192.168.1.12 A i3.sinaimg.cn
左边框为
www.sina.com
www.delphisearch.cn
i3.sinaimg.cn
当我点击左边框的www.sina.com项
右边框会显示
2009-2-1 9:56:40 192.168.1.12 A www.sina.com
2009-2-1 9:56:41 192.168.1.12 A www.sina.com
请教各位大大,我实在太菜啦,要怎么才能实现?麻烦帮指点下,不甚感激.不知道我想的分框方式对吗?
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls;
type
TRecRecord = record
Date :String;
IP : String;
style:String;
site : String;
end;type
TForm1 = class(TForm)
ListView1: TListView;
Button1: TButton;
ListView2: TListView;
procedure Button1Click(Sender: TObject);
procedure ListView1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;
vRec : array of TRecRecord;
implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var
str, TargetStr : TStringlist;
list : TListItem;
i ,J,K : Integer;
tmpStr : String;begin
str := TStringList.Create;
TargetStr := TstringList.Create;
try
Str.LoadFromFile('C:\test.txt');
setlength(vrec,str.Count );
for i := 0 to str.Count -1 do
begin
TargetStr.Append(
copy(str.Strings[i],
LastDelimiter(' ',trim(Str.Strings[i])),length(Str.Strings[i])));
vRec[i].Date := trim(copy(str.Strings[i],0,pos(' ',str.Strings[i]))); tmpstr := trim(copy(trim(str.Strings[i]),pos(' ',trim(str.Strings[i])),length(str.Strings[i])));
vRec[i].IP := trim(copy(tmpstr,0,pos(' ',tmpstr)));
tmpstr := trim(copy(trim(tmpstr),pos(' ',trim(tmpstr)),length(tmpstr)));
vrec[i].style := trim(copy(tmpstr,0,pos(' ',tmpstr))); tmpstr := trim(copy(trim(tmpstr),pos(' ',trim(tmpstr)),length(tmpstr)));
vrec[i].site := tmpstr;
end;
str.Clear; TargetStr.Sorted := True;
TargetStr.Sort;
for I := 0 to TargetStr.Count -1 do
begin
K := 1;
for J := 0 to TargetStr.Count -1 do
begin
if i = J then continue;
if Trim(TargetStr.Strings[i]) = Trim(TargetStr.Strings[j]) then inc(k);
end; if str.IndexOf(TargetStr[i] +' '+inttostr(k)) = -1 then
begin
str.Add(TargetStr[i] +' '+inttostr(k));
list := ListView1.Items.Add;
list.Caption := TargetStr[i];
list.SubItems.Text := Inttostr(k);
end; end;
finally
FreeAndNil(Str);
FreeAndNil(TargetStr);
end;
end;procedure TForm1.ListView1Click(Sender: TObject);
var
i : integer;
vList : TListItem;
begin
if ListView1.Selected <> nil then
begin
ListView2.Clear;
for I := 0 to length(vRec) -1 do
begin
if trim(ListView1.Selected.Caption) = Trim(vrec[i].site) then
begin
vList := ListView2.Items.Add;
vList.Caption := vrec[i].Date;
vList.SubItems.Add(vrec[i].IP);
vList.SubItems.Add(Vrec[i].style);
vList.SubItems.Add(vrec[i].site);
end;
end;
end;
end;end.