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

نام تاپیک: مشکل با رنگ کردن سطر در dbgrid

  1. #1
    کاربر تازه وارد
    تاریخ عضویت
    شهریور 1385
    محل زندگی
    خوشا شيراز و وصف بي مثالش ...
    سن
    41
    پست
    98

    مشکل با رنگ کردن سطر در dbgrid

    سلام به هم دوستان
    سال نو مبارک و ایشالا که سال خوبی داشته باشید.

    من می خوام به جای حذف رکوردهای جدول ، وقتی اونارو توی dbgrid نشون میدم به یه رنگ دیگه در بیارم و این تغییر رنگ هم همیشگی باشه و هر وقت برنامه اجرا میشه اون رکوردهایی که قبلا مثلا قرمز شده الان هم قرمز باشه.
    با سرچ توی سایت به یه کد رسیدم که تونستم این کارو انجام بدم ، کد زیر را پیدا کردم


    if (ADOQuery1.FieldValues['cla']=Edit10.Text) or(ADOQuery1.FieldValues['cla']=1) then
    DBGrid1.Canvas.Font.Color:=clFuchsia;
    DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column, State);






    اما این کد حتما باید توی رویداد DBGrid1DrawColumnCell مربوط به dbgrid نوشته بشه و اکه جای دیگه نوشته بشه به خط زیر ارور میده :


    DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column, State);


    من دوتا سوال دارم
    1) کار این کد چی هست و جه کاری انجام میده ؟
    2) من میخوام کد اصلی را توی یه button بنویسم ، به جای این خط چی بنویسم که ارور نده ؟
    با تشکر

  2. #2
    کاربر دائمی آواتار Modernidea
    تاریخ عضویت
    خرداد 1387
    محل زندگی
    »مشهد الرضا«
    پست
    573

    نقل قول: مشکل با رنگ کردن سطر در dbgrid

    سلام
    انشاالله شما هم سال خوب داشته باشید.

    1) کار این کد چی هست و جه کاری انجام میده ؟
    این کد تعدای مشخصه(Rect,DataCol,Column,State) دارد که فقط هنگام DrawColumnCell به آنها دسترسی دارید به همین دلیل امکان استفاده از این کد در جای دیگری نیست.

    2) من میخوام کد اصلی را توی یه button بنویسم ، به جای این خط چی بنویسم که ارور نده ؟
    فکر میکنم بهترین راهش همین راهی که پیدا کردید باشه، البته اگر از DBGrid پیشفرض دلفی استفاده میکنید.
    یعنی اگر از کاپوننتی مثل TMS استفاده کنید، به راحتی میتونید از هر جای برنامه سلول یا ردیف مربوطه را رنگ کنید.

    موفق باشید.

  3. #3
    کاربر تازه وارد
    تاریخ عضویت
    شهریور 1385
    محل زندگی
    خوشا شيراز و وصف بي مثالش ...
    سن
    41
    پست
    98

    نقل قول: مشکل با رنگ کردن سطر در dbgrid

    از دستمون به خاطر پاسخش ممنونم ، اگه کسی از دوستان میتونه کاملتر جواب بده ممنون میشم یا یه کامپوننتی که به جای dbgrid ازش استفاده کنم
    بازم ممنون

  4. #4
    کاربر دائمی
    تاریخ عضویت
    آبان 1388
    محل زندگی
    اصفهان
    پست
    204

    نقل قول: مشکل با رنگ کردن سطر در dbgrid

    سلام دوست عزيز؛

    شما ابتدا بايستي فيلدي در بانك براي تعيين رنگ سطر مورد نظر داشته باشيد (حالا يا رنگ يا از نوع منطقي براي درك حذف شدن سطر و يا...)

    در مرحله‌ي دوم، هنگام ترسيم DBGrid بر اساس فيلد مورد نظري كه تعريف كرديد رنگ سطر را مشخص مي‌كنيد.
    در كدي كه شما نوشتيد، بر اساس اين كه مقدار فيلد cla چي هست، (مقدار يك يا مقداري برابر edit) رنگ فونت را قرمز مي‌كنه. البته بهتره از يك else هم استفاده بشه و رنگ فونت به مقدار مثلاً مشكي براي ساير سطرها تنظيم بشه.


    يا علي... موفق باشيد...

  5. #5
    کاربر دائمی آواتار Modernidea
    تاریخ عضویت
    خرداد 1387
    محل زندگی
    »مشهد الرضا«
    پست
    573

    نقل قول: مشکل با رنگ کردن سطر در dbgrid

    نقل قول نوشته شده توسط farzad_az_shiraz مشاهده تاپیک
    از دستمون به خاطر پاسخش ممنونم ، اگه کسی از دوستان میتونه کاملتر جواب بده ممنون میشم یا یه کامپوننتی که به جای dbgrid ازش استفاده کنم
    بازم ممنون
    کدام قسمت رو متوجه نشدید؟

    کامپننتی که من معرفی کردم یکی از بهترین هاست.

    قرار دادن لینک کامپوننت در این فاروم قانونی نیست. مگر اینکه یک کامپوننت رایگان باشه.

    آدرس سایت این کامپوننت : کلیک کنید

    اگر این کامپوننت رو خواستید. با پیام خصوصی به من اطلاع بدبد.

    موفق باشید.

  6. #6
    کاربر تازه وارد
    تاریخ عضویت
    شهریور 1385
    محل زندگی
    خوشا شيراز و وصف بي مثالش ...
    سن
    41
    پست
    98

    نقل قول: مشکل با رنگ کردن سطر در dbgrid


    کامپننتی که من معرفی کردم یکی از بهترین هاست.
    واقعا ممنونم اما این پروژه چون صدرصد نشده نمی خوام فعلا هزینه کنم. اگه میشه روی همون dbgrid منو راهنمایی کنید.

  7. #7

    نقل قول: مشکل با رنگ کردن سطر در dbgrid

    استفاده از کامپوننت های TMS Grid به هیچ عنوان توصیه نمیشه.
    برای رنگی کردن سطرها کد زیر رو پیشنهاد میکنم. به جای شرطی که من گذاشتم شما میتونی هر شرطی که دلت خواست بذاری


    procedure TDataBaseForm.artgrid(Sender: TObject; const Rect: TRect;
    DataCol: Integer; Column: TColumn; State: TGridDrawState);
    begin
    if ((Sender as tdbgrid).DataSource.DataSet.RecNo mod 2) = 0 then
    (Sender as tdbgrid).Canvas.Brush.Color :=$00EEDFD3; //or any color
    else (Sender as tdbgrid).Canvas.Brush.Color :=clWhite; ; //or any color
    end;

  8. #8
    کاربر دائمی آواتار Modernidea
    تاریخ عضویت
    خرداد 1387
    محل زندگی
    »مشهد الرضا«
    پست
    573

    نقل قول: مشکل با رنگ کردن سطر در dbgrid

    استفاده از کامپوننت های TMS Grid به هیچ عنوان توصیه نمیشه.
    لطفا دلیلش رو یا اینجا یا پیام خصوصی بگید.

    کنجکاو شدم که بدونم!

    موفق باشید.

  9. #9
    کاربر تازه وارد
    تاریخ عضویت
    شهریور 1385
    محل زندگی
    خوشا شيراز و وصف بي مثالش ...
    سن
    41
    پست
    98

    نقل قول: مشکل با رنگ کردن سطر در dbgrid

    ممنون از لطف همه دوستان ، حتما کد راتست می کنم


    استفاده از کامپوننت های TMS Grid به هیچ عنوان توصیه نمیشه.
    ممنون می شم دلیلش را بگید تا من هم بدونم

  10. #10
    کاربر تازه وارد
    تاریخ عضویت
    شهریور 1385
    محل زندگی
    خوشا شيراز و وصف بي مثالش ...
    سن
    41
    پست
    98

    نقل قول: مشکل با رنگ کردن سطر در dbgrid

    سلام
    ببخشید من یه کار واسم پیش اومد نتونستم زودتر سوالم را ادامه بدم
    میشه بگید این کد را باید کجا بنویسم ؟

  11. #11
    کاربر دائمی آواتار Modernidea
    تاریخ عضویت
    خرداد 1387
    محل زندگی
    »مشهد الرضا«
    پست
    573

    نقل قول: مشکل با رنگ کردن سطر در dbgrid

    در رویداد DrawColumnCell مربوط به Grid

  12. #12
    کاربر تازه وارد
    تاریخ عضویت
    شهریور 1385
    محل زندگی
    خوشا شيراز و وصف بي مثالش ...
    سن
    41
    پست
    98

    نقل قول: مشکل با رنگ کردن سطر در dbgrid

    ممنون از شما اما کدی را که آقای صالحی گفته بودن نوشتم و هر چی بالا و پایینش کردم هیچ تغییری نکرد
    ممنون میشم کمکم کنید

  13. #13
    کاربر دائمی آواتار Modernidea
    تاریخ عضویت
    خرداد 1387
    محل زندگی
    »مشهد الرضا«
    پست
    573

    نقل قول: مشکل با رنگ کردن سطر در dbgrid

    نقل قول نوشته شده توسط farzad_az_shiraz مشاهده تاپیک
    ممنون از شما اما کدی را که آقای صالحی گفته بودن نوشتم و هر چی بالا و پایینش کردم هیچ تغییری نکرد
    ممنون میشم کمکم کنید
    حق باشماست.
    کدی که ایشون گذاشتن 2 تا دستور کم داره !
    کلا، کدی که ایشون گذاشتن فقط باعث میشه که سطرهای گرید، یکی در میان رنگش فرق کنه.
    همچنین ذکر کردند که میتونید بجای این شرط هر شرطی بزارید.

    خوب اگر اصرار دارید از همین کد استفاده کنید، مشکلی نیست تا جایی که بتونم کمکتون میکنم.

    شما برای اینکه همیشه در برنامه رکوردهای حذف شده را به رنگ مشخصی در بیاورید باید یک فیلد به جدولتان اظافه کنید که مشخص کند این رکورد عضو رکوردهای حذف شده است یا نه.
    به عنوان مثال فیلدی به نام Del از نوع Boolean بسازید.
    برای رکورد های حذف شده باید این فیلد را برابر True و برای رکوردهای حذف نشده برابر False قرار بدید.

    با استفاده از کد ذیل میتونید به هدفتون برسید.

    procedure TForm1.dbgrd1DrawColumnCell(Sender: TObject; const Rect: TRect;
    DataCol: Integer; Column: TColumn; State: TGridDrawState);
    begin

    if ADOTable1.FieldByName('Del').AsBoolean = True then
    (Sender as tdbgrid).Canvas.Brush.Color :=$00EEDFD3 //or any color
    else
    (Sender as tdbgrid).Canvas.Brush.Color :=clWhite ; //or any color
    (Sender as tdbgrid).Canvas.FillRect(Rect);
    (Sender as tdbgrid).DefaultDrawColumnCell(Rect, DataCol, Column, State);
    end;


    لطفا نتیجه را اعلام کنید.

    موفق باشید.

  14. #14
    کاربر تازه وارد
    تاریخ عضویت
    شهریور 1385
    محل زندگی
    خوشا شيراز و وصف بي مثالش ...
    سن
    41
    پست
    98

    نقل قول: مشکل با رنگ کردن سطر در dbgrid

    Modernidea ممنون از اینکه وقت میزاری اما من کد شما را با یه تغییر کوچیک به صورت زیر نوشتم که البته با کد شما فرقی نمیکنه اما جواب نگرفتم.




    if ADOQuery1.FieldByName('Del').Value='t' then
    (Sender as tdbgrid).Canvas.Brush.Color :=$00EEDFD3 //or any color
    else
    begin
    (Sender as tdbgrid).Canvas.Brush.Color :=clWhite ; //or any color
    (Sender as tdbgrid).Canvas.FillRect(Rect);
    (Sender as tdbgrid).DefaultDrawColumnCell(Rect, DataCol, Column, State);
    end;



    که البته begin و end ، مربوط به else را هم برداشتم اما بازم فرقی نکرد

    در ضمن فیلد del از نوع char هست که با t و f مقداردهی میشه

  15. #15
    کاربر دائمی آواتار Modernidea
    تاریخ عضویت
    خرداد 1387
    محل زندگی
    »مشهد الرضا«
    پست
    573

    نقل قول: مشکل با رنگ کردن سطر در dbgrid

    ظاهرا پایگاه داده شما Sql Server است.

    به دو علت تغییرات برای شما اعمال نمیشه :
    1. فیلد رو از نوع nvarchar انتخاب کنید.
    2. Begin .. end را حذف کنید. زیرا دو دستور آخر باید جدا از شرت به همه سطرها اعمال شود.

    procedure TForm1.dbgrd1DrawColumnCell(Sender: TObject; const Rect: TRect;
    DataCol: Integer; Column: TColumn; State: TGridDrawState);
    begin
    if ADOQuery1.FieldByName('Del').Value= 't' then
    (Sender as tdbgrid).Canvas.Brush.Color :=$00EEDFD3 //or any color
    else
    (Sender as tdbgrid).Canvas.Brush.Color :=clWhite ; //or any color

    (Sender as tdbgrid).Canvas.FillRect(Rect);
    (Sender as tdbgrid).DefaultDrawColumnCell(Rect, DataCol, Column, State);

    end;



    موفق باشید.

  16. #16
    کاربر تازه وارد
    تاریخ عضویت
    شهریور 1385
    محل زندگی
    خوشا شيراز و وصف بي مثالش ...
    سن
    41
    پست
    98

    نقل قول: مشکل با رنگ کردن سطر در dbgrid

    سلام دوست عزیز
    من هرکاری کردم این دستور بهم جواب نداد
    ببین من میخوام زمانی که دکمه حذف را میزنم به جای حذف یه رکورد اونو واسم مثلا رنگ قرمز کنه و این تغییر رنگ همیشه باقی بمونه
    آیا این کار شدنی هست ؟
    من یه فیلد به نام del از نوعchar (که به پیشنهاد دوستمون nvarchar هم انتخاب کردم ولی جواب نداد) دارم که هر رکوردی که تغییر رنگ کنه را از نوع T ، در غیر این صورت اون فیلد با حرف F مقدار دهی میشه. این کار برای اینه که من همیشه اون رکورد حذف شده را با مثلا رنگ قرمز داشته باشم.
    سوال من اینه که چطوری اون رکورد را تغییر رنگ بدم ؟؟؟؟چ
    ممنون میشم کمکم کنید

  17. #17
    کاربر دائمی آواتار Modernidea
    تاریخ عضویت
    خرداد 1387
    محل زندگی
    »مشهد الرضا«
    پست
    573

    نقل قول: مشکل با رنگ کردن سطر در dbgrid

    نقل قول نوشته شده توسط farzad_az_shiraz مشاهده تاپیک
    سلام دوست عزیز
    من هرکاری کردم این دستور بهم جواب نداد
    ببین من میخوام زمانی که دکمه حذف را میزنم به جای حذف یه رکورد اونو واسم مثلا رنگ قرمز کنه و این تغییر رنگ همیشه باقی بمونه
    آیا این کار شدنی هست ؟
    من یه فیلد به نام del از نوعchar (که به پیشنهاد دوستمون nvarchar هم انتخاب کردم ولی جواب نداد) دارم که هر رکوردی که تغییر رنگ کنه را از نوع T ، در غیر این صورت اون فیلد با حرف F مقدار دهی میشه. این کار برای اینه که من همیشه اون رکورد حذف شده را با مثلا رنگ قرمز داشته باشم.
    سوال من اینه که چطوری اون رکورد را تغییر رنگ بدم ؟؟؟؟چ
    ممنون میشم کمکم کنید
    سلام

    کدی که من قرار دادم همینی که شما میخوای رو انجام میده و مشکلی نداره.

    شما کد مربوط به قسمتی که فیلد DEL رو مقدار دهیی میکنید را اینجا قرار بدید.

    موفق باشید

  18. #18
    کاربر تازه وارد
    تاریخ عضویت
    شهریور 1385
    محل زندگی
    خوشا شيراز و وصف بي مثالش ...
    سن
    41
    پست
    98

    نقل قول: مشکل با رنگ کردن سطر در dbgrid

    دوست خوبم ممنون از راهنماییت مشکلم حل شد.
    دلیلی که کد واسه من تغییر نمیکرد این بود که یکی ار رکورها با t مقدار دهی شده بود و کد شما اون رکورد را قرمز نمیکرد اما یه بار دیگه مقدار دهی کردم درست شد.

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

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