سلام
امروز قصد دارم کد نویسی فرم ها را شروع کنم . امیدوارم تا اینجای پروژه استفاده کرده باشید.
برای شروع لطفا تمام فرم هایی که ساخته اید را باز کرده و در زیر قسمت implementation کد زیر را وارد کنید :
همچنین یونیت WordGame_Namespace را به قسمت Uses اصلی واقع در زیر interface تمام یونیت ها اضافه کنید و تمام فرم ها را ذخیره کرده و ببندید.کد:uses ServerController, UserSessionUnit;
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
یک متغیر عمومی برای نگهداری کد کاربر وارد شده نیاز داریم و باید آن را در UserSessionUnit تعریف کنیم . به قسمت public در یونیت TIWUserSession رفته و متغیر CurrentUserID را مانند کد زیر تعریف کنید :------------------------------------------------------------------------------------------------------------------------------------------------------------------
کد:TIWUserSession = class(TIWUserSessionBase) private { Private declarations } public CurrentUserID: Integer; { Public declarations } end;
فرم ورود (LoginForm) را باز کنید. فرم شما باید شبیه به تصویر زیر باشد.
[برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]
کد زیر را در انتهای فایل LoginUnit.pas قبل از .end وارد کنید.
کد:initialization TLoginForm.SetAsMainForm; end.
دقت کنید که .end (بخوانید end نقطه - این عبارت با ;end (بخوانید end سمیکالن) فرق دارد) که در قسمت کد در سطر آخر آمده است برای راهنمایی شماست . نباید آن را کپی کنید . هر فایل pas فقط یک عبارت .end باید داشته باشد و آن هم در انتهای فایل و سطر آخر آن است.
یونیت های SelectDifficultyLevelUnit و ForgetPasswordUnit و RegisterUnit را به قسمت uses واقع در implementation اضافه کنید.
و Event های OnAsyncClick و OnClick مربوط به IWGradButtonLogin را مانند نمونه زیر کد نویسی نمایید :
همچنین Event های OnClick مربوط به IWLinkForgetPassword و IWLinkRegister را به صورت زیر کد نویسی کنید :
کد:procedure TLoginForm.IWGradButtonLoginAsyncClick(Sender: TObject; EventParams: TStringList); begin inherited; if (Trim(IWEditUsername.Text) = '') or (Trim(IWEditPassword.Text) = '') then WebApplication.ShowMessage('درج نام کاربری و رمز عبور الزامی است') else IWGradButtonLoginClick(Sender); end; procedure TLoginForm.IWGradButtonLoginClick(Sender: TObject); var aUser: TUser; begin inherited; aUser := TUser.Create; aUser.Username := IWEditUsername.Text; aUser.Password := IWEditPassword.Text; aUser := aUser.Login; if aUser <> nil then begin UserSession.CurrentUserID := aUser.UserID; TSelectDifficultyLevelForm.Create(WebApplication).Show; end else WebApplication.ShowMessage('نام کاربری یا رمز عبور نادرست است'); aUser.Free; end;
کد:procedure TLoginForm.IWLinkForgetPasswordClick(Sender: TObject); begin inherited; TForgetPasswordForm.Create(WebApplication).Show; end; procedure TLoginForm.IWLinkRegisterClick(Sender: TObject); begin inherited; TRegisterForm.Create(WebApplication).Show; end;
نکته مهم :
در Event های موجود آنهایی که دارای عبارت Async هستند ، Event های ClientSide هستند و مابقی ServerSide هستند . Event های ClientSide در کامپیوتر کاربر پردازش و اجرا میشوند و Event های SeverSide سمت سرور اجرا میشوند . Event های ClientSide اغلب برای بررسی شرایط یا داده های تولید شده یا ویرایش شده توسط کاربر بکار میروند تا از اعمال بار اضافی روی سرور بکاهند . مثال : در همین فرم Login در کامپوننت IWGradButtonLogin در قسمت OnAsyncClick بررسی میشود که نام کاربری و رمز عبور وارد شده باشند و پس از اطمینان از وجود داده های فوق Event مربوط به OnClick فراخوانی میگردد.
در انتها فایل کد LoginUnit.pas باید به شکل زیر باشد :
کد:unit LoginUnit; interface uses WordGame_Namespace, Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, BaseUnit, IWVCLComponent, IWBaseLayoutComponent, IWBaseContainerLayout, IWContainerLayout, IWTemplateProcessorHTML, IWVCLBaseControl, IWBaseControl, IWBaseHTMLControl, IWControl, IWCompEdit, IWCompGradButton, IWHTMLControls; type TLoginForm = class(TBaseForm) IWEditUsername: TIWEdit; IWEditPassword: TIWEdit; IWLinkForgetPassword: TIWLink; IWLinkRegister: TIWLink; IWGradButtonLogin: TIWGradButton; procedure IWGradButtonLoginClick(Sender: TObject); procedure IWGradButtonLoginAsyncClick(Sender: TObject; EventParams: TStringList); procedure IWLinkForgetPasswordClick(Sender: TObject); procedure IWLinkRegisterClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var LoginForm: TLoginForm; implementation uses ServerController, UserSessionUnit, SelectDifficultyLevelUnit, ForgetPasswordUnit, RegisterUnit; {$R *.dfm} procedure TLoginForm.IWGradButtonLoginAsyncClick(Sender: TObject; EventParams: TStringList); begin inherited; if (Trim(IWEditUsername.Text) = '') or (Trim(IWEditPassword.Text) = '') then WebApplication.ShowMessage('درج نام کاربری و رمز عبور الزامی است') else IWGradButtonLoginClick(Sender); end; procedure TLoginForm.IWGradButtonLoginClick(Sender: TObject); var aUser: TUser; begin inherited; aUser := TUser.Create; aUser.Username := IWEditUsername.Text; aUser.Password := IWEditPassword.Text; aUser := aUser.Login; if aUser <> nil then begin UserSession.CurrentUserID := aUser.UserID; TSelectDifficultyLevelForm.Create(WebApplication).Show; end else WebApplication.ShowMessage('نام کاربری یا رمز عبور نادرست است'); aUser.Free; end; procedure TLoginForm.IWLinkForgetPasswordClick(Sender: TObject); begin inherited; TForgetPasswordForm.Create(WebApplication).Show; end; procedure TLoginForm.IWLinkRegisterClick(Sender: TObject); begin inherited; TRegisterForm.Create(WebApplication).Show; end; initialization TLoginForm.SetAsMainForm; end.
علاقه مندي ها (Bookmarks)