Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 5/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Görsel Bileşen Hazırlama
#1
Merhaba. En basitinden hep bileşeni görsel olmayan yazıyordum. Şimdi yazacağım bileşen görsel bir nesne. Görsel bileşen için FMX de TControl sınıfı kullanılıyor. Bende onu kullanmak istedim. Ama durum şu ki Top, Left, Width, Height, Visible ve Background eklemem lazım. Bu propertyler hepsi bu sınıfda olmasına rağmen kullanamıyorum. Bileşeni forma ekleyince hata veriyor.

unit AZDroid.Base;

interface

uses
 System.Classes,
 System.UITypes,
 FMX.Controls;

type
 TAZBase = class;

 [ComponentPlatformsAttribute(pidAndroid)]
 TAZBase = class(TControl)
 private
   FAuthor, FVersion: string;
 protected

 public
   constructor Create(AOwner: TComponent); override;
   destructor Destroy; override;
 published
   property Author: string Read FAuthor;
   property Version: string Read FVersion;
 end;

implementation

{ TAZBase }

constructor TAZBase.Create(AOwner: TComponent);
begin
 inherited;
 Canvas.Fill.Color := TAlphaColors.Black; // Hata sebebi bu
 FAuthor := 'Ali Zairov';
 FVersion := '1.0.0';
end;

destructor TAZBase.Destroy;
begin
 inherited;
end;

end.
WWW
Cevapla
#2
Tekrar merhaba. Sınıf değiştirip TRectangle ile yaptım. Sorun şu ki Nesneye girilen değer visible özelliği yalnız o nesne işe yarıyor. Ama ben bu değerleri alıp benim nesneye vermem gerekiyor.
WWW
Cevapla
#3
Merhaba,
FireMonkey Bileşen Hiyerarşisi:

FireMonkeyHierarchy2.png

FMX TControl nesnesine bakarsanız komplex bir yapıya sahip olduğunu görürsünüz.
TControl = class(TFmxObject, IControl, IContainerObject, IAlignRoot, IRotatedControl, IAlignableObject,IEffectContainer, IGestureControl, ITabStopController, ITriggerAnimation, ITriggerEffect)
Ayrıca bu sınıf yapısında doğrudan Left ve Top özellikleri yer almaz. Bunun yerine Position.X ve Position.Y vardır.
Konu içerisinde component'i hangi amaçla kullanacağınızı veya sahip olacağı özellikleri tam olarak yazmadığınızdan, hangi class'ı kullanmanız gerektiğini söylemek çok zor.
İhtiyaç analizini iyi yapmak ve bu doğrultuda BaseClass'ı belirlemek daha doğru olacaktır.
Yazılarınızdan anladığım kadarıyla daha çok grafiksel özelliklere sahip görsel bir component yazmak istiyorsunuz.
Nacizhane tavsiyem; Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol kullanmanızdır. FireMonkey mimarisine tüm çizim ve grafiksel işlemlerin temeli bu Class'a dayanır.
Dikat ettiyseniz TRectangle'de bu sınıftan türemiştir.
TRectangle = class(TShape)
TShape'nin Fill özelliği ile BackGround'a ister TGradient ile renk geçişi ekleyebilir, tek renk veya bir Bitmap ile doldurabilirsiniz.
Self.Visible, Self.Position.X (Left), Self.Position.Y (Top) özelliklerini de doğrudan kullanabilirsiniz.
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
#4
Merhaba Fesih bey. İlginiz için teşekkür ederim. Aslında Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol native olarak delphi formuna eklemeyi başardım. Kaç defa uğraşmıştım sonunda çözüme ulaştım. O bileşeni yapanlar var ücretli ve çok performans sorunu var. Ben daha kolay bir yoldan yaptım. Sadece kullanıcının forumda görsel olarak yerleşdirmesi için uğraşıyorum. Bu bileşeni baz alarak VLC ve vitamio paketlerinide delphi için kullana bilicez.
WWW
Cevapla
#5
Şimdilik sınıf olarak TControl kullandım. Bileşen tek sorun ayarlar. Değerleri kayıt yapmıyor.

    
property Align;
property Anchors;
property Height;
property Position;
property Visible default True;
property Width;

Bunu çok bileşende kullandığını gördüm. Bende öyle ekledim ve bileşene otomatik ekledi o ayarları. Sorun şu ki, form kapatıp açınca ayarlar kayboluyor.

6f26nnGec.png

6f2POB2jY.png
WWW
Cevapla
#6
Merhaba,
TControl'den türetmiş olduğunuz Nesnenin Constructor'ında varsayılan değerleri set ettiniz mi?
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
#7
(15-05-2017, Saat: 07:58)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlMerhaba,
TControl'den türetmiş olduğunuz Nesnenin Constructor'ında varsayılan değerleri set ettiniz mi?

Merhaba. Evet ettim. Her seferinde sıfırlıyor. Hangi değerleri versdiysem ona dönüyor.
WWW
Cevapla
#8
Property'lerin sonuna stored true; eklemeyi dener misiniz ?
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
WWW
Cevapla
#9
(15-05-2017, Saat: 14:11)Tuğrul HELVACI Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlProperty'lerin sonuna stored true; eklemeyi dener misiniz ?

Merhaba. Evet öyle hafızada sakladı. Ama durum şu ki, bu yalnız delphi için geçerli oldu. Çalışma zamanında bu değerler kayb oldu. Böyle denedim değerler kullandım. Ama bu seferde delphi tarafında aynı durum yaşandı.

    
   property Position read FPos write FPos stored True;
    property Width read FW write FW stored True;
   property Height read FW write FH stored True;
WWW
Cevapla
#10
Bahsettiğiniz soruna pek anlam veremedim. Bu durum pek olası görünmüyor. Stored direktifi varsayılan olarak true'dur zaten. Published bölümünde belirtilen tüm property'ler DFM dosyasında saklanırlar normal koşullarda. FMX'de belki bu konuda bir bug vardır, sözlerinize binaen söylüyorum. Tecrübe etmedim ama bu tarz bir bug'un mevcut olabileceğine de pek imkan vermiyorum esasen.

Belki yaptıklarınızı adım adım anlatabilirseniz, daha net bir yanıt verilebilir.
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
WWW
Cevapla

Konuyu Paylaş : facebook gplus twitter





Konuyu Okuyanlar: 1 Ziyaretçi