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 Pdf oluşturma konusu içerisinde; bir raporlama aracına ihtiyacı olduğunu belirterek, "android de html oluşturma" 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
Cevapla


Bu Konudaki Yorumlar
Tüm Platformlar için (cross-platform) HTML Dosyası Oluşturma - Yazar: TescilsizUzman - 21-10-2016, Saat: 11:53

Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Web Sitesine Login Olma ve HTML Parse SimaWB 15 16.519 18-09-2021, Saat: 21:26
Son Yorum: 10.Köy
  TWebBrowser Lafınızı Dinlesin, HTML 5'ten anlasın uparlayan 14 11.180 18-08-2021, Saat: 20:48
Son Yorum: rahman
  Nesne Yönelimli Özel Com(Component Object Model) Oluşturma trpersia 7 4.448 20-11-2020, Saat: 01:36
Son Yorum: FiRewaLL
  Yazılımcılar için hafta sonu okumaları cinarbil 1 1.596 03-07-2020, Saat: 14:15
Son Yorum: ahmet_sinav
  Enumerated Type'lar için Record Helper Kullanımı uparlayan 4 3.189 21-06-2020, Saat: 15:14
Son Yorum: uparlayan



Konuyu Okuyanlar: 1 Ziyaretçi