ورود

View Full Version : سه رقم شدن اعداد در هنگام تایپ در dbgrid



Borland-Delphi7
سه شنبه 03 اردیبهشت 1387, 12:15 عصر
سلام دوستان
من در این سایت جستجو کردم کسی جواب این سئوال رو نداده بود لطفا از جوابهای زیر پرهیز کنید.(نوع فیلد bigint)

1- تابع برای سه رقم کردن(خودم دارم)
2-تنظیم display format(میدونم)
3-استفاده از کامپوننت(نمیخام)

SYNDROME
سه شنبه 03 اردیبهشت 1387, 21:14 عصر
دو روش بیشتر برای این کار ندارید.
1-DisplayFormal و یا همان روشی که دوستمان در بالا اشاره کرد.که این فقط زمانی که کلید Enter زده شود اتفاق می افتد.
2-نوشتن یک کامپونت تا در زمان تایپ جدا کند .من کل سایتها را گشتم ولی Grid ی پیدا نکردم و باید خودتان بنویسید.
موفق باشید

Borland-Delphi7
سه شنبه 03 اردیبهشت 1387, 22:08 عصر
اگر فرمت فیلد شما از نوع Currency باشه ، دلفی اینکار رو به طور خودکار انجام میده!

ممنون از نظر خوبتون
دوست عزیز به نظر شما در برنامه حسابداری نوع فیلد های (مانده حساب،بدهکار ، بستانکار و جمع فاکتور و ... را از نوع Currency در Ms SQL بگیرم بعد به مشکل بر نمی خورم

Borland-Delphi7
سه شنبه 03 اردیبهشت 1387, 22:26 عصر
شما میتونید یک فیلد Calculated از نوع پولی(Currency) ایجاد کرده و بایک خط کد ساده جوابتونو بگیرید و روشهایی که دوستمون گفتند رو دور بزنید ;)


CALField.asInteger:=OLDField.asInteger;



سلام دوست عزیز من یک فیلد calc ساختم از نوع currency بعد پراپرتی curreny=true کردم
حالا کد شما را در کجا بنویسم On change? بیشتر توضیح میدی

Borland-Delphi7
چهارشنبه 04 اردیبهشت 1387, 07:04 صبح
هم اکنون نیازمند یاریتان هستیم یعنی کسی تا حالا در دلفی تو گرید هنگام تایپ اعدادش سه رقم سه رقم جدا نشده

Valadi
چهارشنبه 04 اردیبهشت 1387, 07:56 صبح
قبل از ایجاد تاپیک جستجو کن مثال همین تاپیک شما را آقای احدی در سایت قرار داده است
موفق و موید باشید

rasoolgh
چهارشنبه 04 اردیبهشت 1387, 10:45 صبح
باید یک Edit روی اون ستون قرار بدی و به صورت دستی edit رو جابجا کنی طوری که هر جا فوکوس بود همونجا قرار بگیره و کابر اطلاعات رو در ادیت وارد میکنه و شما اطلاعات رو در Db وارکنید

babak_delphi
چهارشنبه 04 اردیبهشت 1387, 12:31 عصر
من در مورد این جور کارها StringGrid رو ترجیح میدم
کار کردن با DBGrid راهتتره ، ولی کنترل روی StringGrid بیشتره
من هر 2 رو برای سند حسابداری و دفاتر کل امتحان کردم
StringGrid بهتر جواب داد
3 رقم جدا کردنش هم آسون تره
محاسبه جمع ستونها ، کنترل دسترسی ورود به ستونها ، اجازه تایپ در بعضی ستونها ، جمع کردن و ضرب مقادیر ستونها بصورت لحظه ای و شبیه سازی Hint (مثلا برای نمایش حروفی اعداد تایپ شده) ... هم راحت تره
من فکر می کنم شما هم اگه از اون استفاده کنید راحت تر کار خواهید کرد
هم برای 3 رقم 3 رقم جدا کردن و هم موارد دیگه
فقط برای بعضی کار ها باید خودتون کد بنویسید
در عوض از همین فرم با کمی تغییر می تونید برای فاکتور خرید ، فاکتور فروش ، مرجوعی ، ثبت سند ، دفاتر و ... به راحتی استفاده کنید
دیگه مشکل نوع فیلد رو هم نخواهید داشت.
شاید مطالبم کاملا در جواب سوال شما نباشه ولی اون رو هم شامل میشه
هم اون و هم بقیه مشکلات
به هر حال نتیجه تجربه شخصیم بود
موفق باشید.

_alish_
چهارشنبه 04 اردیبهشت 1387, 13:40 عصر
یه کامپوننت گریدی که خودم نوشتم و با امکانات مورد نیاز خودم
فقط در مورد جدا کننده برای TColumn هایی که می خواهم به این صورت باشد در قسمت PickUp List آن در سط اول عدد 1 و در سطر دوم نام فیلد را می نویسم و حالت DataField را خالی بگذارید خودش بقیه کارو انجام می دهد
به سورس نگاه بندازید متوجه می شوید کسی راه حل بهتری داشت بگه در این سورس اضافه کنم

babak_delphi
چهارشنبه 04 اردیبهشت 1387, 13:47 عصر
فرمایشات شما رو قبول دارم
اما من هر 2 رو امتحان کردم ، برای من StringGrid راحتتر بود
مخصوصا که یک بار نوشتم و الان با Copy / Paste و مقدار کمی تغییر در کد (شاید 15 یا 20 دقیقه برای هر فرم مثلا فاکتور) می تونم در پروژه یا فرم دیگر از این روش (استفاده از StringGrid برای ورود اطلاعات) به راحتی و به سرعت استفاده کنم
به هر حال من از این روش استفاده کرده ام و برایم مفید بوده
آقای hr110 ، در مورد موارد 2 و 3 با شما موافقم ، اما با یک بار زحمت و همچنین یک مقدار دقت بیشتر مزایای بیشتری می توان بدست آورد
ممنون

Borland-Delphi7
چهارشنبه 04 اردیبهشت 1387, 14:21 عصر
یه کامپوننت گریدی که خودم نوشتم و با امکانات مورد نیاز خودم
فقط در مورد جدا کننده برای TColumn هایی که می خواهم به این صورت باشد در قسمت PickUp List آن در سط اول عدد 1 و در سطر دوم نام فیلد را می نویسم و حالت DataField را خالی بگذارید خودش بقیه کارو انجام می دهد
به سورس نگاه بندازید متوجه می شوید کسی راه حل بهتری داشت بگه در این سورس اضافه کنم

ممنونم عزیزم کامپوننت خوبی بود ولی آخه قربونت من اول تاپیک و موضوع تاپیک گفتم در موقع تایپ عدد در گرید میخوام این کار اتفاق بیفته (من نمیدونم چرا دوستان به موضوع تاپیک و سئوال اون دقت نمیکنن و هر تاپیک بعد از چند جواب موضوش عوض میشه )ولی به هر حال حوسله خوبی داری کامپوننتتو کامل تر کن خودم میخرمش

Borland-Delphi7
چهارشنبه 04 اردیبهشت 1387, 14:26 عصر
ممنون از تمامی عزیزانی که نظر دادن

بعد از 15 ساعت تلاش این کار عملی شد در dbgrid و فیلد از نوع int یا bigint ،بدون calc field
چون کامل تستش نکردم روشمو نمیگم ولی مطمئن هستم جواب میده چون توظیحش زیاده یه بچه سورس براتون از این کار میزارم خیلی باحال شده (خواستن توانستن است)

احسان حسن زاده
شنبه 06 مهر 1387, 16:22 عصر
شما آدم بخیلی که نیستی پس پاسخ خودت رو به ما هم بگو

hedayat
سه شنبه 05 آذر 1387, 13:51 عصر
بابا ناز نكن ما مننظرانيم

ahmadi613
شنبه 22 بهمن 1390, 21:42 عصر
در رويداد onchange يك edit كد زير را بنويس هر عددي كه وارد آن edit شود خروجي اين عدد هر كجا باشد سه رقمي مي شود خيلي راحت موفق باشيد

ahmadi613
سه شنبه 23 اسفند 1390, 23:22 عصر
دوست عزيز سلام
من كد زير را در رويداد 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;