30 Haziran 2014 Pazartesi

Delphi Mobile Duyuru Componenti

Merhabalar,

Sizlere bu yazımda kendi çapımda hazırladığım bir procedure'den bahsedeceğim. Bu procedure sayesinde Google Analytics'in kullandığı şekil objeleriniz olacak ve böyle şeyler kullanıcıya duyuru vs. gösteriminde görünüş olarak size artı puan sağlayacağına inanmaktayım.

Google Analytics Görünümü:

Şimdi örnek projemiz için forumumuza yerleştireceğimiz objeler:
-Editbox 1 adet
-Button 1 adet
-VertScrollBox 1 adet ve Align = Client yapın ki bütün ekranı kaplasın.

Uses FMX.Layouts,FMX.Effects,FMX.Objects;// Eklenmesi gerekenler

procedure DuyuruEkle(Yazi, YBaslik: String; Scroll: TVertScrollBox);
var
  Pano,BPano: TRectangle;
  Metin,Baslik: TText;
  Golge: TShadowEffect;
begin
  TThread.CreateAnonymousThread(procedure
  begin
    Pano := TRectangle.Create(Scroll);
    with Pano do
    begin
      Parent := Scroll;
      Align := TAlignLayout.alTop;
      with Margins do
      begin
        Left := 5;
        Right := 5;
        Top := 5;
        Bottom := 5;
      end;
      Padding.Left := 5;
      Fill.Color := $FFECF0F1;
      Sides := [];

      Golge := TShadowEffect.Create(Scroll);
      with Golge do
      begin
        Parent := Pano;
        Direction := 90;
        Distance := 2;
        Opacity := 0.6;
        ShadowColor := TAlphaColorRec.Black;
        Softness := 0.1;
      end;

      BPano := TRectangle.Create(Scroll);//Baslik Arkafon
      with BPano do
      begin
        Parent := Pano;
        Position.X := 15;
        Position.Y := 0;
        Fill.Color := $FFCF3F30;
        Sides := [];

        Baslik := TText.Create(Scroll);//Baslik yazı
        with Baslik do
        begin
          Parent := BPano;
          Text := UpperCase(YBaslik);
          Align := TAlignLayout.alContents;
          WordWrap := False;
          Font.Family := 'Calibri';
          Color := TAlphaColorRec.White;
          Font.Size := 15;
        end;
         BPano.Width := Baslik.Width + 30 + 30;
         BPano.Height := 30;
      end;

      Metin := TText.Create(Scroll);
      with Metin do
      begin
        Parent := Pano;
        Margins.Top := 40;
        Text := Yazi;
        Font.Family := 'Arial';
        Align := TAlignLayout.alClient;
      end;

      Pano.Height := ((Length(Metin.Text) / (Scroll.Width / 15)) * 15) ;
      if Pano.Height < 80 then
        Pano.Height := 90;
    end;
  end).Start;
end;

Gerekli procedure tanımını yaptıktan sonra Buton içerisine gelerek:

DuyuruEkle(DuyuruEdit.Text,'ÖNEMLİ',VertScrollBox);


1-) Gördüğünüz gibi. "DuyuruEdit.text" editboxdan gönderdiğimiz yani elimizle yazdığımız yazıdır.
2-) "ÖNEMLİ" yazan yeri örnekte manuel olarak ayarladım ben, siz isterseniz başka bir edit ile orayıda değiştirebilirsiniz.
3-) Son parametremizde işlem görecek olan VertScrollBox'dır.

Bu çalışmada renkleri istediğiniz gibi değiştirebilirsiniz. Ben burada form rengini "#FFCF3F30" yaptım.

Projenin son hali:

8 yorum:

  1. Paylaşım için teşekkürler, bu oluşturduğumuz panalleri androidde nasıl silebiliriz? destroy yada free komutlarını denedim win32 de sorunsuz çalışıyor fakat androidde işleme almıyor

    YanıtlaSil
    Yanıtlar
    1. Denediğiniz kod bloğunu burada yayınyalabilir misiniz bir inceleyelim

      Sil
  2. Eline salık Barış kardeş. Fakat kodları derlediğimde çalışmadı, yapılması gereken başka bir şey varmıdır acaba?

    YanıtlaSil
    Yanıtlar
    1. Eğer aldığınız hatayı yazarsanız yardımcı olmaya çalışabilirim.

      Sil
  3. Hiç bir hata vermiyor, ama edit sekmesine ekleme yaptığımdada hiç bir şey eklemiyor. Cevabınız için teşekkürler.

    YanıtlaSil
    Yanıtlar
    1. Benim hatam üzgünüm bir düzeltme yapmanız lazım.

      En alttaki "end)" olan yeri "end).Start;" olarak değiştirirseniz sorununuz çözülecektir.

      Sil
  4. Cevablnınız için Teşekkür ederim. Bende sonradan fark ettdim, Genelde hep CreateAnonymousThread deyilde Synchronize kullandığım için bende fark etmemişim. Bu arada bilgilerini paylaştığın için teşekkür ederim. Bende bazı şeyleri paylaşmak istiyorum vakit bulursam bazı işlemleri sizinle paylaşırım.

    YanıtlaSil
    Yanıtlar
    1. İstediğinizde benle paylaşabilirsiniz blogda da yayınlayabilirim amaç bilgi paylaşımı sonuçta :)

      Sil