21-10-2016, Saat: 11:53
(Son Düzenleme: 21-10-2016, Saat: 11:58, Düzenleyen: TescilsizUzman.)
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.
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;
İ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.
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.
3- Daha sonra bu tipe Html kodlarımızı ekleyelim. Örneğin;
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.
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;
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. )
Örnek ekran görüntüleri;
Windows 10
Android
Ü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. )
Örnek ekran görüntüleri;
Windows 10
Android