-
مشکل با DBGrid
سلام. :o
فرض کنیم من یه Table دارم که دو تا فیلد نام و نمره رو داره. این رو به یک DataGrid متصل کردم.
حالا میخوام اون رکورد هایی که نمرشون از 10 کمتره تو DBGrid با رنگ قرمز نشون داده بشه و بقیه با رنگ پیش فرض.
آیا راهی برای این کار وجود داره ؟
با تشکر : امیر خلابش
-
با سلام
کافی است که کد زیر را در پراپرتی onDrawColumnCell بنویسید :
procedure TMainManager.DBGrid1DrawColumnCell(Sender : TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
Grid : TDBGrid;
R : TRect;
S : string;
begin
Grid:=Sender as TDBGrid;
R:=Rect;
S:=Column.Field.AsString;
Grid.Canvas.FillRect(Rect);
Grid.Canvas.Brush.Style:=bsClear;
if Grid.DataSource.DataSet.FieldByName('id').AsString ='ãÏíÑ' then
Grid.Canvas.Brush.Color:=$00DEE4FE
else
Grid.Canvas.Brush.Color:=$00DFFEDE;
Grid.Canvas.FillRect(Rect);
Grid.Canvas.Font.Style:=[fsBold];
Grid.Canvas.Font.Color:=clBlack;
DrawText(Grid.Canvas.Handle,PChar(S),Length(S),R,D T_RIGHT+DT_RTLREADING)
end;
-
سلام
دوست عزیز در مورد دستور اخر یک مقدار توضیح دهید
DrawText(Grid.Canvas.Handle,PChar(S),Length(S),R,D T_RIGHT+DT_RTLREADING)
وقتی این دستور را در DBGRID استفاده می کنم فونت اعداد که انگلیسی است به فارسی تبدیل می شود برای حل مشکل چکار باید کرد
-
با سلام
با سلام دوست عزیز همه چیز مربوطه به پارامتر آخر میباشد، کمی راهنمای دلفی را مطالعه کن
موفق باشید
-
با اجازه اقای h_R
این کد با کد بالا معادل هست البته یکم فهمش از اون اسونتره
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if dbgrid1.DataSource.DataSet.FieldByName('grade').As Integer<10 then
dbgrid1.Canvas.Brush.Color:=clred;
dbgrid1.DefaultDrawColumnCell(rect,datacol,column, state);
end;
-
دوست عزیز سلام
من می خواهم در DBGRID با تغییر ویا اضافه کردن محتوی یک فیلد تغییر کند مثلا وقتی در داخل یک فیلد مقدار A را می نویسیم بعد از حرکت از روی این فیلد محتوای ان تبدیل به A* شود چه وقتی که یک رکورد جدید ایجاد می کنیم چه وقتی که یک رکورد را تغییر می دهیم در DBGRID