PDA

View Full Version : مشکل با DBGrid



amir_king2_2
یک شنبه 08 تیر 1382, 08:04 صبح
سلام. :o
فرض کنیم من یه Table دارم که دو تا فیلد نام و نمره رو داره. این رو به یک DataGrid متصل کردم.
حالا میخوام اون رکورد هایی که نمرشون از 10 کمتره تو DBGrid با رنگ قرمز نشون داده بشه و بقیه با رنگ پیش فرض.
آیا راهی برای این کار وجود داره ؟

با تشکر : امیر خلابش

hr110
یک شنبه 08 تیر 1382, 12:26 عصر
با سلام
کافی است که کد زیر را در پراپرتی 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;

شفیعی
چهارشنبه 25 تیر 1382, 23:09 عصر
سلام
دوست عزیز در مورد دستور اخر یک مقدار توضیح دهید
DrawText(Grid.Canvas.Handle,PChar(S),Length(S),R,D T_RIGHT+DT_RTLREADING)
وقتی این دستور را در DBGRID استفاده می کنم فونت اعداد که انگلیسی است به فارسی تبدیل می شود برای حل مشکل چکار باید کرد

hr110
شنبه 28 تیر 1382, 06:51 صبح
با سلام
با سلام دوست عزیز همه چیز مربوطه به پارامتر آخر میباشد، کمی راهنمای دلفی را مطالعه کن

موفق باشید

شنبه 28 تیر 1382, 13:30 عصر
با اجازه اقای 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;

شفیعی
دوشنبه 13 مرداد 1382, 00:41 صبح
دوست عزیز سلام
من می خواهم در DBGRID با تغییر ویا اضافه کردن محتوی یک فیلد تغییر کند مثلا وقتی در داخل یک فیلد مقدار A را می نویسیم بعد از حرکت از روی این فیلد محتوای ان تبدیل به A* شود چه وقتی که یک رکورد جدید ایجاد می کنیم چه وقتی که یک رکورد را تغییر می دهیم در DBGRID