سلام و خسنه نباشيد براي مطالب جامعتون.
من دنبال راهي ميگردم كه بشه در سلول هاي يك dbgrid عكس زمينه گذاشت.
منظور يك عكس زمينه ثابت براي تمام سلول هاست.
و بعد از اون سلول انتخاب شده عكس زمينش عوض بشه.
تشكر.
سلام و خسنه نباشيد براي مطالب جامعتون.
من دنبال راهي ميگردم كه بشه در سلول هاي يك dbgrid عكس زمينه گذاشت.
منظور يك عكس زمينه ثابت براي تمام سلول هاست.
و بعد از اون سلول انتخاب شده عكس زمينش عوض بشه.
تشكر.
سلام
كسي خونه نيست.
بحث اين تاپيك مگه تموم شده؟؟؟
يكي به دادم برسه لطفا.![]()
اين عكس رو مي خوام بذارم back سلول ها
و اينم وقتي يه cell انتخاب شد.
كه در آخر تبديل شه به اين
![]()
آخرین ویرایش به وسیله carbon : سه شنبه 16 مهر 1387 در 01:18 صبح دلیل: اشتباه لپي
دوست عزیز من راه رو پیدا کردم ولی نمیتونم سایزش رو درست کنم و در ضمن ایراد دوم اینه که وقتی تو حالت ادیت میره کل عکس پاک میشه من سورس رو از اینجا پیدا کردم ولی نتونستم استفاده کنم با تغییراتی که دادم موفق شدم اجراش کنم
تازه اگه اینو تو گوگل سرچ کنی کلی سایت در این مورد برات میاره
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.
سلام یه سوال دارم من یه DBGrid تو فرمم دارم که با دستورات sql از یه جدول یه جستجو رو نمایش میده حالا من میخوام تو این DBGrid ستون اول و سطر آخر رو بخونم باید چه کدی استفاده کنم
آخرین ویرایش به وسیله carbon : سه شنبه 07 آبان 1387 در 00:11 صبح دلیل: غلط املايي
سلام دوستان، من یه سوال داشتم، ممنون میشم اگه جواب بدید، من میخوام عنوان جدولم(dbgrid) فارسی باشه، جدول وقتی به adotable وصل باشه میشه این کارو کرد ولی وقتی به ado query وصل باشه و هر بار جدول رو clear کرد چه جوری title رو فارسی کنم؟ در ضمن دیتابیسم حتما باید انگلیسی باشه
سلام من میخوام با انتخاب رکورد و زدن بر روی یک کلید اون رکورد رنگی شه در ضمن من از پارادوکس هم استفاده می کنم در ضمن اطلاعاتی که در این تایپک گذاشتید خوبه ممکنه این چیزی خواستم باشه در تایپیک اگه ممکنه linkاونو برام بذارید اگه منو راهنمایی کنید ممنون میشم
با تشكر از دوستان كه مطالب مفيدي را در اختيار ما قرار دادند
قبلا در مورد انتخاب تعداد خاصي از ركورد ها در دي بي گريد و ويرايش اطلاعات فيلد هاي اون بحث شد كه نتيجه خوبي هم داشت
حالا موضوع اينه كه اگه بخواهيم تغييراتي در اطلاعات افراد انتخاب نشده بديم
چكار بايد كرد؟
مثال براي افرادي كه كاربر انتخاب ميكنه پروسه A و براي افراد انتخاب نشده پروسه B
اجرا بشه .
ممنون از توجه شما
سلام
چرا اينجا كسي به سوال من جواب نمي ده اين سايت قبلا خيلي بهتر بود به سوال تمام كاربر ها جواب ميداد ولي الان نه من الان 2 هفته سوالمو توي تايپيك مربوطه و تايپيك جداگانه مطرح كردم ولي انگار نه انگار
سلام
من مي خوام يك ركورد را انتخاب كنم و با زدن بر روي يك buttonرنگ ركورد انتخابي عوض شه ممنون
سلام
درمورد سوالتون:
من درست نمی دونم برنامتون چطوری هست اما یکی از دو راه زیر رو می تونید انجام بدین:
1) اگه رکورد های مورد نظر همشون دارای یک خصوصیت خاص هستند.مثلا همه این رکوردها که میخواهین رنگی بشه نامشون ali هست و باید هر رکوردی که نامش ali هست به رنگ قرمز باشند پس می تونید دستور زیر رو در خاصیت OnDrawDataCell اون DBGrid بنویسید:
procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect
;(Field: TField; State: TgridDrawState
begin
if TABLE1.FieldByName('NAME').AsString= 'ali' then
;DBGrid1.Canvas.Brush.Color:=clred
;(DBGrid1.Canvas.TextRect(rect,rect.left+2,rect.to p+2,field.AsString
;end
با این کار همه رکورد هایی که فیلد نام آن ali هست به رنگ قرمز در می آیند و اگه رکورد جدیدی هم وارد جدول شود که فیلد نام آن ali هست ،آن رکورد نیز قرمز رنگ می شود.
2) اما اگر این رکورد ها با بقیه رکوردهای جدول فرقی نمی کنند و کلید خاصی برای تشخیص آن وجود ندارد و باید خودتون مشخص کنید که کدام رکورد باید رنگش قرمز باشه،پس باید برنامتون رو طوری بنویسید که اگه یک بار دیگه وارد برنامه شدین اون رکوردهایی که رنگشون رو عوض کردین هنوز به همون رنگ باشند(برای همیشه).
پس به نظر من بهتره که اول برای اون جدولتون یک فیلد جدید اضافه کنید مثلا به نام recordcolor و از نوع number باشه حال در برنامه تون دستور زیر رو در اون دکمه که گفتین بنویسید:
;(procedure TForm1.Button1Click(Sender: TObjectو در خاصیت OnDrawDataCell اون DBGrid بنویسید:
begin
;TABLE1.edit
;TABLE1.FieldByName(' recordcolor').asinteger:=1
;Table1.post
;End
if TABLE1.FieldByName(' recordcolor').asinteger=1 then
;DBGrid1.Canvas.Brush.Color:=clred
;(DBGrid1.Canvas.TextRect(rect,rect.left+2,rect.to p+2,field.AsString
همین.
![]()
آخرین ویرایش به وسیله دکمه64 : پنج شنبه 21 آذر 1387 در 12:02 عصر دلیل: مرتب نبود
یادم رفت بگم شما می تونید اون فیلد جدید رو که اضافه کردین رو مخفی کنید.تا تو برنامه معلوم نباشه.
با سلام
کاربر محترم و گرامی Hsimple11
من خیلی احتیاج به مورد اشاره شده شما دارم و تمام موارد شما رو هم به صورت زیر انجام دادم می شه لطف کنید اشکال کار رو بگید.
ابتدا یک دیتا ست جدا گذاشتم و اون رو ربط دادم به جدولی که می خواهم بعدا در combo بیاید بعد فیلد دیتا ستم که قرار است combo شود و به dbgrid وصل است
lookupdataset آنرا به دیتا ست جدولی که قرار است در combo قرار بگیرد ارتباط دادم و lookupkeyfeild آنرا فیلدی که می خوام در combo باشد قرار دادم
خاصیت بوتون استیل اون فیلد را روی قرار cdsauto دادم .ولی موقع اجرا combo ظاهر نمی شود .
یعنی من قسمتی را کسر یا اشتباه کردم .
----------------------------------------------------------------------------------------
تعریف ستونهای جستجو -----------> نوشته شده توسط Hsimple11
اگر میخواهید ستونی یک لیست را از جدولی دیگه نشون بده، ابتدا باید یک فیلد جستجو تعریف کنید. بعد خاصیت FieldName را از ستون مورد نظر به اون فیلد جستجو مقداردهی کنید و خاصیت ButtonStyle را cbsAuto قرار دهید. هرگاه اون ستون انتخاب شود، یک لیست که محتویات آن از جدول جستجو می باشد نشان داده می شود.
procedure TForm2.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
Field: TField; State: TGridDrawState);
begin
if form2.Table1.FieldByName('user').AsString= 'kharab' then
DBGrid1.Canvas.Brush.Color:=clBlue;
DBGrid1.Canvas.TextRect(rect,rect.left+2,rect.top+ 2,field.AsString);
end;
من اين كد رو نوشتم ولي در فيلد userركوردهايي كه kharab بود رو قرمز نكرد علت چيه؟
ببخشيد آبي يا قرمز فرقي نمي كنه در كل رنگي نكرد
من یه بار دیگه برنامه رو تست کردم.وبه یه نتیجه رسیدم:
نمی دونم چرا ولی اگه روی dbgrid1 دوبار کلیک کنید و اون کادر Editing باز بشه نباید فیلد های جدول رو در اون add کنید. چون اگه این کار رو کنید دیگه کار نمی کنه(رنگی نمیشه).
اگه خالی نیست همه رو انتخاب کنید و حذف کنید.
اما اگه شما حتما باید از کادر editingdbgrid1.columns استفاده کنید.مثلا برای فارسی نوشتن عنوان فیلدها.بهتره از یه روشی دیگه استفاده کنید:
شما میتونید بجای اینکه روی dbgrid دوبار کلیک کنید که کادرediting باز بشه،روی table1 دوبار کلیک کرده تا کادر کوچکی(تیتر آن:form1.table1) باز شود، در آن کلیک راست کرده و گزینه add allfileds را انتخاب کنید تا تمامی فیلدهای جدول نشان داده شود. حالا هرکدام از فیلدها را انتخاب کرده و در پانل خصوصیات آن،خصوصیت displaylabel را انتخاب کرده و نام فارسی آن را تایپ کنید .برای وسط چین کردن اطلاعات درون جدول از خصوصیت alignment استفاده کنید.
اگر فیلدها رو به فارسی نوشتین اما فونت آن مشکل داشت یا خواستید یه فونت دیگه داشته باشه ، dbgrid را انتخاب کنید ودر پانل خصوصیات آن،خصوصیت titlefont را انتخاب کرده که در آن می توانید فونت فیلدها را تغییر دهید.برای تغییر فونت اطلاعات درون جدول نیز می توانید از خاصیت font استفاده کنید.
اينم يك كد كه آقاي حسين زاده برام گذاشتن منم براي شما مي ذارمش
روی این خاصیت دوبار کلیک کنید و دستورات زیر رو بنویسید.
اول DBGrid1رو انتخاب کنید
هر كس مي خواد بگه تا براش كل فايل رو ايميل كنم
با سلام
من ميخواهم براي كنترل وارد كردن اطلاعات در يك سل يك event بنويسم كه در صورتي كه اطلاعات وارد شده حائز شرايط نبود خروج از ان سل امكان پذير نباشد. كسي از دوستان ميتونه منو راهنمائي كنه
با تشكر
سلام دوستان عزیز من در جدولم فیلدی از نوع Real دارم که به طور مثال در اون مقدار 15.69 ذخیره شده می خواستم بدونم چرا در DBgrid عدد 15.6899995803833 در صورتی که وقتی خود جدول رو در SQL باز می کنم همان 15.69 رو نمایش میده البته با نوع Float هم همینطور بود برای حل این مشکل باید چکار کرد که همان عددی که در جدول هست نمایش داده بشه؟
با تشکر
من مبتدي هستم مي خواهم با كليك روي عنوان ستون نام اصلي ستون رو به دست بياورم يعني بفهمم كه كاربر با كليك روي عنوان ستون روي كدوم عنوان ستون كليك كرده
سلام كسي الان آنلاين هست من ي سوال فوري دارم جوابم رو بده؟
آخرین ویرایش به وسیله SayeyeZohor : دوشنبه 05 فروردین 1392 در 14:57 عصر
سلام خسته نباشین وقت بخیر
اساتید محترم لطفا کمک کنید فردا باید تحویل بدم 5 نمره داره (یعنی 29 اردیبهشت 92)
میخوام وقتی روی دکمه انجام کلیک میشه رکورد ها با هم جمع بشن یعنی اولی و اضافه کنه بعد همونو با بعدی جمع و الی آخر مثل ِ عکس
خیلی گشتم موفق نشدم عاجزانه درخواست کمک دارم چون حرفه ای هم نیستم ممنون
![]()
این چه کاریه آخه؟
یک قانون رو چند بار باید گوشزد کرد؟
از طرفی کار شما چه ربطی به گرید داره؟
نشستید نشستید شب تحویل اومدید اینجا انتظار دارید براتون کسی کاری انجام بده؟
نکنید عزیز من
توابع تبدیل تاریخ با دقت 5000 سال
پذیرش پروژه، کامپوننت، آموزش برنامه نویسی (دلفی، اس کیو ال، ..) -> 09123780840
پایگاه داده، تیونینگ، طراحی و پیاده سازی ..
سلام دوستان امکانش هست
یه سمپل کوچیک از قرار دادن عکس در بک گراند dbgrid بگذارید
با تشکر
یاعلی مدد
سلام.
کار سختی نیست. در مورد calculeted fields جستجو نمایید .
چه ربطی داره؟ مگر می خواد پشت هر فیلد عکس بذاره؟!!کار سختی نیست. در مورد calculeted fields جستجو نمایید .
شما باید متدهای Paint رو OverRide کنید.
توابع تبدیل تاریخ با دقت 5000 سال
پذیرش پروژه، کامپوننت، آموزش برنامه نویسی (دلفی، اس کیو ال، ..) -> 09123780840
پایگاه داده، تیونینگ، طراحی و پیاده سازی ..
درود دوستان
میخوام alignment فقط یک ستون از datagridview رو left to right کنم. چیکار کنم؟
مرسی
سلام.
روی گرید دو بار کلیک کرده و تک تک ستونهایی رو که لازم دارید اد کنید و دیتای متصل بهش رو هم مشخص کنید.
بر روی ستونی که می خواهید، در همین ادیتور کلیک کرده و آیتم های مربوط به title رو اصلاح کنید.
در حالت ران تایم هم می تونید با داشتن اندیس یک ستون، همین کار رو براش انجام بدید.
توابع تبدیل تاریخ با دقت 5000 سال
پذیرش پروژه، کامپوننت، آموزش برنامه نویسی (دلفی، اس کیو ال، ..) -> 09123780840
پایگاه داده، تیونینگ، طراحی و پیاده سازی ..
ممنون ، اما من می خوام alignment فقط یک ستون از gridview رو خودم به صورت دستی ( توو برنامه نویسی) LeftToRight کنم. چطور می شه؟
گفتم که بهتون. تست کنید.
توابع تبدیل تاریخ با دقت 5000 سال
پذیرش پروژه، کامپوننت، آموزش برنامه نویسی (دلفی، اس کیو ال، ..) -> 09123780840
پایگاه داده، تیونینگ، طراحی و پیاده سازی ..
هر کاری کردم نشد. میشه یه نمونه واسم بنویسید لطفا