نقل قول نوشته شده توسط carbon مشاهده تاپیک
سلام
كسي خونه نيست.
بحث اين تاپيك مگه تموم شده؟؟؟
يكي به دادم برسه لطفا.
اين عكس رو مي خوام بذارم back سلول ها
و اينم وقتي يه cell انتخاب شد.

كه در آخر تبديل شه به اين

دوست عزیز من راه رو پیدا کردم ولی نمیتونم سایزش رو درست کنم و در ضمن ایراد دوم اینه که وقتی تو حالت ادیت میره کل عکس پاک میشه من سورس رو از اینجا پیدا کردم ولی نتونستم استفاده کنم با تغییراتی که دادم موفق شدم اجراش کنم
تازه اگه اینو تو گوگل سرچ کنی کلی سایت در این مورد برات میاره

Drawing an image in a cell of a Delphi DBGrid

http://delphi.about.com/library/weekly/aa032205a.htm

اینم کد خودم بعد از دستکاری

در اینجا اسم گرید من DBGrid_ostan هستش دوتا فیلد name , id داره
اسم imagelist همون ImageList1 هستش توشم عکسها رو گذاشتم رنگ سبز index 0 هستش و نارنجی index 1 البته مجبور شدم عکسهات رو با فتوشاپ به bmp تبدیل کنم
چند تا کامپوننت هم پیدا کردم که همین کار رو میکنه ولی بهتره راه حل رو با خود گرید دلفی پیدا کنیم - کسی میتونه راهنمایی کنه ؟ تازه چطوری کدش رو بنویسیم که رنگها رو یکی در میون نشون بده ؟ میشه recordcount کل گرید رو گرفت و با تقسیم بر 2 باقیمانده ها رو ..... یه چیزی تو این مایه ها که فردها سبز باشند و زوجها نارنجی



procedure Tfrm_ostan.DBGrid_ostanDrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
var
bitmap : TBitmap;
fixRect : TRect;
bmpWidth : integer;
imgIndex : integer;
begin
fixRect := Rect;
if DBGrid_ostan.Columns.Items[0].FieldName='id' then
begin
if DBGrid_ostan.Fields[0].Value > 1 then
imgIndex := 0
else if DBGrid_ostan.Fields[0].Value > 2 then
imgIndex := 1
else
imgIndex := 1;
bitmap := TBitmap.Create;
try

ImageList1.GetBitmap(imgIndex,bitmap);
bmpWidth := (Rect.Bottom - Rect.Top);
fixRect.Right := Rect.Left + bmpWidth;
DBGrid_ostan.Canvas.StretchDraw(fixRect,bitmap);
finally
bitmap.Free;
end;
fixRect := Rect;
fixRect.Left := fixRect.Left + bmpWidth;
end;
DBGrid_ostan.DefaultDrawColumnCell( fixRect, DataCol, Column, State);

end;

end.