<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>BBProject.net &#187; explorer</title>
	<atom:link href="http://www.bbproject.net/tag/explorer/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.bbproject.net</link>
	<description>Programowanie, webmastering, informatyka</description>
	<lastBuildDate>Tue, 01 Mar 2011 20:35:37 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Instalacja komponentów w Turbo Delphi Explorer</title>
		<link>http://www.bbproject.net/2010/03/instalacja-komponentow-w-turbo-delphi-explorer/</link>
		<comments>http://www.bbproject.net/2010/03/instalacja-komponentow-w-turbo-delphi-explorer/#comments</comments>
		<pubDate>Fri, 19 Mar 2010 08:54:57 +0000</pubDate>
		<dc:creator>M@ster</dc:creator>
				<category><![CDATA[Programowanie]]></category>
		<category><![CDATA[delphi]]></category>
		<category><![CDATA[explorer]]></category>
		<category><![CDATA[komponent]]></category>
		<category><![CDATA[thttpget]]></category>

		<guid isPermaLink="false">http://www.bbproject.net/?p=249</guid>
		<description><![CDATA[Turbo Delphi Explorer to świetne środowisko dla obiektowego Pascala, niestety jako darmowa edycja ma zablokowaną możliwość instalowania dodatkowych komponentów. Postaram się pokazać jak mimo tego ograniczenia skorzystać z zewnętrznego kawałka kodu. Metoda opiera się na dynamicznym tworzeniu instancji komponentu, zatem jest ona zgodna z licencją i nie narusza jej w żaden sposób. Oczywiście niesie to [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-250" title="Delphi" src="http://www.bbproject.net/wp-content/uploads/2010/02/delphi.png" alt="" width="123" height="123" /><a href="http://pl.wikipedia.org/wiki/Turbo_Delphi">Turbo Delphi</a> Explorer to świetne środowisko dla obiektowego Pascala, niestety jako darmowa edycja ma zablokowaną możliwość instalowania dodatkowych komponentów. Postaram się pokazać jak mimo tego ograniczenia skorzystać z zewnętrznego kawałka kodu.</p>
<p>Metoda opiera się na dynamicznym tworzeniu instancji komponentu, zatem jest ona zgodna z licencją i nie narusza jej w żaden sposób. Oczywiście niesie to za sobą pewne niedogodności i nie zawsze może być stosowane, jednak w znakomitej większości przypadków tak.</p>
<p><span id="more-249"></span>Jako przykład, wykorzystam komponentem <em>THTTPGet</em>, służący do pobierania plików z internetu. Nie jest to komponent wizualny, tzn. udostępnia pewną funkcjonalność a nie element widoczny dla użytkownika końcowego.</p>
<p>W pierwszej kolejności, po umiejscowieniu plików na dysku, musimy dodać wybraną lokalizację do ścieżki przeszukiwania bibliotek. Robimy to w menu <em>Tools</em> &gt; <em>Options</em> &gt; <em>Library &#8211; Win32</em> &gt; <em>Library path</em>. Jeśli ten krok mamy już za sobą, dodajemy do sekcji <em>uses</em> nazwę komponentu:</p>
<pre class="brush: delphi">uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, HTTPGet;
</pre>
<p>Kolejno musimy stworzyć nową instancję komponentu, w zależności od tego czy wykorzystujemy go tylko w określonym fragmencie kodu, czy też globalnie, funkcje tworzenia i zwalnianie umieszczamy w stosownym miejscu. Ja postanowiłem utworzyć komponent zaraz po załadowaniu aplikacji oraz zwolnić go przy jej zamykaniu:</p>
<pre class="brush: delphi">procedure TForm1.FormCreate(Sender: TObject);
begin
  HTTPGet := THTTPGet.Create(Self);
end;
</pre>
<pre class="brush: delphi">procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  HTTPGet.Free;
end;
</pre>
<p><em>HTTPGet</em> to nazwa zmiennej zadeklarowanej w sekcji <em>private</em> klasy <em>TForm1</em>. W tym momencie możemy już korzystać z komponentu, odnosząc się do zmiennej <em>HTTPGet</em>.</p>
<p>To rozwiązanie pozwala nam na swobodę w doborze komponentów w Turbo Delphi Explorer, jednak niesie ze sobą pewne ograniczenia. W przypadku komponentów wizualnych, nie możemy w wygodny sposób umieścić ich na formie oraz manipulować ich wyglądem. Musimy tego dokonać po przez odnoszenie się do odpowiednich właściwości w samym kodzie, najlepiej tuż po jego stworzeniu.</p>
<p>Na koniec zamieszczam całościowy listing kodu wykorzystanego w tym wpisie, wraz z przykładowym zastosowaniem <em>THTTPGet</em>:</p>
<pre class="brush: delphi">unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, HTTPGet, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Button1Click(Sender: TObject);
  private
    HTTPGet: THTTPGet;
    procedure FileDone(Sender: TObject; FileName: String; FileSize: Integer);
  public
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  HTTPGet := THTTPGet.Create(Self);
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  HTTPGet.Free;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Button1.Enabled := False;
  with HTTPGet do
    begin
    BinaryData := True;
    URL := 'http://downloads.sourceforge.net/sevenzip/7z465.exe';
    FileName := '7z465.exe';
    OnDoneFile := FileDone;
    GetFile;
  end;
end;

procedure TForm1.FileDone(Sender: TObject; FileName: String; FileSize: Integer);
begin
  Button1.Enabled := True;
end;

end.</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.bbproject.net/2010/03/instalacja-komponentow-w-turbo-delphi-explorer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

