ورود

View Full Version : سوال: نمايش پيغام خطا قبل از پاك شدن ركورد - موافقت با عمل پاك شدن



hentjanson
یک شنبه 02 تیر 1387, 16:00 عصر
سلام دوستان

ميشه بگيد نحوه اعمال نمايش پيغام خطا چطوريه

اين كد منه كه روي يك دكمه نوشتم . مي خوام وقتي روي اين دكمه براي پاك شدن يك ركورد كليك ميشه يك پيغام بياد كه بعد از تائيد من ركورد پاك شود . بله و نه منظورمه



procedure TForm1.BitBtn1Click(Sender: TObject);
begin
if ADOTable1.RecordCount > 0 then
ADOTable1.delete;
end;

babak_delphi
یک شنبه 02 تیر 1387, 16:27 عصر
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
if Application.MessageBox('caption','آیا مطمئن هستید؟',MB_ICONQUESTION + MB_OKCANCEL) = mrOk then
if ADOTable1.RecordCount > 0 then
ADOTable1.delete;
end;

hentjanson
یک شنبه 02 تیر 1387, 16:35 عصر
مرسي دوست من .

يك مسئله ديگه ميمونه اين دو دكمه ok و cancel رو ميشه فارسي كرد مثلا بشن بله و انصراف

babak_delphi
یک شنبه 02 تیر 1387, 17:03 عصر
من خودم از روش زیر استفاده میکنم :
یک فرم درست کردم و 2 دکمه با عنوانهای تـایـیـد و انـصـراف در روی آن قرار دادم و خاصیت ModalResult آنها را به ترتیب برابر mrOk و mrCancel قرار دادم
یک Label برای نمایش متن روی آن قرار دادم و با تنظیم BidiMode آن را راست به چپ کردم تا ظاهر پیغامها مناسبتر باشند
در OnShow فرم ، با توجه با طول پیغام ، اندازۀ Label و تعداد خطوط آن و عرض و ارتفاع فرم را تنظیم میکنم
یک Image برای نمایش آیکن ، روی فرم قرار دادم و عکسی که باید نمایش داده شود را در آن نشان میدهم
یک تابع نوشتم که این فرم را فراخوانی میکند و با ارسال پارامتر به تابع تعیین میکنم که چه آیکنی نشان دهد ، متن پیغام چه باشد و عنوان فرم چه باشد.
یک بار این فرم را ساخته ام و در تمام پروژه هایم از آن استفاده میکنم
با این کار و امثال آن :

سرعت برنامه نویسی بالاتر میرود
برنامه ها از نظر ظاهری مشابه و یک دست میشوند
مشکل چپ به راست بودن پیغام در Application.MessageBox و عنوان اینگلیسی دکمه ها حل میشود
در صورت نیاز ، با تغییر در فرم پیغام ، این فرم در همه جای پروژه اصلاح میشود
با توسعۀ آن میتوان فرم های پیغام با یک دکمه ، فرم های نمایش پیغام بصورت زمان دار و ... را داشت.
.
.
0
اگر میخواهید کار همیشگی انجام بدهید من این راه را پیشنهاد میکنم.

hedi
یک شنبه 02 تیر 1387, 17:13 عصر
فایل Consts را در یکی از پوشه های Borland یا BDS تغییر بده

hentjanson
یک شنبه 02 تیر 1387, 17:23 عصر
مرسي دوست من از پست شماره 4 اگه فرصت داشتيد از همين گفته خودتون يك مثال بزنيد .
تشكر از شما

babak_delphi
یک شنبه 02 تیر 1387, 19:06 عصر
این نمونۀ یک فرم برای سؤال در مورد حذف کردنه

اصغر (پآچ)
یک شنبه 02 تیر 1387, 19:14 عصر
سلام دوست من

ببین دو تا یونیت توی همین سایت هست که اگه سرچ کنی پیداش میکنی به اسم های FarsiDialogs و FarsiConsts که استفاده از اونها می تونه مشکلت رو حل کنه

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

babak_delphi
یک شنبه 02 تیر 1387, 19:30 عصر
http://barnamenevis.org/forum/showthread.php?t=106984

http://barnamenevis.org/forum/showthread.php?t=97743

hentjanson
یک شنبه 02 تیر 1387, 19:31 عصر
من اين FarsiDialogs رو ژيدا كردم .

بايد اينو از طريق add project به برنامه اضافه كنم ؟
ميشه روند اينو توضيح بديد .

اصغر (پآچ)
یک شنبه 02 تیر 1387, 19:35 عصر
آره و یادت باشه که در قسمت یوزز یونیتت هم باید اضافه بشه تا بتونی ازش استفاده کنی اصلا توی یوزز یونیتت هرچی Dialogs هست رو به FarsiDialogs تغییر بده درست میشه!
موفق و موید باشی

hentjanson
یک شنبه 02 تیر 1387, 20:02 عصر
يك موضوعي uses كجا تعريف ميشه

babak_delphi
یک شنبه 02 تیر 1387, 21:00 عصر
در قسمت بالای یونیت
با کلمه کلیدی uses مشخص شده
البته اگر شما از component های تب Dialog استفاده نکرده باشید احتمالا در قسمت uses هم نام یونیت آنها وجود نخواهد داشت
از منوی File گزینه use unit میتوانید به راحتی این کار را انجام دهید
البته پس از اضافه کردن آن یونیت به پروژه

hentjanson
یک شنبه 02 تیر 1387, 21:01 عصر
سلام دوستان من FarsiDialogs رو به برنامه اضافه كردم .
و تو فرم اصلي برنامه form 1
اينو اينطوري اضافه كردم


uses FarsiDialogs ;

ولي بازم كلمات انگليسي هستند . cancel و ok منظورمه

babak_delphi
یک شنبه 02 تیر 1387, 21:10 عصر
http://barnamenevis.org/forum/showthread.php?t=106984

من این آدرس را قبلا هم گذاشتم براتون
در او کدی هست که ظاهرأ همین کار رو انجام میده
تست کردین؟

babak_delphi
یک شنبه 02 تیر 1387, 21:19 عصر
http://barnamenevis.org/forum/showthread.php?t=71715
به این آدرس هم مراجعه کن
در آن کد جالبی هست که اینجا قرار میده


fd1:=CreateMessageDialog(m,mtype,[mbok,Mbno]);
fd1.BiDiMode:=bdrighttoleft;
fd1.Caption:='custom';
fd1.Font.Name :='Tahoma';
fd1.Font.Size := 8;
tbutton(fd1.Components[2]).caption:='yes';
TButton(fd1.Components[3]).Caption:='no';
result:=fd1.ShowModal;
fd1.Free;

hentjanson
یک شنبه 02 تیر 1387, 22:00 عصر
سلام دوست من كد شما عالي بود
من از اين استفاده كردم


function FarsiMsg(m:string;mtype:TMsgDlgType):TModalResult;
var
fd1:tform;
begin
fd1:=CreateMessageDialog(m,mtype,[mbok,mbno]);
fd1.BiDiMode:=bdrighttoleft;
fd1.Caption:='دقت نماييد !';
fd1.Font.Name :='Tahoma';
fd1.Font.Size := 8;
tbutton(fd1.Components[2]).caption:='انصراف';
tbutton(fd1.Components[3]).caption:='تاييد';
result:=fd1.ShowModal;
fd1.Free;
end;


و روي يك دكمه اينو نوشتم


FarsiMsg('آيا موافق با حذف اطلاعات فوق هستيد ',mtInformation )

حالا يك سوال چطور ركورد را پاك كنم قبلا به اين طريق اطالاعات را پاك مي كرد الان بايد چكاركنم چه كدي بايد بنويسم اين كد قبلي منه


procedure TForm1.BitBtn1Click(Sender: TObject);
begin

if ADOTable1.RecordCount > 0 then
ADOTable1.delete;
end;

dkhatibi
یک شنبه 02 تیر 1387, 22:33 عصر
رویدادهای Onbeforedelete و امثالهم در دیتاست خود ببینید.

hentjanson
یک شنبه 02 تیر 1387, 22:46 عصر
نشد يعني نتونستم ميشه بيشتر راهنماييم كنيد .
اين كد پاك كردن رو بايد كجا بنويسم

babak_delphi
دوشنبه 03 تیر 1387, 00:10 صبح
اگر این تابع را در همان فرم نوشته اید آن را بصورت زیر اصلاح کنید



function form1.FarsiMsg(m:string;mtype:TMsgDlgType):TModalR esult;
var
fd1:tform;
begin
fd1:=CreateMessageDialog(m,mtype,[mbok,mbno]);
fd1.BiDiMode:=bdrighttoleft;
fd1.Caption:='دقت نماييد !';
fd1.Font.Name :='Tahoma';
fd1.Font.Size := 8;
tbutton(fd1.Components[2]).caption:='انصراف';
tbutton(fd1.Components[3]).caption:='تاييد';
result:=fd1.ShowModal;
fd1.Free;
end;

چون ظاهرا اسم فرم شما Form1 است
بهد کد مربوط به پاک کردن را بصورت زیر اصلاح کنید :



procedure TForm1.BitBtn1Click(Sender: TObject);
begin
if FarsiMsg('asd',mtWarning) = mrok then
if ADOTable1.RecordCount > 0 then
ADOTable1.delete;
end;

hentjanson
دوشنبه 03 تیر 1387, 15:28 عصر
سلام دوست من چرا تمام ركورد هاي جدول رو پاك ميكنه وقتي روي اين دكمه كليك ميكنم و تاييد مي كنم تمام ركورد ها پاك ميشن

babak_delphi
دوشنبه 03 تیر 1387, 22:25 عصر
اگر میخواهید فقط رکوردهای خاصی پاک شوند ابتدا Table را بر اساس خواسته تان فیلتر کنید
بعد از دستور Delete استفاده کنید

hentjanson
دوشنبه 03 تیر 1387, 22:45 عصر
يعني چي متوجه نشدم اخه قبلا با اين كد فقط يك ركورد پاك ميشد اينو ميگم


if ADOTable1.RecordCount > 0 then
ADOTable1.delete;

ولي الان به يك ان كل بانك رو خالي ميكنه

babak_delphi
سه شنبه 04 تیر 1387, 01:26 صبح
ببین ADOTable1.RecordCount چه عددی رو نشون میده؟

AFTABGARDAN2006
سه شنبه 04 تیر 1387, 09:25 صبح
شما FarsiDialog رو به پروزه اتان اضافه کنید سپس در قسمت Uses فرمهایتان ان را اضافه کنید (یا به جای Dialog که در قسمت Uses هست اضافه کنید)

babak_delphi
سه شنبه 04 تیر 1387, 13:44 عصر
AFTABGARDAN2006 عزیز
اگر مشکل در USE کردن FarsiDialog بود دلفی خطای کامپایلر می داد
ولی مشکل ایشان چیز دیگری است که مربوط می شود به نحوهء Delete کردن

hentjanson
سه شنبه 04 تیر 1387, 14:52 عصر
سلام دوستان من همچنان با اين مشكل مواجه هستم اگه امكان داره ميشه همكاري كنيد اين مشكل حل شه . مرسي از تمام اساتيد كه وقت گزاشتن تا به حال

hentjanson
سه شنبه 04 تیر 1387, 14:58 عصر
در جواب شما دوست من
از اين كد استفاده كردم


Label2.Caption:=IntToStr(ADOTable1.RecordCount);


مجموعا 4 ركورد ثبت كردم كه اين label هم عدد 4 رو نشون ميده اينم كد دكمه حذف منه


procedure TForm1.BitBtn1Click(Sender: TObject);
begin
if FarsiMsg('ÂíÇ ãæÇÝÞ ÈÇ ÍÐÝ ÇØáÇÚÇÊ ÝæÞ åÓÊíÏ',mtWarning) = mrok then
if ADOTable1.RecordCount > 0 then
ADOTable1.delete;
end;

حالا وقتي رو اين دكمه كليك كنم هر 4 ركورد با هم پاك ميشن مشكل از چيه ؟

babak_delphi
چهارشنبه 05 تیر 1387, 01:08 صبح
ابتدا فیلتر کنید
سپس delete کنید
توجه کنید که خاصیت Filtered برابر true باشد.

hentjanson
چهارشنبه 05 تیر 1387, 09:34 صبح
چطور فيلتر كنم اينو
ميشه يك توضيح كامل بديد براي من .

babak_delphi
پنج شنبه 06 تیر 1387, 23:56 عصر
شما قبلا خودتون در این آدرس پرسیدین و من هم جواب داده بودم

http://barnamenevis.org/forum/showthread.php?t=110716

hentjanson
جمعه 07 تیر 1387, 17:12 عصر
ميشه بگي چه شرطي بايد بيارم واسه فيلتر

babak_delphi
جمعه 07 تیر 1387, 17:22 عصر
اسم فیلد مورد نظر و شرایط پاک کردنش رو بگید تا کدش رو براتون بنویسم

hentjanson
یک شنبه 09 تیر 1387, 13:01 عصر
سلام دوست من از دلفي استفاده كردم قسمت اموزشش . مشكلم حل شد مرسي از شما واسه كمكتون