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...

Ç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
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.
[
attachment=2972]
[
attachment=2974] [
attachment=2975]
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.
[
attachment=2971]
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