easyDelphi Q&A
0 تصويتات
42 مشاهدات

ماهو الكود الذي يجب إضافته للمكون Tlogin الذي صممه الأستاذ الفاضل سامر أصيل حتى  تظهر قائمة الحقول للخاصيتين User و Password مع أني جعلت هذه الحقول تأخذ قيمها من متغير من نوع : TFieldDataLink  مثل dbedit فعند فتح  datafield تظهر قائمة الحقول

 

unit LoginUnit;

interface

uses
  SysUtils, Classes, db, DBCtrls, LoginDlgUnit, Controls, Dialogs, Variants;

type
  TLogin = class(TComponent)
  private
    FDataLinkUser: TFieldDataLink;
    FDataLinkPassword: TFieldDataLink;
    function GetUserName: string;
    procedure SetUserName(const Value: string);
    function GetDataSource: TDataSource;
    procedure SetDataSource(const Value: TDataSource);
    function GetPassword: string;
    procedure SetPassword(const Value: string);
    { Private declarations }
  protected
    Dlg: TLoginDlg;
    procedure CheckUser(Sender: TObject);
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    function Execute: boolean;
  published
    property UserName: string read GetUserName write SetUserName;
    property Password: string read GetPassword write SetPassword;
    property DataSource: TDataSource read GetDataSource write SetDataSource;

  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Salem Pallette', [TLogin]);
end;

{ TLogin }

procedure TLogin.CheckUser(Sender: TObject);
begin
  if DataSource.DataSet.Locate(UserName+'; ' + Password
       ,varArrayof([dlg.UserEdit.Text,dlg.PasswordEdit.Text])
                                                        ,[]) then
   Dlg.ModalResult:= mrOk
  else
    begin
      Dlg.ModalResult:= mrNone;
      ShowMessage('Can not login... Please check your user and password');
    end;
end;

constructor TLogin.Create(AOwner: TComponent);
begin
  inherited;
FDataLinkUser:= TFieldDataLink.Create;
FDataLinkPassword:= TFieldDataLink.Create;
end;

destructor TLogin.Destroy;
begin
  FreeAndNil(fdatalinkUser);
  FreeAndNil(fdatalinkPassword);
  inherited;
end;

function TLogin.Execute: boolean;
begin
Dlg:= TLoginDlg.Create(nil);
Dlg.LoginBtn.OnClick:= CheckUser;
if Dlg.ShowModal= mrcancel then 
result:= false
else
result:= true;
Dlg.Free;

end;

function TLogin.GetDataSource: TDataSource;
begin
Result:= FDataLinkUser.DataSource;
end;

function TLogin.GetPassword: string;
begin
Result:= FDataLinkPassword.FieldName;
end;

function TLogin.GetUserName: string;
begin
Result:= FDataLinkUser.FieldName;
end;

procedure TLogin.SetDataSource(const Value: TDataSource);
begin
  if not (FDataLinkUser.DataSourceFixed and (csLoading in ComponentState)) then
    FDataLinkUser.DataSource := Value;
  if not (FDataLinkPassword.DataSourceFixed and (csLoading in ComponentState)) then
    FDataLinkPassword.DataSource := Value;
  if Value <> nil then Value.FreeNotification(Self);


end;

procedure TLogin.SetPassword(const Value: string);
begin
FDataLinkPassword.FieldName:= Value;
end;

procedure TLogin.SetUserName(const Value: string);
begin
FDataLinkUser.FieldName:= Value;
end;

end.

 

سُئل في تصنيف Components بواسطة (120 نقاط) | 42 مشاهدات
 
سؤالك غير واضح ابدا .. ما الذي تحاول عمله ؟ ولماذا ؟
شكرا أستاذ
كل مافي الأمر هو أني أريد عندما أضع المكون Tlogin في الفورم وأحدد له  datasource عند ذلك  تظهر قائمة الحقول في الخاصية UserName وPassword  ومنه أختار الحقل المناسب تماما مثل dropdown list للخاصية datafield للمكون Tdbedit  
الفائدة من ذلك أن أسماء حقول ال dataset تصبح ظاهرة في الخاصية على شكل list يتم من خلالها إختيار الحقل المناسب لتسهيل إستخدام المكون.

بالمناسة جزاك الله خيرا على الفيديوهات في قناتك youtube تعلمت منها الكثير شكرا ثانية

من فضلك سجل دخولك أو قم بتسجيل حساب للإجابة على هذا السؤال

اسئلة متعلقة

+3 تصويتات
1 إجابة
سُئل أغسطس 11 في تصنيف Database بواسطة Amar Gozim (10,490 نقاط) | 99 مشاهدات
+3 تصويتات
2 إجابة
+3 تصويتات
2 إجابة
سُئل أغسطس 30 في تصنيف Delphi بواسطة Yamada Fakir (1,330 نقاط) | 53 مشاهدات
+5 تصويتات
2 إجابة
سُئل أغسطس 3 في تصنيف Components بواسطة KHALED (6,370 نقاط) | 309 مشاهدات
+3 تصويتات
1 إجابة
سُئل أغسطس 11 في تصنيف Delphi بواسطة Amar Gozim (10,490 نقاط) | 41 مشاهدات
ادعُ اصدقائك في الفايسبوك لمشاركتك
Comodo SSL

مرحبًا بك إلى EasyDelphi Q&A، حيث يمكنك طرح الأسئلة والحصول على الإجابة عليها من المستخدمين الآخرين.

لا يسمح بطلب او السؤال عن كراك او تفعيل او كسر او فك او اي شيء يخالف اتفاقيات الترخيص  مهما كان السبب ومهما كان البرنامج ونوعه. ولا حتى نشر روابط تحتوي على مثل هذه الاشياء لا في الاسئلة ولا في الاجابات ولا التعليقات . نهائيا

282 سؤال
487 إجابة
866 تعليق
177 مستخدم