unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, ImgList, Buttons, xmldom, XMLIntf, msxmldom,
XMLDoc,activex, ExtCtrls,shellapi, pngimage, sGroupBox, sSpeedButton,
sMemo, sComboBox, sStatusBar, sListView, sSkinProvider, sSkinManager,
sLabel, acPNG;
type
TForm1 = class(TForm)
XMLDoc: TXMLDocument;
GroupBox1: TsGroupBox;
btn1: TSpeedButton;
btn2: TSpeedButton;
btn3: TSpeedButton;
btnSpeedButton4: TsSpeedButton;
btnSpeedButton5: TsSpeedButton;
Memo1: TsMemo;
cbb1: TsComboBox;
sListView1: TsListView;
lv: TsListView;
stat1: TsStatusBar;
sSkinManager1: TsSkinManager;
sSkinProvider1: TsSkinProvider;
LinkLabel1: TsWebLabel;
btn4: TsSpeedButton;
procedure btnSpeedButton5Click(Sender: TObject);
procedure btnSpeedButton4Click(Sender: TObject);
procedure lvChange(Sender: TObject; Item: TListItem; Change: TItemChange);
procedure LinkLabel1Click(Sender: TObject);
procedure sListView1Change(Sender: TObject; Item: TListItem;
Change: TItemChange);
procedure btn3Click(Sender: TObject);
procedure btn1Click(Sender: TObject);
procedure btn2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure btn4Click(Sender: TObject);
// procedure FormCreate(Sender: TObject);
private
{ Déclarations privées }
public
{ Déclarations publiques }
end;
var
Form1: TForm1;
TID : DWORD;
hThread : Hwnd;
implementation
{$R *.dfm}
procedure rss(lien:string);
var
Node: IXMLNode;
begin
CoInitialize(nil);
form1.stat1.Panels[0].Text:='Loading .....';
try
form1.btn2.Click;
form1.lv.Clear;
form1.XMLDoc.FileName := lien;
form1.XMLDoc.Active:=True;
Node := form1.XMLDoc.DocumentElement.ChildNodes.First.ChildNodes.FindNode('item') ;
while node <>nil do begin
with form1.LV.Items.Add do
begin
Caption := Node.ChildNodes['title'].Text;
SubItems.Add(Node.ChildNodes['link'].Text) ;
SubItems.Add(Node.ChildNodes['description'].Text);
SubItems.Add(Node.ChildNodes['pubDate'].Text) ;
SubItems.Add(Node.ChildNodes['category'].Text) ;
end;
Application.ProcessMessages;
form1.stat1.Panels[0].Text:='loading ..'+Node.ChildNodes['description'].Text+'..';
Sleep(10);
Node := Node.NextSibling;
end;
// form1.Memo1.Alignment:=taRightJustify;
form1.XMLDoc.Active:=False ;
// Form1.Refresh;
form1.btn3.Click;
form1.stat1.Panels[0].Text:='Done.';
// SuspendThread(hThread);
//CloseHandle(hThread);
except
on e:Exception do form1.stat1.Panels[0].Text:='Error : failed to get Data from Aljazeera . & '+e.Message;
end;
form1.btn1.Enabled:=True;
form1.btnSpeedButton4.Enabled:=True;
form1.btnSpeedButton5.Enabled:=True;
closehandle(0);
end;
procedure rssn;
begin
rss('http://www.france24.com/ar/monde/rss');
end;
procedure rssp;
begin
rss('http://www.aljazeera.net/AljazeeraRss/Rss.aspx?URL=RSS-Portal.xml');
end;
procedure rssf;
begin
rss('http://www.france24.com/ar/monde/rss');
end;
procedure TForm1.LinkLabel1Click(Sender: TObject);
begin
ShellExecute(Handle, 'open', PChar(LinkLabel1.Caption),nil,nil, SW_SHOWNORMAL) ;
end;
procedure TForm1.lvChange(Sender: TObject; Item: TListItem;
Change: TItemChange);
begin
Memo1.Clear;
try
Memo1.Lines.Add(lv.Items.Item[lv.Itemindex].SubItems.Strings[3]);
Memo1.Lines.Add(lv.Items.Item[lv.Itemindex].Caption) ;
Memo1.Lines.Add(lv.Items.Item[lv.Itemindex].SubItems.Strings[1]) ;
Memo1.Lines.Add(lv.Items.Item[lv.Itemindex].SubItems.Strings[2]) ;
LinkLabel1.Caption:=lv.Items.Item[lv.Itemindex].SubItems.Strings[0] ;
except
end;
end;
procedure TForm1.sListView1Change(Sender: TObject; Item: TListItem;
Change: TItemChange);
begin
Memo1.Clear;
try
Memo1.Lines.Add(sListView1.Items.Item[sListView1.Itemindex].SubItems.Strings[3]);
Memo1.Lines.Add(sListView1.Items.Item[sListView1.Itemindex].Caption) ;
Memo1.Lines.Add(sListView1.Items.Item[sListView1.Itemindex].SubItems.Strings[1]) ;
Memo1.Lines.Add(sListView1.Items.Item[sListView1.Itemindex].SubItems.Strings[2]) ;
LinkLabel1.Caption:=sListView1.Items.Item[sListView1.Itemindex].SubItems.Strings[0] ;
except
end;
end;
procedure TForm1.btn1Click(Sender: TObject);
var i:Integer;
begin
lv.Visible:=False;
sListView1.Visible:=True;
sListView1.Clear;
for i:=0 to lv.Items.Count-1 do
if lv.Items.Item[i].SubItems.Strings[3]=cbb1.Text then
begin
with sListView1.Items.Add do
begin
Caption := lv.Items.Item[i].Caption;
SubItems.Add(lv.Items.Item[i].SubItems.Strings[0]) ;
SubItems.Add(lv.Items.Item[i].SubItems.Strings[1]);
SubItems.Add(lv.Items.Item[i].SubItems.Strings[2]) ;
SubItems.Add(lv.Items.Item[i].SubItems.Strings[3]) ;
end;
end;
end;
procedure TForm1.btn2Click(Sender: TObject);
begin
lv.Visible:=True;
sListView1.Visible:=False;
end;
procedure TForm1.btn3Click(Sender: TObject);
var i:Integer;
SL: TStringList;
begin
SL := TStringList.Create;
SL.Sorted := True;
SL.Duplicates := dupIgnore;
for i:=0 to lv.Items.Count-1 do
SL.Add(lv.Items.Item[i].SubItems.Strings[3]);
cbb1.Items.Assign(SL);
cbb1.Items.Assign(SL);
SL.Free;
end;
procedure TForm1.btn4Click(Sender: TObject);
//http://www.france24.com/ar/monde/rss
var
TID : DWORD;
hThread : Hwnd;
begin
btnSpeedButton4.Enabled:=False;
btnSpeedButton5.Enabled:=False;
try
hThread := CreateThread(0,0,@rssf,0,0,TID);
//WaitForSingleObject(hThread, INFINITE);
finally
end;
end;
procedure TForm1.btnSpeedButton4Click(Sender: TObject);
var
TID : DWORD;
hThread : Hwnd;
begin
btnSpeedButton4.Enabled:=False;
btnSpeedButton5.Enabled:=False;
try
hThread := CreateThread(0,0,@rssn,0,0,TID);
//WaitForSingleObject(hThread, INFINITE);
finally
end;
end;
procedure TForm1.btnSpeedButton5Click(Sender: TObject);
var
TID : DWORD;
hThread : Hwnd;
begin
btnSpeedButton5.Enabled:=False;
btnSpeedButton4.Enabled:=False;
try
hThread := CreateThread(0,0,@rssn,0,0,TID);
//WaitForSingleObject(hThread, INFINITE);
finally
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Application.Title:=Caption
end;
end.