سلام دوستان
من در این سایت جستجو کردم کسی جواب این سئوال رو نداده بود لطفا از جوابهای زیر پرهیز کنید.(نوع فیلد bigint)
1- تابع برای سه رقم کردن(خودم دارم)
2-تنظیم display format(میدونم)
3-استفاده از کامپوننت(نمیخام)
سلام دوستان
من در این سایت جستجو کردم کسی جواب این سئوال رو نداده بود لطفا از جوابهای زیر پرهیز کنید.(نوع فیلد bigint)
1- تابع برای سه رقم کردن(خودم دارم)
2-تنظیم display format(میدونم)
3-استفاده از کامپوننت(نمیخام)
آخرین ویرایش به وسیله Borland-Delphi7 : سه شنبه 03 اردیبهشت 1387 در 14:05 عصر
دو روش بیشتر برای این کار ندارید.
1-DisplayFormal و یا همان روشی که دوستمان در بالا اشاره کرد.که این فقط زمانی که کلید Enter زده شود اتفاق می افتد.
2-نوشتن یک کامپونت تا در زمان تایپ جدا کند .من کل سایتها را گشتم ولی Grid ی پیدا نکردم و باید خودتان بنویسید.
موفق باشید
هم اکنون نیازمند یاریتان هستیم یعنی کسی تا حالا در دلفی تو گرید هنگام تایپ اعدادش سه رقم سه رقم جدا نشده
قبل از ایجاد تاپیک جستجو کن مثال همین تاپیک شما را آقای احدی در سایت قرار داده است
موفق و موید باشید
باید یک Edit روی اون ستون قرار بدی و به صورت دستی edit رو جابجا کنی طوری که هر جا فوکوس بود همونجا قرار بگیره و کابر اطلاعات رو در ادیت وارد میکنه و شما اطلاعات رو در Db وارکنید
من در مورد این جور کارها StringGrid رو ترجیح میدم
کار کردن با DBGrid راهتتره ، ولی کنترل روی StringGrid بیشتره
من هر 2 رو برای سند حسابداری و دفاتر کل امتحان کردم
StringGrid بهتر جواب داد
3 رقم جدا کردنش هم آسون تره
محاسبه جمع ستونها ، کنترل دسترسی ورود به ستونها ، اجازه تایپ در بعضی ستونها ، جمع کردن و ضرب مقادیر ستونها بصورت لحظه ای و شبیه سازی Hint (مثلا برای نمایش حروفی اعداد تایپ شده) ... هم راحت تره
من فکر می کنم شما هم اگه از اون استفاده کنید راحت تر کار خواهید کرد
هم برای 3 رقم 3 رقم جدا کردن و هم موارد دیگه
فقط برای بعضی کار ها باید خودتون کد بنویسید
در عوض از همین فرم با کمی تغییر می تونید برای فاکتور خرید ، فاکتور فروش ، مرجوعی ، ثبت سند ، دفاتر و ... به راحتی استفاده کنید
دیگه مشکل نوع فیلد رو هم نخواهید داشت.
شاید مطالبم کاملا در جواب سوال شما نباشه ولی اون رو هم شامل میشه
هم اون و هم بقیه مشکلات
به هر حال نتیجه تجربه شخصیم بود
موفق باشید.
یه کامپوننت گریدی که خودم نوشتم و با امکانات مورد نیاز خودم
فقط در مورد جدا کننده برای TColumn هایی که می خواهم به این صورت باشد در قسمت PickUp List آن در سط اول عدد 1 و در سطر دوم نام فیلد را می نویسم و حالت DataField را خالی بگذارید خودش بقیه کارو انجام می دهد
به سورس نگاه بندازید متوجه می شوید کسی راه حل بهتری داشت بگه در این سورس اضافه کنم
فرمایشات شما رو قبول دارم
اما من هر 2 رو امتحان کردم ، برای من StringGrid راحتتر بود
مخصوصا که یک بار نوشتم و الان با Copy / Paste و مقدار کمی تغییر در کد (شاید 15 یا 20 دقیقه برای هر فرم مثلا فاکتور) می تونم در پروژه یا فرم دیگر از این روش (استفاده از StringGrid برای ورود اطلاعات) به راحتی و به سرعت استفاده کنم
به هر حال من از این روش استفاده کرده ام و برایم مفید بوده
آقای hr110 ، در مورد موارد 2 و 3 با شما موافقم ، اما با یک بار زحمت و همچنین یک مقدار دقت بیشتر مزایای بیشتری می توان بدست آورد
ممنون
ممنونم عزیزم کامپوننت خوبی بود ولی آخه قربونت من اول تاپیک و موضوع تاپیک گفتم در موقع تایپ عدد در گرید میخوام این کار اتفاق بیفته (من نمیدونم چرا دوستان به موضوع تاپیک و سئوال اون دقت نمیکنن و هر تاپیک بعد از چند جواب موضوش عوض میشه )ولی به هر حال حوسله خوبی داری کامپوننتتو کامل تر کن خودم میخرمش
آخرین ویرایش به وسیله Borland-Delphi7 : چهارشنبه 04 اردیبهشت 1387 در 14:35 عصر
ممنون از تمامی عزیزانی که نظر دادن
بعد از 15 ساعت تلاش این کار عملی شد در dbgrid و فیلد از نوع int یا bigint ،بدون calc field
چون کامل تستش نکردم روشمو نمیگم ولی مطمئن هستم جواب میده چون توظیحش زیاده یه بچه سورس براتون از این کار میزارم خیلی باحال شده (خواستن توانستن است)
شما آدم بخیلی که نیستی پس پاسخ خودت رو به ما هم بگو
بابا ناز نكن ما مننظرانيم
در رويداد onchange يك edit كد زير را بنويس هر عددي كه وارد آن edit شود خروجي اين عدد هر كجا باشد سه رقمي مي شود خيلي راحت موفق باشيد
دوست عزيز سلام
من كد زير را در رويداد onchange يك edit مي نويسم .اعداد درون edit سه رقمي مي شود بعد آن را هم كه در جدول وارد مي كنم و بوسيله dbgrid نمايش مي دهم سه رقمي است ساده ترين راه موفق باشيد
procedure TForm1.Edit2Change(Sender: TObject);
var
s:string;
i:Integer;
begin
s:='';
if Edit2.Text>''then
begin
for i:=0 to Length(Edit2.Text)do
if Edit2.Text[i]in['0'..'9']then
s:=s+edit2.Text[i];
Edit2.Text:=FormatFloat('#,',StrToInt64(s));
Edit2.SelStart:=Length(Edit2.Text)+1;
end;
end;