View Full Version : رکورد دلخواهی را در BlackList قرار دهم و آن ستون DBgrid به رنگ مثلا قرمز شود.
ali_abbasi22145
جمعه 17 فروردین 1386, 10:35 صبح
سلام
چطور می توانم یک رکورد دلخواه را در BlackList قرار دهم و آن ستون DBgrid به رنگ مثلا قرمز شود.
mzjahromi
جمعه 17 فروردین 1386, 11:11 صبح
آن ستون یا آن ردیف؟
اگر منظورتون ردیف مورد نظر است, باید یه کاری شبیه به این انجام بدید
procedure TBrowseAccForm1.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
if ((Sender as tdbgrid).DataSource.DataSet.FieldByName('ODBC').As String) = ActiveAcc then
(Sender as tdbgrid).Canvas.Brush.Color :=$00FFCAFF ; //or any color
if ((Sender as tdbgrid).DataSource.DataSet.FieldByName('ODBC').As String) =
defaultAcc then
(Sender as tdbgrid).Canvas.Brush.Color :=$00FFC1C1 ; //or any color
if not(GDSelected in State) Then
(Sender as tdbgrid).DefaultDrawColumnCell(rect, datacol, column, state);
end;
ali_abbasi22145
جمعه 17 فروردین 1386, 20:15 عصر
سلام
آن ستون یا آن ردیف؟
ببخشید ردیف است!!!
ali_abbasi22145
شنبه 18 فروردین 1386, 20:58 عصر
سلام
آقای mzjahromi من کد شما استفاده کردم و هنگام run دو خطای زیر را نشان داد:
Build
[Error] Unit1.pas(1403): Undeclared identifier: 'ActiveAcc'
[Error] Unit1.pas(1406): Undeclared identifier: 'defaultAcc'
[Fatal Error] SCard.dpr(23): Could not compile used unit 'Unit1.pas'
به نظر می رسد باید چیزی را به Uses اضافه کنم یا چیز دیگر اگر هست لطفا کمک کنید...
mzjahromi
یک شنبه 19 فروردین 1386, 06:56 صبح
آقای عباسی...
اینها همان لیست سیاه شما است
شما باید اینها را با شروطی که میخواهید در صورت تحقق رنگ آن ردیف تغییر کند جایگزین کنید
ali_abbasi22145
دوشنبه 20 فروردین 1386, 13:04 عصر
سلام
خیلی متشکر دوست من!
آیا در سرعت برنامه تاثیر منفی می گذارد؟
mzjahromi
سه شنبه 21 فروردین 1386, 07:04 صبح
نه
...............
ali_abbasi22145
چهارشنبه 22 فروردین 1386, 15:16 عصر
نه
...............
سلام
1- کد رنگهای دیگر چیست در help دلفی پیدا نکردم(ابی-خاکستری-قرمز-زرد-بنفش و...)؟
2- اگر بخواهم در یک فیلد print_staus انهایی که printed هستند رنگ قرمز رنگ (قرمز کم رنگ) شود print_staus انهایی که unprinted هستند سفید پیشفرض باشد.
همچنین فیلد دیگر boss_confirm آنهایی که 1 هستند مثلا بنفش شود.
همچنین فیلد دیگر boss_expert آنهایی که 1 هستند مثلا زرد شود.
و...
روش کار چیست؟
هرچه تست کردم نتوانستم!
mzjahromi
پنج شنبه 23 فروردین 1386, 09:22 صبح
کد رنگها؟
یه سری رنگهای پیش فرض اسم دارن و میتونی از اسمشون استفاده کنی ک با cl شروع میشن
ما بقی رنگها هم مثلا روی خاصیت color مربوط به یک Edit دو بار کلیک کن رنگ رو انتخاب کن بعد اون مقداری که به خاصیت Color اون Edit تخصیص داده شد رو استفاده کن
اون چیزی که خواستی هم حالا با یه سری رنگهای دیگه تقریبا این شکلی میشه
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
if ((Sender as tdbgrid).DataSource.DataSet.FieldByName('Print_Sta tus').AsString) = 'printed' then
(Sender as tdbgrid).Canvas.Brush.Color :=clred ; //or any color
if ((Sender as tdbgrid).DataSource.DataSet.FieldByName('boss_conf irm').Asinteger) =1 then
(Sender as tdbgrid).Canvas.Brush.Color :=clnavy ; //or any color
if ((Sender as tdbgrid).DataSource.DataSet.FieldByName('boss_expe rt').Asinteger) =1 then
(Sender as tdbgrid).Canvas.Brush.Color :=clyellow ; //or any color
if not(GDSelected in State) Then
(Sender as tdbgrid).DefaultDrawColumnCell(rect, datacol, column, state);
end;
ali_abbasi22145
جمعه 24 فروردین 1386, 08:09 صبح
مرسی
البته قبل از مطلب آخرتان خودم بدست آوردم اما روش کارتان بهتر از من است و این هم روش من:
if ((Sender as tdbgrid).DataSource.DataSet.FieldByName('print_sta tus').AsString)='unprinted' then
(Sender as tdbgrid).Canvas.Brush.Color := $00FFFCCC ; // red or any color $00FFC1C1
if ((Sender as tdbgrid).DataSource.DataSet.FieldByName('confirm_o f_expert').AsString)='1' then
(Sender as tdbgrid).Canvas.Brush.Color := $00FFD4C7 ; //or any color $00FFCAFF $00FFC1
if ((Sender as tdbgrid).DataSource.DataSet.FieldByName('confirm_o f_office_manager').AsString)='1' then
(Sender as tdbgrid).Canvas.Brush.Color := $00FFC1 ; //or any color $00FFCAFF $00FFC1
if ((Sender as tdbgrid).DataSource.DataSet.FieldByName('confirm_o f_boss').AsString)='1' then
(Sender as tdbgrid).Canvas.Brush.Color := $00A1A1A2 ; //or any color $00FFCAFF $00FFC1
if( ((Sender as tdbgrid).DataSource.DataSet.FieldByName('confirm_o f_boss').AsString)='1' ) and
( ((Sender as tdbgrid).DataSource.DataSet.FieldByName('print_sta tus').AsString)='unprinted') then
(Sender as tdbgrid).Canvas.Brush.Color := $00FFCAFF ; //or any color $00FFCAFF $00FFC1
if not(GDSelected in State) Then
(Sender as tdbgrid).DefaultDrawColumnCell(rect, datacol, column, state);
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.