Kullanıcı girişini uygulamalarımızda sadece tanımlı kullanıcılarını kullanmasını istiyorsak kullanabiliriz.
Öncelikle formumuzu
tasarlayalım.
Edit'lerin name özelliğini edKadi ve edSifre olarak değiştirdim. Birden fazla nesne olduğunda karışıklık olmaması için varsayılan name'ini değiştirmemiz kolaylık sağlayacaktır.
Butonumuza kodlarımızı yazalım
if (edKadi.text = '') OR
(edSifre.text = '')
then
Abort; // if koşulu sağlanıyorsa yani alanlar boşsa işlemi durdurur.
Yukarıda eğer kullanıcı adı ve şifre alanları boşsa işlemi durduracak Abort ile devamındaki kodları çalıştırmayacaktır.
Veritabanımızda kullanıcı adı ve şifreyi sorgulayalım;
with dm.ADOQuery1 do // Datamodule içerisindeki adoquery'de aşağıdaki işlemleri yapacak
begin
Close;
SQL.Clear;
SQL.BeginUpdate;
SQL.Add('select k_adi,sifre from kullanici where k_adi = :k_adi and sifre = :sifre');
SQL.EndUpdate;
Parameters.ParamByName('k_adi').Value := trim(edKadi.Text);
Parameters.ParamByName('sifre').Value := trim(edSifre.Text);
Open;
end;
Yukarıda adoquery içerisine sorguyu parametreler kullanarak gönderdik. Bunun sebebi sorgu içerisine nesneleri yazarken ( ' , " ) tırnak işaretleri kullanarak karmaşıklık olmasını önlemek. edKadi ve edSifre nesnelerinin değerlerini parametreye attık ve sorgu içerisinde parametre ile yazılan kullanıcı adı ve şifreyi gönderdik.
if dm.ADOQuery1.RecordCount > 0 then
begin
frmAnaForm.Show;
ModalResult := mrOk;
end
else
begin
ShowMessage('Kullanıcı adı veya şifre yanlış!');
ModalResult :=mrNone;
end;
Eğer ADOQuery nesnesinden dönen sorguda kayıt varsa AnaFormu göster ve mrOK değerini gönder. Kayıt yoksa mesaj verdirir.
Şimdi mrOK değerini göndereceği bölüme gelelim. Proje çalıştırılırken formlar sırayla oluşur ve en son run komutu verilir. Biz Kullanıcı Girişi formumuzu Ana Form gelmeden göstermek istiyorsak Ana Form gösterilmeden bu formu oluşturmalı ve mrOK değeri gelirse göstermeliyiz.
Project menüsünden View Source seçeneğine tıklayalım. Aşağıdaki kod satırlarını görüyoruz.
begin
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TDm, Dm);
Application.CreateForm(TfrmAnaForm, frmAnaForm);
Application.CreateForm(TfrmGiris, frmGiris);
if frmGiris.ShowModal<>mrOk then Application.Terminate;
frmGiris.Free;
Application.Run;
end.
Yukarıda Dm, AnaForm ve Giris formları sırayla oluşturuluyor. Application.Run; komutundan önce bir koşul yazıyoruz. Giriş formunu göster mrOK' tan farklı değer gelirse uygulamayı sonlandır. Değilse mrOK değeri gelmiş demektir. ve giris formunu free metodu ile serbest bırakacaktır.
Giriş butonundaki kodların birleştirilmiş hali ;
begin
if (edKadi.text = '') OR
(edSifre.text = '')
then
Abort; // if koşulu sağlanıyorsa yani alanlar boşsa işlemi durdurur.
with dm.ADOQuery1 do // Datamodule içerisindeki adoquery'de aşağıdaki işlemleri yapacak
begin
Close;
SQL.Clear;
SQL.BeginUpdate;
SQL.Add('select k_adi,sifre from kullanici where k_adi = :k_adi and sifre = :sifre');
SQL.EndUpdate;
Parameters.ParamByName('k_adi').Value := trim(edKadi.Text);
Parameters.ParamByName('sifre').Value := trim(edSifre.Text);
Open;
end;
if dm.ADOQuery1.RecordCount > 0 then
begin
frmAnaForm.Show;
ModalResult := mrOk;
end
else
begin
ShowMessage('Kullanıcı adı veya şifre yanlış!');
ModalResult :=mrNone;
end;
end;
****************************************************************************
[dcc32 Error] Project1.dpr(17): E2003 Undeclared identifier: 'mrok' hatası verdi brom
YanıtlaSilTesekkurler cok faydali oldu
YanıtlaSil