نمایش نتایج 1 تا 32 از 32

نام تاپیک: سه رقم جدا کردن اعداد در DBGrid در هنگام نوشتن عدد

  1. #1
    VIP آواتار دنیای دلفی
    تاریخ عضویت
    اردیبهشت 1403
    محل زندگی
    یک جایی توی جنوب ایران
    پست
    1,298

    سه رقم جدا کردن اعداد در DBGrid در هنگام نوشتن عدد

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

  2. #2
    فیلدهاتون رو به Table یا ADOTable (با استفاده از FieldEditor) اضافه کنید و فیلد مورد نظر رو انتخاب کن ، DisplayFormat رو با ,# مقداردهی کن.


    DisplayFormat = #,

  3. #3
    کاربر دائمی آواتار Mohammad_Mnt
    تاریخ عضویت
    اسفند 1381
    محل زندگی
    جنگلی به نام ایران
    سن
    41
    پست
    1,875
    فکر کنم دنیای دلفی می خواد موقع Edit سه رقم سه رقم بگیره نه موقع نمایش. البته این مشکل با کامپوننت DBEditCurrency از DevExpress قابل حله ولی توی Grid رو نمی دونم .
    ولی معمولا جدا کردن رقم موقع Edit خیلی واجب نیست. کاربر می تونه موقع Edit همون 12345 را وارد کنه و وقتی به Field بعدی رفت عدد رو به صورت 12,345 ببینه ( با همون روش آقای m-khorsandi )

  4. #4
    VIP آواتار دنیای دلفی
    تاریخ عضویت
    اردیبهشت 1403
    محل زندگی
    یک جایی توی جنوب ایران
    پست
    1,298
    ممنون از پاسخ شما ولی منظور من در هنگام وارد کردن عدد در DBGrid است و بسیار هم مهم است چون در برنامه های حسابداری که سرعت عمل نیاز دارند دقت را بسیار بالا می برد من از Ehlib استفاده می کنم و در Edit Box هایی که دارد این مشکل را در هنگام ورود حل کرده است ولی نمی دانم با DBGrid چی کار کنم اگر کسی می دونه راهنمایی کنه

  5. #5
    VIP آواتار دنیای دلفی
    تاریخ عضویت
    اردیبهشت 1403
    محل زندگی
    یک جایی توی جنوب ایران
    پست
    1,298
    یعنی هیچ راهی نیست

  6. #6
    همون کاری که آقای خورسندی توضیح دادند را انجام بدید، با این تفاوت که بجای DisplayFormat از EditFormat استفاده کنید.
    ولی منظور من در هنگام وارد کردن عدد در DBGrid است
    تمام کنترلهای Data-Aware از DisplayFormat و EditFormat فیلدی که بهش متصل هستند استفاده می کنند، پس با انجام کاری که در بالا گفته شد، DBGrid شما هم از همون فرمت مشخص شده تبعیت خواهد کرد.

  7. #7
    VIP آواتار دنیای دلفی
    تاریخ عضویت
    اردیبهشت 1403
    محل زندگی
    یک جایی توی جنوب ایران
    پست
    1,298
    با عرض پوزش آقای کشاورز با انجام این کار باز هم در هنگام وارد کردن عدد سه رقم سه رقم جدا نمی شود بلکه پس از ثبت اطلاعات با اینتر یا با کلیک ماوس در مکان دیگر این کار انجام می شود نمی دانم شاید یک کار خاصی باید من انجام بدهم تا این اتفاق در هنگام وارد کردن بیافتد

  8. #8
    VIP آواتار دنیای دلفی
    تاریخ عضویت
    اردیبهشت 1403
    محل زندگی
    یک جایی توی جنوب ایران
    پست
    1,298
    برادران مدیر کسی نمی تونه مشکل من رو حل کنه

  9. #9
    با استفاده از خاصیت DBGrid1.Columns[2].Field.EditMask یه کارائی میتونی بکنی
    You never know what you can do until you try

  10. #10
    کاربر دائمی آواتار Mohammad_Mnt
    تاریخ عضویت
    اسفند 1381
    محل زندگی
    جنگلی به نام ایران
    سن
    41
    پست
    1,875
    editMask یکی از مزخرف ترین property های موجو در دلفی است !!! مخصوصا" برای کار با عددهای ارزی

  11. #11
    نقل قول نوشته شده توسط Mohammad_Mnt
    editMask یکی از مزخرف ترین property های موجو در دلفی است !!! مخصوصا" برای کار با عددهای ارزی
    تایید میشه.

  12. #12
    VIP آواتار دنیای دلفی
    تاریخ عضویت
    اردیبهشت 1403
    محل زندگی
    یک جایی توی جنوب ایران
    پست
    1,298
    حالا از این حرفها بگذریم
    آقای کرامتی شما به داد ما برسید چه جوری میشه این کار را انجام داد

  13. #13
    VIP آواتار دنیای دلفی
    تاریخ عضویت
    اردیبهشت 1403
    محل زندگی
    یک جایی توی جنوب ایران
    پست
    1,298
    من برای یک Edit حلش کردم ولی برای DBGrid نمی دونم
    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, StdCtrls, Mask, StrUtils,math;

    function Bet(S: string; Thousands: Boolean;Sender: TObject): string;
    var
    I, MaxSym, MinSym, Group: Integer;
    IsSign: Boolean;
    begin
    for I :=1 to Trunc(Length(S)/3) do
    Delete(S,Pos(ThousandSeparator,S),1);
    Result := '';
    MaxSym := Length(S);
    IsSign := (MaxSym > 0) and (AnsiChar(S[1]) in ['-', '+']);
    if IsSign then MinSym := 2
    else MinSym := 1;
    I := Pos(DecimalSeparator, S);
    if I > 0 then MaxSym := I - 1;
    I := Pos('E', UpperCase(S));
    if I > 0 then MaxSym := Min(I - 1, MaxSym);
    Result := Copy(S, MaxSym + 1, MaxInt);
    Group := 0;
    for I := MaxSym downto MinSym do
    begin
    Result := S[i] + Result;
    Inc(Group);
    if (Group = 3) and Thousands and (I > MinSym) then
    begin
    Group := 0;
    Result := ThousandSeparator + Result;
    end;
    end;
    if IsSign then Result := S[1] + Result;
    if (Sender is TEdit) then
    TEdit(sender).Perform(WM_KeyDown,VK_End,0)

    end;


    procedure TForm1.Edit1Change(Sender: TObject);
    begin
    Edit1.Text:=bet(Edit1.Text,true,Sender);
    end;
    بیاید با هم کاملش کنیم
    آخرین ویرایش به وسیله دنیای دلفی : دوشنبه 30 مرداد 1385 در 18:05 عصر دلیل: این پست به دلیل تکراری بودن بطور خودکار ادغام شده است.

  14. #14
    کاربر دائمی آواتار ali_abbasi22145
    تاریخ عضویت
    آذر 1382
    محل زندگی
    يك جايي در پايتخت
    پست
    1,350
    نقل قول نوشته شده توسط Mohammad_Mnt
    فکر کنم دنیای دلفی می خواد موقع Edit سه رقم سه رقم بگیره نه موقع نمایش. البته این مشکل با کامپوننت DBEditCurrency از DevExpress قابل حله ولی توی Grid رو نمی دونم .
    ولی معمولا جدا کردن رقم موقع Edit خیلی واجب نیست. کاربر می تونه موقع Edit همون 12345 را وارد کنه و وقتی به Field بعدی رفت عدد رو به صورت 12,345 ببینه ( با همون روش آقای m-khorsandi )
    سلام به دوست قدیمی خودمان

    اگر DevExpress کامپوننت DBEditCurrency و DevExpress DBgrid را پس احتمال زیاد مشکلت را در DBGrid حل می کند پس به آنها ایمیل بزن.

  15. #15
    کاربر دائمی آواتار jafari1
    تاریخ عضویت
    بهمن 1382
    محل زندگی
    ايران
    پست
    367
    دوست گرامی
    عددی که هنوز تعداد ارقامش مشخص نیست چگونه میخواهی 3 رقم 3 رقم جدا کنی طبیعی است که عدد پس از درج کامل قابل جداکردن است و قبل از ورود کامل عدد جدا کردن آن دردی را دوا نمیکند که بتوان درستی عدد وارد شده را با آن چک کرد

  16. #16
    VIP آواتار دنیای دلفی
    تاریخ عضویت
    اردیبهشت 1403
    محل زندگی
    یک جایی توی جنوب ایران
    پست
    1,298
    ممنون از راهنمایی های همه ولی من از Grid مربوط به Ehlib استفاده می کنم و بسیار مهم است که هنگام وارد کردن عدد سه تا سه تا جدا کند البته با کدی که در بالا گذاشته ام به راحتی این کار انجام می شود ولی مشکل این است که در DBGrid رویدادی نیست که در هنگام تایپ یک عدد در یک ستون گرید مرتبا اجرا شود و فقط حالتی وجود دارد که ابتدای وارد کردن عدد و انتهای وارد کردن آن چک می شود یعنی یک چیزی مثل OnChange مربوط به Edit یا DbEdit و غیره الان مسئله پیدا کردن الگوریتم این کار نیست بلکه پیدا کردن این رویداد است.

  17. #17
    کاربر دائمی آواتار Mahdi_S_T
    تاریخ عضویت
    شهریور 1382
    محل زندگی
    خراسان رضوی
    پست
    1,039
    اگه بخواهید از Edit استفاده کنید بهترین و زیباترین FloatEdit موجود در کامپوننت Falad است

  18. #18
    کاربر دائمی آواتار فرزاد دلفی باز
    تاریخ عضویت
    تیر 1383
    محل زندگی
    ایـــران ....
    پست
    464
    اصلا ربطی به این نداره که عدد شما چند رقمیه فقط باید نوع فیلد از نوع عددی باشده . با استفاده از FieldEditor در Table یا ADOTable , DisplayFormat رو با ###,### مقداردهی کنید این حالت برای 16 رقم جواب میده(البته ارقام بیشتر رو هم نشان می ده ولی16 رقم را بطور واضح در گرید نشان می ده) خود این حالت بطور اتوماتیک سه رقم سه رقم را جدا میکنه .......
    آخرین ویرایش به وسیله فرزاد دلفی باز : شنبه 04 شهریور 1385 در 09:04 صبح

  19. #19
    کاربر دائمی آواتار babak869
    تاریخ عضویت
    اسفند 1383
    محل زندگی
    کرمانشاه
    پست
    1,251
    اینم یه نمونه برنامه .البته ایده اون مربوط به جناب آقای خورسندیه!!!
    موفق باشید

    http://www.barnamenevis.org/sh...219#post259219

  20. #20
    بهتر نیست جواب سوال رو همین جا بدید؟
    You never know what you can do until you try

  21. #21
    کاربر دائمی آواتار babak869
    تاریخ عضویت
    اسفند 1383
    محل زندگی
    کرمانشاه
    پست
    1,251
    نقل قول نوشته شده توسط mzjahromi
    بهتر نیست جواب سوال رو همین جا بدید؟
    چون نمونه برنامه جواب ایشون بود اونو در تاپیکی که مربوط به نمونه برنامه های دلفی است گذاشتم تا ایشون و بقیه هم استفاده کنند

  22. #22
    کاربر دائمی آواتار jafari1
    تاریخ عضویت
    بهمن 1382
    محل زندگی
    ايران
    پست
    367
    در نمونه برنامه بالا بایستی عدد را وارونه ( یعنی آز آخر) وارد کرد که به نظر عاقلانه نیست

  23. #23
    کاربر دائمی آواتار فرزاد دلفی باز
    تاریخ عضویت
    تیر 1383
    محل زندگی
    ایـــران ....
    پست
    464
    این مثال کامله ......
    فایل های ضمیمه فایل های ضمیمه

  24. #24
    VIP آواتار دنیای دلفی
    تاریخ عضویت
    اردیبهشت 1403
    محل زندگی
    یک جایی توی جنوب ایران
    پست
    1,298
    دوستان توجه کنید گفتیم در هنگام تایپ کردن می خواهیم سه تا سه تا جابجا بشه دوستان این نکته خیلی مهمه برای DBGrid

  25. #25
    کاربر دائمی آواتار فرزاد دلفی باز
    تاریخ عضویت
    تیر 1383
    محل زندگی
    ایـــران ....
    پست
    464
    اگر شما می خواهید از طریق گرید اطلاعات را وارد کنید یک بحث جدایی است ولی اگه می خواهید از طریق یک edit اطلاعات رو وارد کنید قبلا بحث شده .....
    این مثال برای نمایش بصورت سه تایی در گرید است

  26. #26
    اصلا بحث از ابتدا ورود اطلاعات با استفاده از DBGrid بوده.

    قانون شماره 13
    لطفاً در صورتی که جواب یک سوالی را نمی دانید از ارسال مطالبی که باعث شلوغ کردن آن ارسال ( یا سوال ) شود خودداری فرمایید. در صورتی که بحث خاصی دارید می توانید برای خودتان یک بحث عمومی باز کنید.
    You never know what you can do until you try

  27. #27
    کاربر دائمی آواتار فرزاد دلفی باز
    تاریخ عضویت
    تیر 1383
    محل زندگی
    ایـــران ....
    پست
    464
    با عرض پوزش ......

  28. #28

    نقل قول: سه رقم جدا کردن اعداد در DBGrid در هنگام نوشتن عدد

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

  29. #29

    نقل قول: سه رقم جدا کردن اعداد در DBGrid در هنگام نوشتن عدد

    می دونم که تاپیک مال چند سال پیشه ولی چون در موقع جستجو در گوگل در سطر نتایجه گفتم اینو بگم شاید برای بعضی ها مفید واقع بشه.
    حالت اول رو برای مثال با StoreProcedure می گم:
    ADOStoreProcedure1.FieldByName('MyField').EditMask  := '###,###,###,###;0; '

    و این هم یه راه دیگه برای Table
    procedure TForm1.Seprate(Sender: TField; var Text: string;
    DisplayText: Boolean);
    begin
    Text := FormatFloat('#,##0', Sender.AsFloat );
    end;



    procedure TForm1.FormCreate(Sender: TObject);
    begin
    (Table1.FieldByName('MyField') as TField).OnGetText := Seprate;
    end;

  30. #30

    نقل قول: سه رقم جدا کردن اعداد در DBGrid در هنگام نوشتن عدد

    سلام
    این قسمت برای من تو دلفی 2010 خطا می گیره لطفا راهنمایی کنید
    کد HTML:
    procedure TForm1.Seprate(Sender: TField; var Text: string;
      DisplayText: Boolean);
    begin
        Text := FormatFloat('#,##0', Sender.AsFloat );
    end;

  31. #31

    نقل قول: سه رقم جدا کردن اعداد در DBGrid در هنگام نوشتن عدد

    برنامه الان بدون خطا بالا امد ولی نمایش تو بعد از پست شدن سه رقم نمایش می ده نه تو هینت
    و زنده تو تایپ
    مرسی

  32. #32
    کاربر دائمی آواتار ابوالفضل عباسی
    تاریخ عضویت
    شهریور 1393
    محل زندگی
    Inside Esfahan
    پست
    719

    نقل قول: سه رقم جدا کردن اعداد در DBGrid در هنگام نوشتن عدد

    باسلام.
    بنده برای اینکار یک تابع نوشته ام که در dbedit سه رقم را جدا میکند(بیش از میلیارد)و هنگام خروج از dbedit سه رقم،را پاک میکند.
    یعنی هنگام تایپ و نمایش سه رقم را جدا میکند،هنگام ذخیره سازی به صورت ساده ذخیره(currency) میشود و تا الان مشکلی ندارد و درست کار میکند، حتی میتوان در hint هم نمایش داد.
    دوستانی که با روش هایی که گفته شد به مشکل برخوردند میتوانند یک پیام خصوصی به بنده بدهند تا تابع را برایشان ارسال کنم.

تاپیک های مشابه

  1. export dbgrid to excel وپرینت اطلاعات یک dbgrid
    نوشته شده توسط amir_rahimi در بخش برنامه نویسی در 6 VB
    پاسخ: 3
    آخرین پست: چهارشنبه 05 دی 1386, 08:37 صبح
  2. چگونگی استفاده از DBgrid به عنوان ورودی
    نوشته شده توسط zarin_web در بخش برنامه نویسی در 6 VB
    پاسخ: 0
    آخرین پست: سه شنبه 30 آبان 1385, 09:11 صبح
  3. کمک در باره dbgrid
    نوشته شده توسط babataher در بخش بانک های اطلاعاتی در Delphi
    پاسخ: 2
    آخرین پست: پنج شنبه 28 اردیبهشت 1385, 18:04 عصر
  4. کمک فوری درباره DbGrid
    نوشته شده توسط babataher در بخش برنامه نویسی در Delphi
    پاسخ: 1
    آخرین پست: پنج شنبه 28 اردیبهشت 1385, 07:38 صبح
  5. افزودن سطر به dbgrid
    نوشته شده توسط parisa2002 در بخش بانک های اطلاعاتی در Delphi
    پاسخ: 4
    آخرین پست: سه شنبه 26 اردیبهشت 1385, 18:12 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •