Sayfalar

27 Şubat 2017 Pazartesi

Delphi - Kullanıcı Giriş Ekranı Yapımı


Kullanıcı girişini uygulamalarımızda sadece tanımlı kullanıcılarını kullanmasını istiyorsak kullanabiliriz.
Öncelikle formumuzu
tasarlayalım.



Formumuzda 2 adet edit ve 1 buton yeterli olacaktır. Formunuza ikonlar resimler ekleyerek görselliği ön plana çıkarabilirsiniz.

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;

****************************************************************************

2 yorum:

  1. [dcc32 Error] Project1.dpr(17): E2003 Undeclared identifier: 'mrok' hatası verdi brom

    YanıtlaSil
  2. Tesekkurler cok faydali oldu

    YanıtlaSil