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?
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
(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
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
@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...
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;
(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...
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ı.
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ı.
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.