Konuyu Oyla:
  • Derecelendirme: 5/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Hareketli Text Prompt Yardım
#1
Photo 
Merhaba,

Bir ugulamada ekte gönderdiğim şekilde edit üzerine gelendiğinde text prompt edit'in üst sınırına çıkıyor.Bunu nasıl yapabilirim yardımcı olabilirmisiniz?


Ek Dosyalar Resimler
       
Cevapla
#2
Editi bir groupbox ın içine yerleştirin. Editin on enter olayında: Groupbox ın captionına data yazdırın.. en esxitin da ise o groupboxın caption ı boşaltın.. aklıma gelen ilk ve janti çözüm bu oldu Smile
// Bilgi paylaştıkça çoğalır.. 

Cevapla
#3
(04-03-2021, Saat: 18:19)mcuyan Adlı Kullanıcıdan Alıntı: Editi bir groupbox ın içine yerleştirin. Editin on enter olayında: Groupbox ın captionına data yazdırın.. en esxitin da ise o groupboxın caption ı boşaltın.. aklıma gelen ilk ve janti çözüm bu oldu Smile

Denedim ama çok basit durdu galiba benim örnek olarak verdiğim resimdeki editler component ile geliyor. Bu editleride hangi component ile yaptıklarını bulamıyorum internette :s
Cevapla
#4
   

 

 TForm1 = class(TForm)
   Edit1: TEdit;
   Label1: TLabel;
   Edit2: TEdit;
   Label2: TLabel;
   procedure Edit1Enter(Sender: TObject);
   procedure Edit1Exit(Sender: TObject);
   procedure Edit2Enter(Sender: TObject);
   procedure Edit2Exit(Sender: TObject);

 private
   { Private declarations }

 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.fmx}

procedure TForm1.Edit1Enter(Sender: TObject);
begin
label1.Text:=edit1.TextPrompt;
edit1.TextPrompt:='';
end;

procedure TForm1.Edit1Exit(Sender: TObject);
begin
if edit1.Text='' then
begin
 edit1.TextPrompt:=label1.Text;
 label1.Text:='';
end;
end;

procedure TForm1.Edit2Enter(Sender: TObject);
begin
label2.Text:=edit2.TextPrompt;
edit2.TextPrompt:='';
end;

procedure TForm1.Edit2Exit(Sender: TObject);
begin
if edit2.Text='' then
begin
 edit2.TextPrompt:=label2.Text;
 label2.Text:='';
end;
end;



Belki işini görür Smile
WWW
Cevapla
#5
(05-03-2021, Saat: 00:39)hbilal42 Adlı Kullanıcıdan Alıntı:
 

 TForm1 = class(TForm)
   Edit1: TEdit;
   Label1: TLabel;
   Edit2: TEdit;
   Label2: TLabel;
   procedure Edit1Enter(Sender: TObject);
   procedure Edit1Exit(Sender: TObject);
   procedure Edit2Enter(Sender: TObject);
   procedure Edit2Exit(Sender: TObject);

 private
   { Private declarations }

 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.fmx}

procedure TForm1.Edit1Enter(Sender: TObject);
begin
label1.Text:=edit1.TextPrompt;
edit1.TextPrompt:='';
end;

procedure TForm1.Edit1Exit(Sender: TObject);
begin
if edit1.Text='' then
begin
 edit1.TextPrompt:=label1.Text;
 label1.Text:='';
end;
end;

procedure TForm1.Edit2Enter(Sender: TObject);
begin
label2.Text:=edit2.TextPrompt;
edit2.TextPrompt:='';
end;

procedure TForm1.Edit2Exit(Sender: TObject);
begin
if edit2.Text='' then
begin
 edit2.TextPrompt:=label2.Text;
 label2.Text:='';
end;
end;



Belki işini görür Smile

Bunu denedim ama malesef buda olmadı. Yardımın için teşekkürler.
Cevapla
#6
@glagher FMX Style konusunu bir araştırın isterseniz. Grafik özellikler style ile kazandırılır. İlla ki üçüncü parti bir bileşen olmak zorunda değil.

Neden bahsettiğimi anlatmak için bir örnek hazırladım. Bunu geliştirebilirsiniz.

* Projedenin kaynak kodları ile oluşturduğum örnek style dosya bu mesaj ekindedir.
 
* Style dosyası örnekte görüldüğü üzere projenizin EXE klasöründen aranır, bunu RESOURCE olarak EXE içine (yerel bir StyleBook ile ) gömmek isteyebilirsiniz. Örnek olarak açık gönderdim. 

* Atamalar da manuel yapıldı ki style nesnelerine erişim nasıl yapılır konusu anlaşılır olsun diye...

dsfhw0vjk1e9sbr8x5vl.gif


Uses FMX.Styles.Objects, FMX.Objects;

Var
  FStyleBook : TStylebook;

procedure TForm1.EditBoxHazirla;
var
  FMXObject : TFMXObject;
begin
  // Edit'lerin TextPrompt, Font vb. varsayılanları yazalım...
    Edit1.Font.Size := 16;
    Edit1.Height    := 30;
    Edit1.TextPrompt  := 'TC Kimlik Numaranızı Giriniz';
    Edit1.Text := '';
    Edit1.OnKeyUp     := Edit1KeyUP;
    Edit1.OnEnter     := Edit1Enter;
    Edit1.OnExit      := Edit1Exit;

    Edit2.Font.Size := 16;
    Edit2.Height    := 30;
    Edit2.TextPrompt := 'Vergi Kimlik Numaranızı Giriniz';
    Edit2.Text := '';
    Edit2.OnKeyUp     := Edit1KeyUP;
    Edit2.OnEnter     := Edit1Enter;
    Edit2.OnExit      := Edit1Exit;

  // StyleBook hazırlığı...
    if NOT Assigned(FStyleBook) then
      FStyleBook := TStylebook.Create(nil);

    FStyleBook.FileName := ExtractFilePath(ParamStr(0)) + 'EditCustom.style';
    Form1.StyleBook     := FStyleBook;
    Edit1.StyleLookup   := 'Editstyle_Custom';
    Edit2.StyleLookup   := 'Editstyle_Custom';

  // Style'deki Başlıkları boşaltalım...
    FMXObject := Edit1.FindStyleResource( 'StyBaslikYazi' );
    if  ( FMXObject <> nil )
    then FMX.Styles.Objects.TActiveStyleTextObject( FMXObject ).Text := '';

    FMXObject := Edit1.FindStyleResource( 'StyBaslikRect' );
    if  ( FMXObject <> nil )
    then FMX.Styles.Objects.TActiveStyleTextObject( FMXObject ).Visible := false;

    FMXObject := Edit2.FindStyleResource( 'StyBaslikYazi' );
    if  ( FMXObject <> nil )
    then FMX.Styles.Objects.TActiveStyleTextObject( FMXObject ).Text := '';

    FMXObject := Edit2.FindStyleResource( 'StyBaslikRect' );
    if  ( FMXObject <> nil )
    then FMX.Styles.Objects.TActiveStyleTextObject( FMXObject ).Visible := false;
end;

procedure TForm1.FormShow(Sender: TObject);
begin
  EditBoxHazirla();
end;

procedure TForm1.Edit1Enter(Sender: TObject);
var
  FMXObject : TFMXObject;
begin
  FMXObject := TEdit(Sender).FindStyleResource( 'Roundrect1' );
  if  ( FMXObject <> nil )
  then FMX.Objects.TRoundRect( FMXObject ).Stroke.Color := TAlphaColors.Coral;
end;

procedure TForm1.Edit1Exit(Sender: TObject);
var
  FMXObject : TFMXObject;
begin
  FMXObject := TEdit(Sender).FindStyleResource( 'Roundrect1' );
  if  ( FMXObject <> nil )
  then FMX.Objects.TRoundRect( FMXObject ).Stroke.Color := TAlphaColors.Cadetblue;
end;

procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word; var KeyChar: Char;
  Shift: TShiftState);
var
  FMXObject : TFMXObject;
begin
  if TEdit(Sender).Text = '' then begin
    FMXObject := TEdit(Sender).FindStyleResource( 'StyBaslikRect' );
    if  ( FMXObject <> nil )
    then FMX.Styles.Objects.TActiveStyleTextObject( FMXObject ).Visible := False;

    FMXObject := TEdit(Sender).FindStyleResource( 'StyBaslikYazi' );
    if  ( FMXObject <> nil )
    then begin
      FMX.Styles.Objects.TActiveStyleTextObject( FMXObject ).Text := '';
    end;
  end else begin
    FMXObject := TEdit(Sender).FindStyleResource( 'StyBaslikRect' );
    if  ( FMXObject <> nil )
    then FMX.Styles.Objects.TActiveStyleTextObject( FMXObject ).Visible := True;

    FMXObject := TEdit(Sender).FindStyleResource( 'StyBaslikYazi' );
    if  ( FMXObject <> nil )
    then begin
      FMX.Styles.Objects.TActiveStyleTextObject( FMXObject ).Text := TEdit(Sender).TextPrompt;
      FMX.Styles.Objects.TActiveStyleTextObject( FMXObject ).Font := TEdit(Sender).Font;
    end;
  end;
end;



Ek Dosyalar
.zip   FMX_EditStyle.zip (Dosya Boyutu: 31,29 KB / İndirme Sayısı: 24)
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla
#7
(06-03-2021, Saat: 11:22)mrmarman Adlı Kullanıcıdan Alıntı: @glagher FMX Style konusunu bir araştırın isterseniz. Grafik özellikler style ile kazandırılır. İlla ki üçüncü parti bir bileşen olmak zorunda değil.

Neden bahsettiğimi anlatmak için bir örnek hazırladım. Bunu geliştirebilirsiniz.

* Projedenin kaynak kodları ile oluşturduğum örnek style dosya bu mesaj ekindedir.
 
* Style dosyası örnekte görüldüğü üzere projenizin EXE klasöründen aranır, bunu RESOURCE olarak EXE içine (yerel bir StyleBook ile ) gömmek isteyebilirsiniz. Örnek olarak açık gönderdim. 

* Atamalar da manuel yapıldı ki style nesnelerine erişim nasıl yapılır konusu anlaşılır olsun diye...

dsfhw0vjk1e9sbr8x5vl.gif


Uses FMX.Styles.Objects, FMX.Objects;

Var
  FStyleBook : TStylebook;

procedure TForm1.EditBoxHazirla;
var
  FMXObject : TFMXObject;
begin
  // Edit'lerin TextPrompt, Font vb. varsayılanları yazalım...
    Edit1.Font.Size := 16;
    Edit1.Height    := 30;
    Edit1.TextPrompt  := 'TC Kimlik Numaranızı Giriniz';
    Edit1.Text := '';
    Edit1.OnKeyUp     := Edit1KeyUP;
    Edit1.OnEnter     := Edit1Enter;
    Edit1.OnExit      := Edit1Exit;

    Edit2.Font.Size := 16;
    Edit2.Height    := 30;
    Edit2.TextPrompt := 'Vergi Kimlik Numaranızı Giriniz';
    Edit2.Text := '';
    Edit2.OnKeyUp     := Edit1KeyUP;
    Edit2.OnEnter     := Edit1Enter;
    Edit2.OnExit      := Edit1Exit;

  // StyleBook hazırlığı...
    if NOT Assigned(FStyleBook) then
      FStyleBook := TStylebook.Create(nil);

    FStyleBook.FileName := ExtractFilePath(ParamStr(0)) + 'EditCustom.style';
    Form1.StyleBook     := FStyleBook;
    Edit1.StyleLookup   := 'Editstyle_Custom';
    Edit2.StyleLookup   := 'Editstyle_Custom';

  // Style'deki Başlıkları boşaltalım...
    FMXObject := Edit1.FindStyleResource( 'StyBaslikYazi' );
    if  ( FMXObject <> nil )
    then FMX.Styles.Objects.TActiveStyleTextObject( FMXObject ).Text := '';

    FMXObject := Edit1.FindStyleResource( 'StyBaslikRect' );
    if  ( FMXObject <> nil )
    then FMX.Styles.Objects.TActiveStyleTextObject( FMXObject ).Visible := false;

    FMXObject := Edit2.FindStyleResource( 'StyBaslikYazi' );
    if  ( FMXObject <> nil )
    then FMX.Styles.Objects.TActiveStyleTextObject( FMXObject ).Text := '';

    FMXObject := Edit2.FindStyleResource( 'StyBaslikRect' );
    if  ( FMXObject <> nil )
    then FMX.Styles.Objects.TActiveStyleTextObject( FMXObject ).Visible := false;
end;

procedure TForm1.FormShow(Sender: TObject);
begin
  EditBoxHazirla();
end;

procedure TForm1.Edit1Enter(Sender: TObject);
var
  FMXObject : TFMXObject;
begin
  FMXObject := TEdit(Sender).FindStyleResource( 'Roundrect1' );
  if  ( FMXObject <> nil )
  then FMX.Objects.TRoundRect( FMXObject ).Stroke.Color := TAlphaColors.Coral;
end;

procedure TForm1.Edit1Exit(Sender: TObject);
var
  FMXObject : TFMXObject;
begin
  FMXObject := TEdit(Sender).FindStyleResource( 'Roundrect1' );
  if  ( FMXObject <> nil )
  then FMX.Objects.TRoundRect( FMXObject ).Stroke.Color := TAlphaColors.Cadetblue;
end;

procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word; var KeyChar: Char;
  Shift: TShiftState);
var
  FMXObject : TFMXObject;
begin
  if TEdit(Sender).Text = '' then begin
    FMXObject := TEdit(Sender).FindStyleResource( 'StyBaslikRect' );
    if  ( FMXObject <> nil )
    then FMX.Styles.Objects.TActiveStyleTextObject( FMXObject ).Visible := False;

    FMXObject := TEdit(Sender).FindStyleResource( 'StyBaslikYazi' );
    if  ( FMXObject <> nil )
    then begin
      FMX.Styles.Objects.TActiveStyleTextObject( FMXObject ).Text := '';
    end;
  end else begin
    FMXObject := TEdit(Sender).FindStyleResource( 'StyBaslikRect' );
    if  ( FMXObject <> nil )
    then FMX.Styles.Objects.TActiveStyleTextObject( FMXObject ).Visible := True;

    FMXObject := TEdit(Sender).FindStyleResource( 'StyBaslikYazi' );
    if  ( FMXObject <> nil )
    then begin
      FMX.Styles.Objects.TActiveStyleTextObject( FMXObject ).Text := TEdit(Sender).TextPrompt;
      FMX.Styles.Objects.TActiveStyleTextObject( FMXObject ).Font := TEdit(Sender).Font;
    end;
  end;
end;

Çok teşekkür ederim yardımlarınız için. Çok işime yaradı.
Cevapla
#8
Walla hocam Style olayı sıkıntılı. Crash olmalar, siyah ekranlar... Ben 10.3 ve eski versiyonlarda bir kaç projemde kullandım bu sorunları yaşadım özellikle farklı cihaz deneyimlerimde.

Yeni versiyonlarda düzeltildi mi bilmiyorum ama eskilerde çok crashler vardı.
// Bilgi paylaştıkça çoğalır.. 

Cevapla
#9
Style kullanmadan fmx deneyimi verimi düşük kalıyor.
VCL tarafını beğenerek kullanmalı, FMX'de de Style konusunda kayıtsız kalmamalı.
Örnek az olduğundan el yordamı ile yürüyor.

Mesela TFontObject gibi bazı nesneler style içinde var ama register edilmediği için dışarıdan erişim kısıtlı. Daha beta aşaması bitmeden aceleye gelmiş olduğu açık.

Tasarım ekranı benzeri bug dolu bunu kabul ediyorum.
 
Tasarım ekranı konusunda kendi çalışmam var, mini bir ide onu geliştirme aşamasındayım. Olgunlaşırsa armandroid Splash tool gibi paylaşabilirim.
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla
#10
(06-03-2021, Saat: 21:11)mrmarman Adlı Kullanıcıdan Alıntı: ... armandroid ...

İsim (ya da soyisim) "an" ile bitince android ile tamamlamak çok güzel olmuş. İsim (hatta soyisim) olarak az biraz şanslıyım sanırım Tongue
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Türkçe Text To Speech yasaroguz332 2 423 15-12-2023, Saat: 16:30
Son Yorum: yasaroguz332
Question Android için AES şifreleme yardım ? Mr.Developer 15 11.436 02-07-2022, Saat: 21:54
Son Yorum: JavaCiva
Question speech recognition yardım ! Mr.Developer 21 15.608 24-12-2021, Saat: 19:36
Son Yorum: Jakarta2
  Buton rengine göre text font rengini ayarlamak tmrksmt 4 1.054 23-10-2021, Saat: 12:47
Son Yorum: tmrksmt
  Ios TLS OpenSSL Hakında Yardım glagher 0 363 21-08-2021, Saat: 19:18
Son Yorum: glagher



Konuyu Okuyanlar: 1 Ziyaretçi