PDA

View Full Version : كدنويسي روي دكمه هاي dbnavigator



lovelygirl
دوشنبه 11 آبان 1388, 09:05 صبح
من ميخوام روي هر كدوم از دكمه هاي dbnavigator يه كد بنويسم مثلا براي post ميخوام بنويسم اگه فيلدي خالي بود پيغام خطا بده كه فيلدهاي خالي را پر كنيد بعد تغييرات را ذخيره كنيد چطوري ميشه رو دكمه هاش كدنويسي كرد؟

Mahmood_M
دوشنبه 11 آبان 1388, 11:34 صبح
ADOTable یا سایر کامپوننتهای بانک اطلاعاتی خصوصیاتی مثل BeforePost یا BeforeInsert یا BeforeDelete یا ... دارن که می تونید توی این رویدادها کدنویسی کنید ...
البته بهتره از dbNavigator استفاده نکنید و خودتون دکمه هاش رو ایجاد کنید ، اینطوری خیلی بهتر می تونید برنامه رو مدیریت کنید ...
به هر حال ، اگه حتما باید از dbNavigator استفاده کنید به اینجا مراجعه کنید : Customizing The DBNavigator (http://delphi.about.com/od/usedbvcl/l/aa090203a.htm)

موفق باشید ...

lovelygirl
دوشنبه 11 آبان 1388, 12:37 عصر
ADOTable یا سایر کامپوننتهای بانک اطلاعاتی خصوصیاتی مثل BeforePost یا BeforeInsert یا BeforeDelete یا ... دارن که می تونید توی این رویدادها کدنویسی کنید ...
البته بهتره از dbNavigator استفاده نکنید و خودتون دکمه هاش رو ایجاد کنید ، اینطوری خیلی بهتر می تونید برنامه رو مدیریت کنید ...
به هر حال ، اگه حتما باید از dbNavigator استفاده کنید به اینجا مراجعه کنید : Customizing The DBNavigator (http://delphi.about.com/od/usedbvcl/l/aa090203a.htm)

موفق باشید ...

navagator همچنين خصوصيتي نداره اون سايتي رو هم كه دادين همش انگليسيه سر در نياوردم
ميشه بيشتر راهنمايي كنيد كارم خيلي گيره:افسرده:

merced
دوشنبه 11 آبان 1388, 15:01 عصر
رويداد OnClick كامپوننت Navigator يه پارامتر ورودي داره به اسم Button كه مي توني توش بنويسي



if Button = nbFirst then ...


ولي در تاييد گفته آقاي محمود از اين استفاده نكنيد بهتره.

lovelygirl
دوشنبه 11 آبان 1388, 15:12 عصر
رويداد OnClick كامپوننت Navigator يه پارامتر ورودي داره به اسم Button كه مي توني توش بنويسي



if Button = nbFirst then ...


ولي در تاييد گفته آقاي محمود از اين استفاده نكنيد بهتره.


آخه مديرعاملمون گير داده حتما بايد از اين استفاده كنم خودمم توش گير كردم
ببينيد مثلا ميخوام تو رويداد post بنويسم اگه مثلا فيلدي خالي بود post نكن اما آخه خوده post كه رويداد click نداره كه ايني شما گفتي درسته فهميدم اما خوب چطوري ايني كه ميخوامو بهش بگم

AmirSky
دوشنبه 11 آبان 1388, 18:09 عصر
می تونی از Case استفاده کنی راحته و اگر تعداد دستورات زیاد بود بعد از " : " از Begin و end استفاده کنی.




procedure TForm1.DBNavigator1Click(Sender: TObject; Button: TNavigateBtn);
begin
case Button of
nbPost : Showmessage('Post');
nbEdit : Showmessage('Edit');
end;
end;

در ضمن باید یاد آور بشم که استفاده از این کامپوننت کارایی و راحتی و زیبایی یک نرم افزار رو پایین میاره .

lovelygirl
سه شنبه 12 آبان 1388, 08:54 صبح
می تونی از Case استفاده کنی راحته و اگر تعداد دستورات زیاد بود بعد از " : " از Begin و end استفاده کنی.




procedure TForm1.DBNavigator1Click(Sender: TObject; Button: TNavigateBtn);
begin
case Button of
nbPost : Showmessage('Post');
nbEdit : Showmessage('Edit');
end;
end;

در ضمن باید یاد آور بشم که استفاده از این کامپوننت کارایی و راحتی و زیبایی یک نرم افزار رو پایین میاره .


ايني كه شما گفتي واسه اينه كه وقتي مثلا post زده شده پيغام بده من اينو نميخوام من چند تا edit box دارم ميخوام توش اطلاعات وارد كنم ميخوام اگه تو هر كدوم از اين باكس ها اطلاعاتي وارد نشد هنگام post كردن پيغام بده كه باكس هاي خالي رو پر كنيد:عصبانی++:

Mahmood_M
سه شنبه 12 آبان 1388, 12:07 عصر
همونطور که گفتم باید از رویداد های BeforePost یا BeforInsert استفاده کنید ، مثلا در رویداد BeforeInsert این کد رو بنویسید :
procedure TMainFrm.ADOTableBeforeInsert(DataSet: TDataSet);
begin
if Form2.Edit1.Text = '' then
Abort;
end;
در کد بالا اگر Edit1 خالی بود ، عملیات Cancel میشه ...
دستور Abort عملیات رو Cancel میکنه !
توی همین رویداد می تونید مثلا یک پیغام هم نمایش بدید :
procedure TMainFrm.ADOTableBeforeInsert(DataSet: TDataSet);
begin
if Form2.Edit1.Text = '' then
begin
ShowMessage('لطفا اطلاعات خواسته شده را به صورت کامل وارد نمایید');
Abort;
end;
end;
اگر از BeforPost استفاده کنید به جای Abort می تونید از DataSet.Cancel هم استفاده کنید :
procedure TMainFrm.ADOTableBeforePost(DataSet: TDataSet);
begin
if NewFrm.LoginDate.Text = '' then
begin
ShowMessage('لطفا اطلاعات خواسته شده را به صورت کامل وارد نمایید');
DataSet.Cancel;
end;
end;
توجه کنید که این رویدادها مربوط به بانک اطلاعاتی هست ( مثلا ADOTable ) ، نه خود dbNavigator ...

موفق باشید ...

lovelygirl
سه شنبه 12 آبان 1388, 12:22 عصر
همونطور که گفتم باید از رویداد های BeforePost یا BeforInsert استفاده کنید ، مثلا در رویداد BeforeInsert این کد رو بنویسید :
procedure TMainFrm.ADOTableBeforeInsert(DataSet: TDataSet);
begin
if Form2.Edit1.Text = '' then
Abort;
end;
در کد بالا اگر Edit1 خالی بود ، عملیات Cancel میشه ...
دستور Abort عملیات رو Cancel میکنه !
توی همین رویداد می تونید مثلا یک پیغام هم نمایش بدید :
procedure TMainFrm.ADOTableBeforeInsert(DataSet: TDataSet);
begin
if Form2.Edit1.Text = '' then
begin
ShowMessage('لطفا اطلاعات خواسته شده را به صورت کامل وارد نمایید');
Abort;
end;
end;
اگر از BeforPost استفاده کنید به جای Abort می تونید از DataSet.Cancel هم استفاده کنید :
procedure TMainFrm.ADOTableBeforePost(DataSet: TDataSet);
begin
if NewFrm.LoginDate.Text = '' then
begin
ShowMessage('لطفا اطلاعات خواسته شده را به صورت کامل وارد نمایید');
DataSet.Cancel;
end;
end;
توجه کنید که این رویدادها مربوط به بانک اطلاعاتی هست ( مثلا ADOTable ) ، نه خود dbNavigator ...

موفق باشید ...

اينا رو بايد كجا بنويسم؟روي dbNavigator؟روي ADOTable كه نميشه كد نويسي كرد؟:افسرده:

Mahmood_M
سه شنبه 12 آبان 1388, 12:58 عصر
چرا روی ADOTable نمیشه کد نویسی کرد ؟
روی ADOTable کلید کنید ، در سمت چپ دلفی در پنجره ی Object Inspector به بخش Events برید ، در اونجا می تونید رویداد های BeforeInsert و BeforePost و ... رو مشاهده کنید ...

موفق باشید ...

lovelygirl
سه شنبه 12 آبان 1388, 13:06 عصر
چرا روی ADOTable نمیشه کد نویسی کرد ؟
روی ADOTable کلید کنید ، در سمت چپ دلفی در پنجره ی Object Inspector به بخش Events برید ، در اونجا می تونید رویداد های BeforeInsert و BeforePost و ... رو مشاهده کنید ...

موفق باشید ...

اينكارو كردم جواب نداد
يعني باكسمو خالي گذاشتم و post كردم پيغام خطايي نداد و همونطوري post كرد
ميشه بگين اشكالم كجاست؟

Mahmood_M
سه شنبه 12 آبان 1388, 13:22 عصر
کدی که نوشتید رو در اینجا قرار بدید ...

lovelygirl
سه شنبه 12 آبان 1388, 13:25 عصر
کدی که نوشتید رو در اینجا قرار بدید ...


خوب همين كدي رو كه خودتون گذاشتيه بودين رو كپي كردم تو ado table
procedure TMainFrm.ADOTableBeforeInsert(DataSet: TDataSet);
begin
if Form2.Edit1.Text = '' then
begin
ShowMessage('لطفا اطلاعات خواسته شده را به صورت کامل وارد نمایید');
Abort;
end;
end;

Mahmood_M
سه شنبه 12 آبان 1388, 13:34 عصر
من به عنوان مثال یک کد نوشتم ، شما اسم فرمتون که می خواید اطلاعات رو از توش ثبت کنید چیه ؟ Form2 ؟
Edit ای که باید اطلاعات درش وارد بشه اسمش چیه ؟ Edit1 ؟
وقتی خواستید برنامه رو اجرا کنید کامپایلر دلفی از این قسمت Form2.Edit1.Text ایرادی نگرفت ؟!

...

lovelygirl
سه شنبه 12 آبان 1388, 13:43 عصر
من به عنوان مثال یک کد نوشتم ، شما اسم فرمتون که می خواید اطلاعات رو از توش ثبت کنید چیه ؟ Form2 ؟
Edit ای که باید اطلاعات درش وارد بشه اسمش چیه ؟ Edit1 ؟
وقتی خواستید برنامه رو اجرا کنید کامپایلر دلفی از این قسمت Form2.Edit1.Text ایرادی نگرفت ؟!

...
اره بابا اونا رو كه درست كردم اينقدا هم ديگه بيسواد نيستم:لبخند:ولي باز جواب نميده

دلفــي
چهارشنبه 13 آبان 1388, 17:41 عصر
procedure TForm1.ADOQuery1BeforePost(DataSet: TDataSet);
begin
if Trim(DBEdit1.Text) = '' then
DataSet.Cancel;
end;

Mahmood_M
چهارشنبه 13 آبان 1388, 18:31 عصر
اره بابا اونا رو كه درست كردم اينقدا هم ديگه بيسواد نيستمولي باز جواب نميده
شرمنده ! ، خوب منظورم من این بود که دقیقا همون کدی که می نویسید رو قرار بدید ...

...