Kısıtlanabilir DBEdit

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
nevzatc
Üye
Mesajlar: 4
Kayıt: 19 Kas 2018 11:24

Kısıtlanabilir DBEdit

Mesaj gönderen nevzatc »

Arkadaşlar Merhaba

DBEdit içerisine veritabanından gelen verinin belli bir kısmının editlenebilir ve silinebilir olmasını istiyorum, örneğin veritabanından E-Mail : abcdefg@abcdefg.com şeklinde gelen data DBEdit içerisinde görüntülensin fakat kullanıcı sadece : dan sonrasında değiştirme silme işlemi yapabilsin istiyorum, ne yapılabilir ?
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7603
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Re: Kısıtlanabilir DBEdit

Mesaj gönderen mussimsek »

Merhaba,

Veritabanında tüm mail saklanıyorsa, normal TEdit ve TLabel koyun. Edit''e değiştirilebilir kısmını, hemen yanındaki label'a da değiştirilemeyecek kısmı koyun.

abcdefg -> Edit'te
@abcdefg.com -> label'da.

Kullanıcı düzeltince de birleştirip, veritabanına kayıt edersiniz.

Kolay gelsin.
nevzatc
Üye
Mesajlar: 4
Kayıt: 19 Kas 2018 11:24

Re: Kısıtlanabilir DBEdit

Mesaj gönderen nevzatc »

Aslında mail örnek olması içindi, gerçekte olay şu şekilde, hesap planında bu 3 hesap var
100
100.01
100.01.001
normalde ikinci (.) ya kadar olan kısmı kesip label da kalan 001 i edit içinde görüntületip çözüm sağlanabilir fakat ben 100.01.001 verisini dbedit ile veritabanından değişiklik için aldığımda 100.01.001 görülmesini seçilebilmesini istiyorum fakat kullanıcı sadece sondaki 001 kısmında değişiklik yapabilsin istiyorum.
nevzatc
Üye
Mesajlar: 4
Kayıt: 19 Kas 2018 11:24

Re: Kısıtlanabilir DBEdit

Mesaj gönderen nevzatc »

Tamda istediğim şekilde çözüme ulaştım teşekkür ederim.

unit Unit1;

interface

uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
TForm1 = class(TForm)
Edit1: TEdit;
procedure FormCreate(Sender: TObject);
procedure Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

DotPos: integer;
Col: integer;

implementation

{$R *.dfm}

procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
Col := Edit1.SelStart - SendMessage(Edit1.Handle, EM_LINEINDEX, 0, 0);

if (Col+1) <= dotpos then
if Key = VK_DELETE then
Key := 0;
end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if (Key in ['.']) then
Key := #0;

if (Col <= dotpos) AND ( ( Ord(Key) = VK_BACK ) or ( Ord(Key) = VK_RETURN ) ) then
Key := #0;

if (Col+1 <= dotpos) then
Key := #0;
end;

procedure TForm1.FormCreate(Sender: TObject);
Var
Text : string;
i: Integer;
begin
Edit1.Text := '100.001.01';

Col := Edit1.SelStart - SendMessage(Edit1.Handle, EM_LINEINDEX, 0, 0);

Text := Edit1.Text;
dotPos:=0;
for i := 1 to Length(TEXT) do
begin
if Text = '.' then
dotPos:=i;
end;

end;

end.
Cevapla