(15-07-2020, Saat: 10:21)mrmarman Adlı Kullanıcıdan Alıntı: Kahvaltımı yaptım, bir örnek hazırladım.
type TForm1 = class(TForm) Image1: TImage; Edit1: TEdit; Button1: TButton; procedure FormCreate(Sender: TObject); procedure Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Single); procedure Edit1KeyDown(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState); procedure Button1Click(Sender: TObject); private procedure LabelClick(sender: TObject); procedure NewOrUpdateLabel(aIdx: Integer); { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.fmx} var LabelArray : Array Of TLabel; procedure TForm1.FormCreate(Sender: TObject); begin Edit1.Visible := False; Edit1.Tag := -1; end; procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Single); begin if Edit1.Visible then Exit; Edit1.Text := ''; Edit1.Position.X := TImage(Sender).Position.X + X; Edit1.Position.Y := TImage(Sender).Position.Y + Y - Edit1.Height; Edit1.Visible := True; Edit1.SetFocus; end; procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState); begin if Key = vkReturn then begin Key := $0; NewOrUpdateLabel( TEdit(sender).Tag ); Edit1.Tag := -1; Button1Click(nil); end; end; procedure TForm1.LabelClick( sender: TObject ); begin Edit1.Position.X := TLabel(Sender).Position.X + Image1.Position.X; Edit1.Position.Y := TLabel(Sender).Position.Y + Image1.Position.Y; Edit1.Text := TLabel(Sender).Text; Edit1.Tag := TLabel(Sender).Tag; Edit1.Visible := True; Edit1.SetFocus; end; procedure TForm1.NewOrUpdateLabel( aIdx: Integer ); var idx : Integer; begin if aIdx >= 0 then idx := aIdx else begin if high( LabelArray ) < 0 then SetLength( LabelArray, 1 ) else SetLength( LabelArray, high( LabelArray ) + 1 + 1 ); // high is the last value, not count. idx := high( LabelArray ); LabelArray[idx] := TLabel.Create(nil); LabelArray[idx].Parent := Image1; LabelArray[idx].Position.X := Edit1.Position.X - Image1.Position.X; LabelArray[idx].Position.Y := Edit1.Position.Y - Image1.Position.Y; LabelArray[idx].Cursor := crHandPoint; LabelArray[idx].HitTest := True; LabelArray[idx].Tag := idx; LabelArray[idx].OnClick := LabelClick; LabelArray[idx].Visible := True; end; LabelArray[idx].Text := Edit1.Text; end; procedure TForm1.Button1Click(Sender: TObject); begin Edit1.Visible := False; // this is "Image Text Settings" PopUp place holder / button. end;
büyütmek için tıklayın...
Elinize emeğinize sağlık, Güzel bir örnek olmuş çok güzel bir şekilde anlatmışsınız.
(15-07-2020, Saat: 10:36)uparlayan Adlı Kullanıcıdan Alıntı: Arkadaş sanırım TEdit nesnesinin zemin ve kenar çizgileri görünmeden bu işi nasıl yaparım diye soruyor üstat.
Teşekkür ederim.
(15-07-2020, Saat: 11:01)Mr.Developer Adlı Kullanıcıdan Alıntı: Merhaba,
Tedit'i altındaki arka plan çizgisi yüzünden hiçe atmak olmaz.
basit bir örnek ; tek yaptığım Tedit bileşeninin arka plan çizgisini kaldırmak...
Böyle bir sonuç almak istiyor iseniz Tedit bileşenine sağ tıklayıp Edit default style ya da edit custom style seçeneklerinden birini seçin. ( custom : sadece o edit için geçerli )
Ardından Strucature menüsünden editstyle bölümünün altındaki background alanına tıklayıp object inspector kısmından visible := false yapın.
Daha sonra ortadaki alanın üst barında bulunan apple style ( Play butonu görünümlü )
alanına basıp style designer'ı kapatın ve onaylayın.
Tüm yapmanız gereken bu kadar...
Gerisi Tedit bileşenini parmağınız ile dokunduğunuz alanda var etmek.
Düzenleme için de ekstra bir gereksinim olmayacaktır sanırım...
edit custom style seçeneklerinden birini seçin. ( custom : sadece o edit için geçerli ) Tekbir edit konusunu çözememiştim bu konu kafama takılıyordu teşekkür ederim.