Tüm Platformlar için Hızlı Uygulama Geliştirme --->    Kitabımız...      Delphi

Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Tüm Platformlar için (cross-platform) HTML Dosyası Oluşturma
#1
Merhaba,
Üyelerimizden @hassur'un Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol konusu içerisinde; bir raporlama aracına ihtiyacı olduğunu belirterek, "Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol" konusunda yardım talebinde bulunmuştu. Buna istinaden bir makale oluşturmayı uygun gördüm. Konu içerisinde değil de Makale olmasındaki asıl amacım; cevabın bir kaynak niteliğinde olasıdır. (FireMonkey hakkında bu tip çalışmaların paylaşılmaması ve açık kaynaklarda bu alanda pek bilgi olmaması)

Tüm Platformlar için (cross-platform) HTML Dosyası Oluşturmanın, aslında özel bir tekniğe ihtiyaç duymadan, ne kadar kolay olduğunu bu makalede göreceğiz.
HTML dosyası oluşturmak için temel HTML kodlama bilgisine ihtiyaç vardır. BU konuda kısa bir araştırma yaparak bilgi sahibi olabilirsiniz.  
Bir HTML dosyası için gerekli olan temel Tag yapısı aşağıdaki gibi olmalıdır. 

<html>
<head>
<title>Delphi Can</title>
</head>
<body>
      Merhaba, Bu metin tarayıcıda doğrudan gösterilecektir.
</body>
</html> 

En önemli kısım ise Meta bilgisidir. Bu Tag içerisinde dosyanın içerik tipi ve formatı belirlenir. HTML tagından sonra gelir.

Örneğin;

<meta http-equiv="Content-Type" content="text/html; charset=windows-1254" />

İhtiyaç duyacağınız diğer Tag'lardan bazıları; Html, Head, Title, Body ve Metin Biçimlendirme Tag'ları (Center, Align, P, Font vb.)

Şimdi bir örnekle Delphi ile Tüm Platformlar için (cross-platform) HTML Dosyası Oluşturalım.

1- Uses bölümüne IOUtils ekleyelim. Cross-Platform TPath class-methodların kullanımı için gereklidir.

Uses
 System.IOUtils;

2- Bir method (procedure/function) veya button aracılığıyla HTML dosyası oluşturacak kodları yazalım. Temel olarak bir TStrings tipi oluşturup, bu strings yapısına Html Tag'ları ekleyeceğiz. Son olarak TStrings'in SaveToFile motodu ile oluşan tüm metinsel değerleri, Html dosyası olarak kaydedeceğiz.

Metodumuzun değişken tanımlama bölümünde TStrings tipinde değişken tanımlayalım.

var

 strHTML: TStrings;

3- Daha sonra bu tipe Html kodlarımızı ekleyelim. Örneğin;

    
with strHTML do
   begin
     Add('<html xmlns="http://www.w3.org/1999/xhtml" lang="tr-TR">');
     Add('<meta http-equiv="Content-Type" content="text/html; charset="UTF-8" />');
     Add('<title>Delphi Can</title>');
     Add('<p> Bu HTML belgesi,"<font color="red"><b>' + TOSVersion.ToString +
       '</font></b> "İşletim Sistemi tarafından oluşturulmuştur.</p>');
     Add('</html>');
   end;

Gördüğünüz gibi Html yapısında; açılan her Tag kapatılıyor. Kapatılmadığı durumda hata vermiyor, fakat sonraki Html kodlarınızı ve biçimlendirmeleri olumsuz yönde etkiler.
Meta Tag'ında dosya içeriğinin metinsel yapıda olduğunu ve içeriğin UTF-8 formatında olduğunu belirttik. Ayrıca lang="tr-TR" direktifi ile de dosya içeriğinin Türkçe olduğunu belirttik.

4- Son olarak oluşturduğumuz tüm metinsel yapıyı Html olarak kaydetmek için TStrings tipinin SaveToFile metodunu kullanalım.

strHTML.SaveToFile('DelphiFMX.html', TEncoding.UTF8);

Tüm platformlar için bir Html dosyası oluşturmanın zor olmadığını, hatta son derece kolay olduğunu gördük.

Peki dosyayı hangi platformda nereye oluşturacak?
SaveToFile metodu ile ek bir parametre verilmez ise uygulamanızın bulunduğu konuma kaydedecektir. Fakat Android, iOS gibi mobil platformlarda uygulamanın varsayılan konumuna ulaşmak son derece zordur. Mevcut mobil cihaz ayarlarınıza bağlı olarak kurulduğundan her defasında uygulamanın kurulum klasörünü aramaktansa, kendimizin belirleyeceği bir konuma kaydetmek daha mantıklı olacaktır.

Bunun için Platform direktifleri kullanmak gerekecektir. Örneğin;

{$IF DEFINED(iOS) or DEFINED(ANDROID)}
     strHTML.SaveToFile(TPath.Combine(TPath.GetSharedDownloadsPath, 'DelphiFMX.html'),
       TEncoding.UTF8);
{$ENDIF}
{$IF DEFINED(MSWINDOWS) or DEFINED(MACOS)}
    strHTML.SaveToFile('DelphiFMX.html'), TEncoding.UTF8);
{$ENDIF}

Yukarıdaki direktif yapısında uygulamanız bir masaüstü uygulaması (Windows, Mac OS X) ise uygulamanızın bulunduğu klasöre, Mobil uygulama (iOS, Android) ise varsayılan indirme (Download) klasörüne kaydedecektir.

Önemli Not: TStrings tipini oluşturduktan sonra yok etmeyi unutmayın. ("Lütfen Çöpleri Yerlere Atmayın" gibi bir şey oldu, ama yine de hatırlatayım dedim. Smile )

Örnek ekran görüntüleri;

Windows 10 

FMXhtml1.png

Android 

FMXhtml2.png
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Web Sitesine Login Olma ve HTML Parse SimaWB 8 517 02-01-2018, Saat: 10:58
Son Yorum: SimaWB
  TWebBrowser Lafınızı Dinlesin, HTML 5'ten anlasın uparlayan 13 539 14-11-2017, Saat: 21:10
Son Yorum: uparlayan
  Web Sitesine Login Olma ve HTML Parse - 2 SimaWB 6 293 13-11-2017, Saat: 10:37
Son Yorum: klavye
  SQL Server : Tablolar için parametrik sıralı alan listesi uparlayan 3 349 01-07-2017, Saat: 19:12
Son Yorum: uparlayan
  Tüm platformlar (Android, iOS vb.)  için telefon çağrı durumunu yakalamak Fesih ARSLAN 18 3.916 14-04-2017, Saat: 21:17
Son Yorum: Paranoyaq



Konuyu Okuyanlar: 1 Ziyaretçi