تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
هل من الممكن إغلاق نافذة تسجيل الدخول دون إغلاق المشروع ؟
#2
فورم تسجيل الدخول في العادة يكون أول فورم يبدأ به تشغيل البرنامج ، ولذلك لو أغلقته حتماً سيتم غلق البرنامج ككل.

الحل أنك تخفيه فبل استدعاء الشاشة الرئيسية.

وفي حدث

كود :
FormCloseQuery(Sender: TObject; var CanClose: Boolean);

للفورم الرئيسي، قم بإظهار رسالة تتأكد من قرار المستخدم هل يريد فعلا إغلاق البرنامج أم لا.

في حالة قرر الإغلاق، اكتب:

كود :
Application.Terminate;

وقبلها في زر الإغلاق اكتب:

كود :
Close;

التسلسل في تنفيذ الأحداث بيكون أولا برمجة الزر الخاص بالإغلاق، ثم يتبعه الحدث CloseQuery الخاص بالفورم.

إذا اختار المستخدم أن لا يغلق البرنامج، فاجعل قيمة البارامتر CanClose =

كود :
CanClose := False;

وإلا

كود :
CanClose := True;
Application.Terminate;


وهذا مثال (من لازاروس):

كود :
procedure TFMain.FormCloseQuery(Sender: TObject; var CanClose: boolean);
var
   user, pass, database, dir, Target_File_Name :String;
   Backup_Counter:Integer;
begin
     FConfirm.TMessage.Caption:= Sys_User_Name + '.. ' + 'هل تريد تسجيل الخروج من النظام؟';
     FConfirm.ShowModal;

     if FConfirm.Confirmation_ID = 0 then
     begin
          CanClose:= false;
          exit;
     end
     else
     begin

       begin
            user :=conn.UserName;
            pass :=conn.Password;
            database:=conn.DatabaseName;
            dir := application.Location;


            // get counter
            OpQuery.close;
            OpQuery.DataBase:=fmain.conn;
            OpQuery.Close;
            OpQuery.SQL.Text:='SELECT Backup_Counter FROM backup_counter WHERE ID=1';
            OpQuery.Open;

            opDataSource.DataSet:=OpQuery;

            // 2- invoice number +1
            Backup_Counter:=opDataSource.DataSet.FieldByName('Backup_Counter').AsInteger + 1;

            Target_File_Name:=application.Location + 'dumps\'  + inttostr(Backup_Counter) +'.sql';

            // update counter
            OpQuery.Close;
            OpQuery.SQL.Text:='UPDATE backup_counter SET Backup_Counter=:Backup_Counter WHERE ID=1';
            OpQuery.ParamByName('Backup_Counter').AsInteger:=Backup_Counter;
            OpQuery.ExecSQL;
            Trans.Commit;

            //showmessage(Target_File_Name);

            if pass<>'' then pass:=' --password='+pass;
            SetEnvironmentVariable(PChar('Path'),PChar(Dir));
            ShellExecute(Handle, 'open', PChar('cmd.exe'),
            pchar('/c mysqldump --user='+user+pass+ ' ' +database+' >"'+Target_File_Name+'"'),nil,0);

       conn.Close(true);
       Application.Terminate;
     end;

     end;
end;
الرد }}}
تم الشكر بواسطة: asemshahen5 , سعود , حريف برمجة , حريف برمجة


الردود في هذا الموضوع
RE: هل من الممكن إغلاق نافذة تسجيل الدخول دون إغلاق الشروع ؟ - بواسطة أبوبكر سويدان - 20-06-19, 10:21 PM


التنقل السريع :


يقوم بقرائة الموضوع: