View Full Version : کنترل DBNavigator1
  
davoodmz
دوشنبه 14 فروردین 1385, 12:27 عصر
با سلام
من برای کنترل DBNavigator1 در یکی از  برنامه ها و در یکی از فرمها کد زیر  را می نویسم که خطا می دهد ولی در سایر  فرمها و یا برنامه های دیگر  همان کد را نوشتم و خطایی نمی دهد. لطفاً کمک کنید
کد مربوطه برای کنترل 
 در آن کلیک DBNavigator1:
var
btname:string
begin
if button:=nbfirst then
عملیات مورد نظر
end;
--------------------------------- خطای داده شده
error]unit7.pas[534]:incompatible types:'TnavigateBtn'and'TbsNavigateBtn]
 با تشکر از شما
Mohammad_Mnt
دوشنبه 14 فروردین 1385, 13:36 عصر
کد شما :
if button:=nbfirst then
 
کد صحیح :
if button=nbfirst then
davoodmz
دوشنبه 14 فروردین 1385, 15:17 عصر
ببخشید 
من اشتباه املایی داشتم ولی خطا همچنان باقی است
Mohammad_Mnt
دوشنبه 14 فروردین 1385, 15:58 عصر
خوب مشکل اینه که Type اون دوتا ( button و nbFirst ) یکی نیست !
davoodmz
سه شنبه 15 فروردین 1385, 10:46 صبح
چرا پس در همان برنامه در بعضی از فرمها این کد جواب میدهد بدون هیچ خطایی
من در کل می خواهم که dbnavigator را کنترل کنم 
ضمناً enable کردن یک کلید خاص را نیز بلد نیستم . مثلاً اگر کلید nbpost زده شد کلید nbnext  اینیبلش فالس شود.
با تشکر
Mohammad_Mnt
سه شنبه 15 فروردین 1385, 13:21 عصر
این TbsNavigateBtn چیه ؟ خودتون درست کردین ؟
 
 
مثلاً اگر کلید nbpost زده شد کلید nbnext اینیبلش فالس شود
procedure TForm1.DBNavigator1Click(Sender: TObject; Button: TNavigateBtn);
begin
  if button = nbPost then
    dbnavigator1.VisibleButtons:= dbnavigator1.VisibleButtons-[nbNext];
end;
davoodmz
سه شنبه 15 فروردین 1385, 14:07 عصر
آقا محمد با سلام
(کد بالا ویزیبل می کند یعنی کلید را از بین می برد) 
من می خواهم نویگیتور را کنترل کنم مثلاً اگر  کلید delete را زدم قبلش کدش را نوشتم ولی اصلا عملا نمی کند و نویگیتور کار خودش را انجام می دهد
لطفاً به کد زیر توجه کنید
procedure TForm1.suitempDBNavigator1Click(Sender: TObject; Button: TNavigateBtn);
var
d:integer;
BtnName:string;
begin
if Button=nbdelete then
d:=application.MessageBox('delete the record?','title',mb_yesno);
if d=idyes then
           begin
           DM.Q_gh.Delete;
end;
این کد بالا در button معمولی هیچ مشکلی ندارد ولی در نویگیتور خطا می دهد . اصلا کار خودش را انجام میدهد یعنی رکورد را حذف می کند.
لطفاً اگر کد کامل برای کنترل نویگیتور دارید محبت کنید یا راهنمایی کنید
باتشکر
javidtaheri
سه شنبه 15 فروردین 1385, 23:55 عصر
از ABORT جهت قطع ادامه دستورات استفاده کن
چون با فشردن کلید nbDelete روتین  حلقه شما اجرا و سپس دستور delete اجرا میشود
procedure TForm1.suitempDBNavigator1Click(Sender: TObject; Button: TNavigateBtn);
var
d:integer;
BtnName:string;
begin
if Button=nbdelete then
d:=application.MessageBox('delete the record?','title',mb_yesno);
if d=idyes then
begin
DM.Q_gh.Delete;
end
else
Abort
end
davoodmz
چهارشنبه 16 فروردین 1385, 10:09 صبح
با سلام
با گذاشتن دستور abort بازهم مشکل حل نشد  کار خود را انجام می دهد (عمل حذف رکورد) و به شرطی که ما گذاشتیم اگر کلیدی yes را زد حذف و در غیر اینصورت حذف انجام نشود کاری ندارد.
با تشکر
داود
Mohammad_Mnt
چهارشنبه 16 فروردین 1385, 20:18 عصر
این رو امتحان کن ببین می شه :
procedure TForm1.suitempDBNavigator1Click(Sender: TObject; Button: TNavigateBtn);
begin
 if (Button=nbdelete) and (application.MessageBox('delete the record?','title',mb_yesno) <> idyes) then Abort;
end;
davoodmz
پنج شنبه 17 فروردین 1385, 15:16 عصر
با تشکر
مشکل حل شد 
کنترل را در رویداد BEFORDELET خود ADOTABLE  نوشتم و مشکل حل شد 
با تشکر از شما
javidtaheri
پنج شنبه 17 فروردین 1385, 16:44 عصر
مساله حذف رکورد برمیگردد به کد نویسی شما
چون شما باید کد را قبل از کلیک شدن  بنویسید  و بعد Abort را بنویسید که رویداد کلیک انجام نشود یعنی در رویداد BeforeAction اینو امتحان کن
procedure TForm1.DBNavigator1BeforeAction(Sender: TObject;
  Button: TNavigateBtn);
var d:integer;
BtnName:string;
begin
if Button=nbdelete then
d:=application.MessageBox('delete the record?','title',mb_yesno);
if d=idyes then
begin
DM1.Q_gh.Delete;
end;
Abort;
end;
davoodmz
شنبه 26 فروردین 1385, 11:28 صبح
با تشکر از دوستان 
مشکل حل شد
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.