Konuyu Oyla:
  • Derecelendirme: 5/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
FMX mimarisinde zorlandığınız kısımlar ve çözümleri
#1
Merhaba,

FMX mimarisi üzerinde hangi konularda zorluklar yaşıyorsunuz? Örneğin IOS SDK yüklemeleri karmaşası, Modern tasarımlar üretmekte zorluk, Şık arayüzler veya liste kutuları, Android tarafında erişim izinleri, Tek projede tüm platformlara arayüz üretmek ve projeyi tüm platformlara derlenebilir yapmak... vesaire aklınıza FMX mimarisinde zorluk çektiğiniz ne var ise paylaşın. Bu konu altında da çözüme kavuşturabildiğimiz her şeyi paylaşalım. FMX'e biraz can gerek. Delphican... Smile
Serhat YANALAK - FMX Software Developer
Cevapla
#2
Çok fazla mobil uygulama geliştirmiyorum ama, farklı ekran çözünürlükleri (daha doğrusu oranları) ve yatay / dikey birlikte kullanım istekleri, bu noktada klavyenin açılması, metin girilen yerin klavyenin altında veya ekranın dışına taşmaması için önlemlerin alınması vb. problemler ile uğraşmak yorucu oluyor. Bir şekilde fmxin kabiliyetleri ile bunlar aşılabiliyor ama, uğraşılan projenin yanında çözülmesi gereken yan problemler ile boğuşmak yorucu oluyor.

D13 de düzelttilermi bilmiyorum, D11 de fmx tarafında password char gösterimi için içi dolu daire kullanılırken D12 de * karakterine fixlediler. Bana göre içi dolu daire daha güzel görünüyor. Kullanıcı önceki sürümde içi dolu daire olarak görmüş alışmış, "bu niye * oldu daire yapamazmıyız" diye sorduğunda verecek cevabının olmaması kötü bir durum.

En azından VCL deki gibi kullanıcı tarafından belirlenebilir olması çok daha iyi olurdu.

İlgili sistem kütüphaneleri üzerinde değişiklik ile belki bir çözüm üretilebilir ama, her yeni delphi sürümü çıktığında, bu değişikliği yine manuel olarak yeni sürüme taşımak sürdürülebilir bir yöntem olarak görünmüyor.

@Mr.X hocam siz Tedit lerde password char girişlerde nasıl bir yöntem izliyorsunuz. Varsayılan neyse onu kullanıp geçiyorsunuz?

Bu durum için daha önceden açtığım konu : https://www.delphican.com/showthread.php?tid=7515
Cevapla
#3
Merhaba,

Password Char değişikliğini aşağıdaki yöntemle yapabiliriz gibi. Daha önce uğraşmamıştım. Varsayılan ne ise onu kullanıyorum. FMX mimarisi platformlara bu konuda bağımlı hale gelmiş durumda. O yüzden Platform API taraflarında tanımlı ne ise onu kullanıyor. Ama bu mecbur olduğumuz anlamına gelmez elbette.
Dün paylaşma fırsatım olmadı yoğunluğumdan ötürü. Delphi 12.3 ile yazılmıştır.

   

         

unit Unit1;

interface

uses
 System.SysUtils,
 System.Types,
 System.UITypes,
 System.Classes,
 System.Variants,
 FMX.Types,
 FMX.Controls,
 FMX.Forms,
 FMX.Graphics,
 FMX.Dialogs,
 FMX.Controls.Presentation,
 FMX.Edit,
 FMX.StdCtrls,
 FMX.Layouts,
 FMX.Objects,
 FMX.Effects,
 FMX.Ani;

type
 TForm1 = class(TForm)
   Layout1: TLayout;
   Rectangle1: TRectangle;
   Rectangle2: TRectangle;
   StyleBook1: TStyleBook;
   Layout4: TLayout;
   Layout2: TLayout;
   Label2: TLabel;
   Label1: TLabel;
   Rectangle3: TRectangle;
   Edit1: TEdit;
   Rectangle4: TRectangle;
   Edit2: TEdit;
   Layout3: TLayout;
   Rectangle5: TRectangle;
   Label3: TLabel;
   Rectangle6: TRectangle;
   Label4: TLabel;
   ShadowEffect1: TShadowEffect;
   ShadowEffect2: TShadowEffect;
   ColorAnimation1: TColorAnimation;
   ColorAnimation2: TColorAnimation;
   procedure Edit1Typing(Sender: TObject);
   procedure FormCreate(Sender: TObject);
   procedure Edit1Click(Sender: TObject);
   procedure Rectangle1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Single);
   procedure Rectangle6Click(Sender: TObject);
   procedure Rectangle5Click(Sender: TObject);
 private

 public
   FPassword: string;
 end;

var
 Form1: TForm1;

implementation

{$R *.fmx}

procedure TForm1.Edit1Click(Sender: TObject);
begin
 Edit1.Text     := StringOfChar(Edit2.Text[1], Edit1.Text.Length);
 Edit1.SelStart := Edit1.Text.Length;
end;

procedure TForm1.Edit1Typing(Sender: TObject);
begin
 if Length(FPassword) > Length(Edit1.Text) then
   FPassword := Edit1.Text
 else
   FPassword := FPassword + Copy(Edit1.Text, Length(Edit1.Text), 1);

 Edit1.Text     := StringOfChar(Edit2.Text[1], Edit1.Text.Length);
 Edit1.SelStart := Edit1.Text.Length;

end;

procedure TForm1.FormCreate(Sender: TObject);
begin
{$IF DEFINED(ANDROID) OR DEFINED(IOS)}
 SELF.Transparency  := false;
 Rectangle1.XRadius := 0;
 Rectangle1.YRadius := 0;
 Rectangle2.Corners := [TCorner.BottomLeft, TCorner.BottomRight];
{$ENDIF}
 FPassword := '';
end;

procedure TForm1.Rectangle1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Single);
begin
 SELF.StartWindowDrag;
end;

procedure TForm1.Rectangle5Click(Sender: TObject);
begin
 Edit1.Text := FPassword;
end;

procedure TForm1.Rectangle6Click(Sender: TObject);
begin
 Edit1.Text := StringOfChar(Edit2.Text[1], Edit1.Text.Length);
end;

end.


.zip   PasswordChar.zip (Dosya Boyutu: 301,05 KB / İndirme Sayısı: 6)
Serhat YANALAK - FMX Software Developer
Cevapla
#4
Teşekkürler @Mr.X hocam

Paylaştığınız kod örneğinde aşağıdaki durumu test edebilirmisiniz
> Şifre olarak 123456 girin
> Mevcut şifreyi silmeden 12abc3456 yapmayı deneyin
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  FMX Mimarisinde Harici FONT (True - Type) Kullanmak RAD Coder 1 803 26-10-2023, Saat: 18:40
Son Yorum: SamerAssil



Konuyu Okuyanlar: 1 Ziyaretçi