Listview'e image aktarmak !...

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
spectermun
Üye
Mesajlar: 36
Kayıt: 06 Ara 2014 07:17

Listview'e image aktarmak !...

Mesaj gönderen spectermun » 07 Mar 2015 01:04

Herkese iyi geceler arkadaşlar bir Listview'in içerisine ftp'den resimler çağırmak istiyorum ama beceremedim daha önce mrmarman arkadaşımızın bir tv örneğini görmüştüm ama burada mı başka yer demi hatırlamıyorum. Bende bir ufak tv yapmak istedim fakat kanal logolarını listview'e nasıl çağıracağımı başaramadım. Yardımcı olursanız çok sevinirim arkadaşlar.

Lord_Ares
Üye
Mesajlar: 1058
Kayıt: 15 Eki 2006 03:33
Konum: Çorlu

Re: Listview'e image aktarmak !...

Mesaj gönderen Lord_Ares » 07 Mar 2015 02:06

Mrmarman hocamın bu forumdaki tüm örnek uygulama ve kodlarını toplayıp kod bankası oluşturuyorum fakat öyle bir örneğine şuan rastlamadım. Gerçi daha yarısına gelemedim belki ilerki gönderilerinde çıkarsa paylaşırım. Fikriniz güzelmiş çalışmanızda başarılar kolay gelsin

Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4731
Kayıt: 09 Ara 2003 08:13
Konum: Ankara
İletişim:

Re: Listview'e image aktarmak !...

Mesaj gönderen mrmarman » 07 Mar 2015 10:25

RSS örneğinde benzeri bir işlem yapmıştım ama daha büyük resimler için bir çalışma daha ekleyeyim dedim.
Basit bir çalışma yolluyorum.

Ne yaptık ?
Google'da arayıp bulduğum bir canlıtv sitesindeki
- kanal logolarını,
- kanal isimlerini,
- gösteri linklerini

...PARSE ederek bir ListView içerisinde sunumunu yapıyor.

Resim
Resim

Etüd proje ektedir.

Kaynak kodlarından işlemleri takip edebilirsiniz.

Kod: Tümünü seç

USES IdHTTP, JPEG, ShellApi;

procedure TForm1.BitBtn1Click(Sender: TObject);
Const
  strUrl            = 'http://www.canlitv.tv/';
  strUrlTumKanallar = 'http://www.canlitv.tv/butun/televizyonlar';
  strImgSrc         = '<span class="wrp"><img src="/';
Var
  strHTML,
  strLogo,
  strKanal,
  strKanalURL,
  strAra      : String;

  iUz : Integer;

  Bitmap      : TBitmap;
  JPG         : TJPEGImage;
  cTrans     : TColor;

  MS          : TMemoryStream;
begin
  ImageList1.Clear;

  ListView1.RowSelect := True;
  case ListView1.ViewStyle of
    vsReport : ListView1.StateImages := ImageList1;
    else       ListView1.LargeImages := ImageList1;
  end;

  With TIdHttp.Create(nil) do
  begin
    strHTML := Get( strUrlTumKanallar );
    Free;
  end;

  iUz := Length(strHTML);
  With ProgressBar1 do
  begin
    Min       := 0;
    Max       := iUz;
    Position  := 0;
    Visible   := True;
  end;

  ListView1.Items.BeginUpdate;
  ListView1.Clear;
  // <span class="wrp"><img src="/resimler/kucuk/Atv.jpg" alt="Canlı ATV"></span>
  while Pos(strImgSrc, strHTML) > 0  do
  begin
    ProgressBar1.Position := iUz - Length(strHTML);

    strAra := strImgSrc;
    system.Delete( strHTML, 1, Pos(strAra, strHTML) + Length( strAra )-1 );

    strLogo     := Copy( strHtml, 1, Pos('"', strHtml)-1 );
    strKanalUrl := ChangeFileExt( StringReplace( strLogo, 'resimler/kucuk/', '', [] ), '.html' );

    strAra := 'alt="Canl';
    system.Delete( strHTML, 1, Pos(strAra, strHTML) + Length( strAra )-1 );

    strAra := ' ';
    system.Delete( strHTML, 1, Pos(strAra, strHTML) + Length( strAra )-1 );

    strKanal := UTF8Decode( Copy( strHtml, 1, Pos('"', strHtml)-1 ) );

    MS  := TMemoryStream.Create;
    JPG := TJPEGImage.Create;
    With TIdHttp.Create(nil) do
    begin
      Get( strUrl + strLogo, MS );
      Free;
    end;
    MS.Seek(0,soFromBeginning);
      JPG.LoadFromStream(MS);
    MS.Free;

    Bitmap := TBitmap.Create;
      Bitmap.Assign( JPG );
      ImageList1.Width  := Bitmap.Width;
      ImageList1.Height := Bitmap.Height;
      cTrans := clNone;
      Imagelist1.Addmasked(Bitmap, cTrans);
    Bitmap.Free;
    JPG.Free;

    With ListView1.Items.Add do
    begin
      ImageIndex := ImageList1.Count-1;
      StateIndex := ImageList1.Count-1;
      Caption    := strKanal;
      SubItems.Add( strKanalURL );
    end;
  end;
  ProgressBar1.Position := iUz;
  ListView1.Columns[0].Width := -1;
  ListView1.Items.EndUpdate;
  ProgressBar1.Visible  := False;
end;

procedure TForm1.ListView1DblClick(Sender: TObject);
Const
  strUrl            = 'http://www.canlitv.tv/';
begin
  if TListView(Sender).Selected <> Nil
    then ShellExecute(Application.Handle, 'open', 'explorer.exe', PChar( strUrl + TListView(Sender).Selected.SubItems[0] ), nil, SW_NORMAL);
end;
Dosya ekleri
ListView_TVKanallari_ImageList_Dinamik.rar
ListView'e internetten dinamik olarak resim indirip ekleme
(11.15 KiB) 142 kere indirildi
Resim Resim

spectermun
Üye
Mesajlar: 36
Kayıt: 06 Ara 2014 07:17

Re: Listview'e image aktarmak !...

Mesaj gönderen spectermun » 07 Mar 2015 12:49

mrmarman kardeşim çok saolasın yapmak istediğimde buydu fakat ben siteyi parseleyerek değilde direk xml'den bütün işlemi gerçekleştirmek istiyorum kuracağım sistemde xml üzerine olacak senin kodlarda biraz oynama yaparak xml'e bağlı olarak çalıştırdım fakat bir sorun var !. Düzenlediğim kod bu şekil de

Kod: Tümünü seç

unit Unit1;

interface

uses
  Shellapi,Jpeg,Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, xmldom, XMLIntf, StdCtrls, ComCtrls, IdBaseComponent,
  IdComponent, IdTCPConnection, IdTCPClient, IdHTTP, msxmldom, XMLDoc,
  ImgList;

type
  TForm1 = class(TForm)
    XMLDocument1: TXMLDocument;
    IdHTTP1: TIdHTTP;
    ListView1: TListView;
    Button1: TButton;
    ImageList1: TImageList;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
Form1: TForm1;
StartItemNode, ANode : IXMLNode;
sTitle, sLogo, sLink ,sTur,sUzanti,sWidth,sHeight,sYayin,sProgram: widestring;
iUz      : Integer;
Bitmap   : TBitmap;
JPG      : TJPEGImage;
cTrans   : TColor;
MS       : TMemoryStream;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
ImageList1.Clear;

ListView1.RowSelect := True;
case ListView1.ViewStyle of
vsReport : ListView1.StateImages := ImageList1;
else       ListView1.LargeImages := ImageList1;
end;

XMLDocument1.Active:=False;
XMLDocument1.FileName := 'http://www.canlitv.tv/tvprogram/Liste.xml';
XMLDocument1.Active:=True;
StartItemNode := XMLDocument1.DocumentElement.ChildNodes.First.ChildNodes.FindNode('item');
ANode := StartItemNode;
repeat
sTitle  := ANode.ChildNodes['title'].Text;
sLink   := ANode.ChildNodes['link'].Text;
sLogo   := ANode.ChildNodes['logo'].Text;
sYayin  := ANode.ChildNodes['yayin'].Text;

MS  := TMemoryStream.Create;
JPG := TJPEGImage.Create;
With TIdHttp.Create(nil) do
begin
Get( slogo, MS );
Free;
end;
MS.Seek(0,soFromBeginning);
JPG.LoadFromStream(MS);
MS.Free;

Bitmap := TBitmap.Create;
Bitmap.Assign( JPG );
ImageList1.Width  := Bitmap.Width;
ImageList1.Height := Bitmap.Height;
cTrans := clNone;
Imagelist1.Addmasked(Bitmap, cTrans);
Bitmap.Free;
JPG.Free;

With ListView1.Items.Add do
begin
ImageIndex := ImageList1.Count-1;
StateIndex := ImageList1.Count-1;
Caption    := sTitle;
SubItems.Add( sLink );
end;
ANode  := ANode.NextSibling;
until ANode = nil;
end;


end.
Şimdi mrmarman arkadaşım bu şekilde xml'in içinden çekmek istediklerimi çekiyorum fakat resimler gelmiyor 404 hatası veriyor idhttp kullanılan kod şu şekilde

Get( slogo, MS );

Fakat ben bu kodu söyle yaptığımda

Get( 'http://www.canlitv.tv/resimler/kucuk/ntvspor-izle.jpg', MS );

gelen tüm datalara ntvspor'un logosunu atıyor . Ama slogo dediğimde hata veriyor belki çok küçük bir yerde hata yapıyorum kafa dolunca insan gözünün önün dekini göremiyor bura da hatam nedir kardeşim yardımcı olabilirmisin ?

spectermun
Üye
Mesajlar: 36
Kayıt: 06 Ara 2014 07:17

Re: Listview'e image aktarmak !...

Mesaj gönderen spectermun » 07 Mar 2015 01:30

mrmarman kardeşim tamam buldum sorunu xml'in içerisinde actionmax yazıyor ama öyle bir resim url'si mevcut olmadığından o satırda hata veriyormuş yardımların için teşekkür ederim. Konu gene açık kalsın projenin ilerleyen safhalarında çözemediğim yer olursa buradan yazarım en azından öğrenmek isteyen arkadaşlarda tek konu altında her şeyi görmüş olur. Tekrar çok teşekkür ederim.

spectermun
Üye
Mesajlar: 36
Kayıt: 06 Ara 2014 07:17

Re: Listview'e image aktarmak !...

Mesaj gönderen spectermun » 08 Mar 2015 02:41

Arkadaşlar merhaba hazırladığım tv programının içerisine fazla uğraşmadan chattango koymak istedim bazı js dosyalarını düzgün çalıştırırken webbrowser bu chattangonun scriptini düzgün çalıştırmıyor. hata veriyor ve mesaj göndermek için entere basman lazım basıyorsun işlemiyor Kullandığım kodlar

Html Kodu :

Kod: Tümünü seç

<!DOCTYPE HTML>
<html>
<meta http-equiv="X-UA-Compatible" content="IE=9" />
<meta http-equiv="Content-Type" content="text/html; charset=windows-1254">
<head>

</head>
<body>
<script id="cid0020000086808802546" data-cfasync="false" async src="//st.chatango.com/js/gz/emb.js" style="width: 335px;height: 350px;">{"handle":"hdyayin-canlitv","arch":"js","styles":{"a":"ffcc66","b":100,"c":"000000","d":"000000","k":"ffcc66","l":"ffcc66","m":"ffcc66","p":"10","q":"ffcc66","r":100}}</script></body>
</html>
Delphi Kodu:

Kod: Tümünü seç

procedure TForm1.PNGButton10Click(Sender: TObject);
begin
Webbrowser2.Navigate('http://www.hdyayin.org/tv/chatlive.html');
Webbrowser2.silent:=True;
end;
Bunun sebebi ne olabilir ?

spectermun
Üye
Mesajlar: 36
Kayıt: 06 Ara 2014 07:17

Re: Listview'e image aktarmak !...

Mesaj gönderen spectermun » 08 Mar 2015 04:00

embeded browwserda bu sorun yok sorunu o şekilde çözdüm fakat orada da silme tuşu çalışmıyor :)

Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4731
Kayıt: 09 Ara 2003 08:13
Konum: Ankara
İletişim:

Re: Listview'e image aktarmak !...

Mesaj gönderen mrmarman » 08 Mar 2015 06:37

JavaScript ihtiyacı duyulan zamanlarda kullandığım bir çözümü paylaşayım.

Nihai çözüm değil ama kendi projelerimin bazılarında arka plan işlemlerinde bazı zamanlar işimi görmüştü.
Normal bir Internet Explorer penceresini bir formdaki panel içerisinde gömerek aşağıdaki şekilde bir yapı denenebilir.

Anlatmak istediğimi açmak istersek, gelen içerik parse edilip, bir formda gösterilir, kişinin cevabı bu ekrandan post edilir şeklindeki arka plan işlemlerinden kasıttır. :idea:

Kod: Tümünü seç

Uses ComObj;

Var
  xIEpp   : OleVariant;
  xIEppHand : THandle;

procedure TForm1.BitBtn1Click(Sender: TObject);
  procedure Bekle( IEpp: OleVariant );
  begin
      while (IEpp.Busy) do
      begin
        Sleep(1);
        Application.ProcessMessages;
      end;
  end;
Var
  hRearBar,
  hGizle : THandle;
begin
  if (VarIsEmpty(xIEpp)) then
  begin
    xIEpp := CreateOleObject('InternetExplorer.Application');
    xIEpp.Visible := True;
    Windows.SetParent( xIEpp.HWND, Panel1.Handle );
    xIEppHand := FindWindowEx( Panel1.Handle, 0, Nil, Nil );
  //hRearBar := FindWIndow('IEFrame', nil);
    hRearBar := FindWindowEx(Panel1.Handle, 0, 'IEFrame', nil);
    hRearBar := FindWindowEx(hRearBar,      0, 'WorkerW', nil);
    hRearBar := FindWindowEx(hRearBar,      0, 'ReBarWindow32', nil);

      hGizle := FindWindowEx(hRearBar, 0, 'TabBandClass', nil);
      hGizle := FindWindowEx(hGizle,   0, 'DirectUIHWND', nil);
    ShowWindow(hGizle, SW_HIDE);
      hGizle := FindWindowEx(hRearBar, 0, 'Address Band Root', nil);
    ShowWindow(hGizle, SW_HIDE);
      hGizle := FindWindowEx(hRearBar, 0, 'TravelBand', nil);
    ShowWindow(hGizle, SW_HIDE);
      hGizle := FindWindowEx(hRearBar, 0, 'ControlBandClass', nil);
      hGizle := FindWindowEx(hGizle, 0, 'ToolbarWindow32', nil);
    ShowWindow(hGizle, SW_HIDE);

    xIEpp.Visible := True;
    Panel1Resize( Panel1 );
  end;
  xIEpp.Navigate('http://eksisozluk.chatango.com/');
  Bekle( xIEpp );
end;
Resim
Resim Resim

spectermun
Üye
Mesajlar: 36
Kayıt: 06 Ara 2014 07:17

Re: Listview'e image aktarmak !...

Mesaj gönderen spectermun » 13 Mar 2015 12:48

mrmarman ustam bu listelemeyi resimli yapıp parseyi de denesem xml den de çeksem uzun sürüyor mesela 150 kanal olunca baya bekliyorsun bunu biraz daha hızlandıramaz mıyım varmıdır bunun bir yöntemi?

Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4731
Kayıt: 09 Ara 2003 08:13
Konum: Ankara
İletişim:

Re: Listview'e image aktarmak !...

Mesaj gönderen mrmarman » 13 Mar 2015 01:19

Aynı işlemi CACHE mantığı ile kurabilirsin. Bir klasör daha create edersin. Buraya dosyaları indirir buradan kullanırsın. XML'yi yeni baştan indirdiğinde burada olmayan(lar)ın - daha iyisi dosyaları bir bir dolaşıp uzunluk / tarih farklı ise - yenilerini indirirsin. Sana sadece XML parse kadarlık süre kalır ki süre bile değil.
Resim Resim

Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4731
Kayıt: 09 Ara 2003 08:13
Konum: Ankara
İletişim:

Re: Listview'e image aktarmak !...

Mesaj gönderen mrmarman » 14 Mar 2015 01:16

Boş vakit bulmuşken örnekleyeyim. Aşağıdaki kod ile değiştirirsen ilk ilerlemede resimli logoları indirir, ikinci ve devamında sayfada yoksa indirir, aksi halde hemencecik açılır. :idea:

Kod: Tümünü seç

USES IdHTTP, JPEG, ShellApi;

procedure TForm1.BitBtn1Click(Sender: TObject);
Const
  strUrl            = 'http://www.canlitv.tv/';
  strUrlTumKanallar = 'http://www.canlitv.tv/butun/televizyonlar';
  strImgSrc         = '<span class="wrp"><img src="/';
Var
  strHTML,
  strLogo,
  strKanal,
  strKanalURL,
  strAra      : String;

  iUz : Integer;

  Bitmap      : TBitmap;
  JPG         : TJPEGImage;
  cTrans     : TColor;

  MS          : TMemoryStream;

  strCacheDizin, strCacheDosya : String;
begin
  strCacheDizin := ExtractFilePath(Application.ExeName) + '\CACHE';
  if NOT DirectoryExists ( strCacheDizin )
    then ForceDirectories( strCacheDizin);

  ImageList1.Clear;

  ListView1.RowSelect := True;
  case ListView1.ViewStyle of
    vsReport : ListView1.StateImages := ImageList1;
    else       ListView1.LargeImages := ImageList1;
  end;

  With TIdHttp.Create(nil) do
  begin
    strHTML := Get( strUrlTumKanallar );
    Free;
  end;

  iUz := Length(strHTML);
  With ProgressBar1 do
  begin
    Min       := 0;
    Max       := iUz;
    Position  := 0;
    Visible   := True;
  end;

  ListView1.Items.BeginUpdate;
  ListView1.Clear;
  // <span class="wrp"><img src="/resimler/kucuk/Atv.jpg" alt="Canlı ATV"></span>
  while Pos(strImgSrc, strHTML) > 0  do
  begin
    ProgressBar1.Position := iUz - Length(strHTML);

    strAra := strImgSrc;
    system.Delete( strHTML, 1, Pos(strAra, strHTML) + Length( strAra )-1 );

    strLogo     := Copy( strHtml, 1, Pos('"', strHtml)-1 );
    strKanalUrl := ChangeFileExt( StringReplace( strLogo, 'resimler/kucuk/', '', [] ), '.html' );

    strAra := 'alt="Canl';
    system.Delete( strHTML, 1, Pos(strAra, strHTML) + Length( strAra )-1 );

    strAra := ' ';
    system.Delete( strHTML, 1, Pos(strAra, strHTML) + Length( strAra )-1 );

    strKanal := UTF8Decode( Copy( strHtml, 1, Pos('"', strHtml)-1 ) );

    strCacheDosya := strCacheDizin + '\' + StringReplace( strLogo, 'resimler/kucuk/', '', [] );

    JPG := TJPEGImage.Create;
    if NOT FileExists(strCacheDosya) then
    begin
      MS  := TMemoryStream.Create;
      With TIdHttp.Create(nil) do
      begin
        Get( strUrl + strLogo, MS );
        Free;
      end;
      MS.SaveToFile( strCacheDizin + '\' + StringReplace( strLogo, 'resimler/kucuk/', '', [] ) );
      MS.Seek(0,soFromBeginning);
        JPG.LoadFromStream(MS);
      MS.Free;
    end else
    begin
      JPG.LoadFromFile( strCacheDosya );
    end;

    Bitmap := TBitmap.Create;
      Bitmap.Assign( JPG );
      ImageList1.Width  := Bitmap.Width;
      ImageList1.Height := Bitmap.Height;
      cTrans := clNone;
      Imagelist1.Addmasked(Bitmap, cTrans);
    Bitmap.Free;
    JPG.Free;

    With ListView1.Items.Add do
    begin
      ImageIndex := ImageList1.Count-1;
      StateIndex := ImageList1.Count-1;
      Caption    := strKanal;
      SubItems.Add( strKanalURL );
    end;
  end;
  ProgressBar1.Position := iUz;
  ListView1.Columns[0].Width := -1;
  ListView1.Items.EndUpdate;
  ProgressBar1.Visible  := False;
end;

procedure TForm1.ListView1DblClick(Sender: TObject);
Const
  strUrl            = 'http://www.canlitv.tv/';
begin
  if TListView(Sender).Selected <> Nil
    then ShellExecute(Application.Handle, 'open', 'explorer.exe', PChar( strUrl + TListView(Sender).Selected.SubItems[0] ), nil, SW_NORMAL);
end;

EKLEME :

XMLDocument olayını da şöyle hazırladım.

Kod: Tümünü seç

USES IdHTTP, JPEG, ShellApi, XMLDoc, XMLIntf;

procedure TForm1.BitBtn2Click(Sender: TObject);
Const
  strXMLurl = 'http://www.canlitv.tv/tvprogram/Liste.xml';
Var
  XMLDocument : IXMLDocument;  // USES XMLDoc
  XMLNode     : IXMLNode; // USES XMLIntf
  strLogo,
  strKanal,
  strKanalURL,
  strKanalYayinURL,
  strAra     : String;

  iSayac     : Integer;

  Bitmap     : TBitmap;
  JPG        : TJPEGImage;
  cTrans     : TColor;

  MS         : TMemoryStream;

  strCacheDizin, strCacheDosya : String;
begin
  XMLDocument := TXMLDocument.Create('http://www.canlitv.tv/tvprogram/Liste.xml');
  XMLNode     := XMLDocument.DocumentElement.ChildNodes.First.ChildNodes.FindNode('item');
  JPG         := TJPEGImage.Create;

  ListView1.RowSelect := True;
  case ListView1.ViewStyle of
    vsReport  : ListView1.StateImages := ImageList1;
    else       ListView1.LargeImages := ImageList1;
  end;
  ListView1.Items.BeginUpdate;
  ListView1.Clear;

  ImageList1.Clear;

  strCacheDizin := ExtractFilePath(Application.ExeName) + 'CACHE';
  if NOT DirectoryExists ( strCacheDizin )
    then ForceDirectories( strCacheDizin);

  iSayac := 0;
  With ProgressBar1 do
  begin
    Min      := 0;
    Max      := XMLNode.ParentNode.ChildNodes.Count;
    Position := 0;
    Visible  := True;
  end;

  while XMLNode <> nil do
  begin
    Inc(iSayac);
    ProgressBar1.Position := iSayac;

    strKanal         := XMLNode.ChildNodes['title'].Text;
    strKanalURL      := XMLNode.ChildNodes['link' ].Text;
    strLogo          := XMLNode.ChildNodes['logo' ].Text;
    strKanalYayinURL := XMLNode.ChildNodes['yayin' ].Text;

    strCacheDosya := strLogo;
      strAra := '/kucuk/';
      system.Delete( strCacheDosya, 1, Pos(strAra, strCacheDosya) + Length(strAra)-1 );
    strCacheDosya := strCacheDizin + '\' + strCacheDosya;

    if NOT FileExists(strCacheDosya) then
    begin
      MS  := TMemoryStream.Create;
      With TIdHttp.Create(nil) do
      begin
        Try
          Get( strLogo, MS );
          MS.SaveToFile( strCacheDosya );
          MS.Seek(0, soFromBeginning);
        Except
          strCacheDosya := '';
        End;
        Free;
      end;
      MS.Free;
    end;

    if strCacheDosya <> '' then
    begin
      JPG.LoadFromFile( strCacheDosya );
      Bitmap := TBitmap.Create;
        Bitmap.Assign( JPG );
        ImageList1.Width  := Bitmap.Width;
        ImageList1.Height := Bitmap.Height;
        cTrans := clNone;
        Imagelist1.Addmasked(Bitmap, cTrans);
      Bitmap.Free;

      With ListView1.Items.Add do
      begin
        ImageIndex := ImageList1.Count-1;
        StateIndex := ImageList1.Count-1;
        Caption    := strKanal;
        SubItems.Add( strKanalYayinURL );
        SubItems.Add( strKanalURL );
      end;
    end;

    XMLNode := XMLNode.NextSibling;
  end;
  ProgressBar1.Position      := ProgressBar1.Max;
  ProgressBar1.Visible       := False;

  ListView1.Columns[0].Width := -1;
  ListView1.Items.EndUpdate;

  JPG.Free;
  XMLDocument.Active := False;
  XMLDocument := Nil;
end;

procedure TForm1.ListView1DblClick(Sender: TObject);
begin
  if TListView(Sender).Selected <> Nil
    then ShellExecute(Application.Handle, 'open', 'explorer.exe', PChar( TListView(Sender).Selected.SubItems[0] ), nil, SW_NORMAL);
end;
Resim Resim

Lord_Ares
Üye
Mesajlar: 1058
Kayıt: 15 Eki 2006 03:33
Konum: Çorlu

Re: Listview'e image aktarmak !...

Mesaj gönderen Lord_Ares » 16 Mar 2016 12:05

Xe 6 da şu satırda, Windows.SetParent( xIEpp.HWND, Panel1.Handle );
[dcc32 Error] Unit1.pas(50): E2003 Undeclared identifier: 'Windows'
hatası alıyorum. Uses ComObj,ShellApi, Winapi.Windows,Vcl.Controls ekli ama hala hata alıyorum sebebini çözemedim.

Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4731
Kayıt: 09 Ara 2003 08:13
Konum: Ankara
İletişim:

Re: Listview'e image aktarmak !...

Mesaj gönderen mrmarman » 16 Mar 2016 12:25

Windows unitinde setparent kullanılsın diye unit adını ön ek olarak koymuştuk. Bir unit altında fonksiyon veya procedure leri topladığında uses'a eklenecek olan unitleri bu ön takılara bakarak çabucak karar verin istedim. Winapi.windows denemedin sanırım.

XE serisi ile çalışırken unitleri yeniden gözlemleyin cevap uses satırlarında.

Dilersen de windows ön takısını kaldır.
Resim Resim

Kullanıcı avatarı
fesiharslan
Üye
Mesajlar: 588
Kayıt: 20 Eki 2006 10:37
Konum: Erzurum
İletişim:

Re: Listview'e image aktarmak !...

Mesaj gönderen fesiharslan » 16 Mar 2016 08:27

Merhaba;
Windows referansını Winapi ile birlikte kullanmalısınız.

Kod: Tümünü seç

Winapi.Windows.SetParent( xIEpp.HWND, Panel1.Handle );

Lord_Ares
Üye
Mesajlar: 1058
Kayıt: 15 Eki 2006 03:33
Konum: Çorlu

Re: Listview'e image aktarmak !...

Mesaj gönderen Lord_Ares » 16 Mar 2016 01:08

Hepinizden özür diliyorum sorunu buldum. Dediğiniz şekilde kullandığımda tanımsız hatası vermiyordu fakat program kırılıyordu. O yüzden yanlış kullandığımı düşünüyordum ama sorun Panel1.OnResize( Panel1 ); satırındaymış. Bu yüzden kırılıyormuş. Panel1.Resize( Panel1 ); şeklinde kullanınca hata veriyor. o yüzden onResize demiştim.Satırı kaldırdığımda sorun düzeldi. Panelin içine sığması için ne demeliyim, nasıl hizalarım ?
Çok teşekkürler.

Cevapla