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 ?
Kısıtlanabilir DBEdit
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Re: Kısıtlanabilir DBEdit
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.
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.
Re: Kısıtlanabilir DBEdit
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.
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.
Re: Kısıtlanabilir DBEdit
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.
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.