یادم رفت بگم شما می تونید اون فیلد جدید رو که اضافه کردین رو مخفی کنید.تا تو برنامه معلوم نباشه.
Printable View
یادم رفت بگم شما می تونید اون فیلد جدید رو که اضافه کردین رو مخفی کنید.تا تو برنامه معلوم نباشه.
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 کنید. چون اگه این کار رو کنید دیگه کار نمی کنه(رنگی نمیشه).
اگه خالی نیست همه رو انتخاب کنید و حذف کنید.
اينم يك كد كه آقاي حسين زاده برام گذاشتن منم براي شما مي ذارمش
روی این خاصیت دوبار کلیک کنید و دستورات زیر رو بنویسید.
اول DBGrid1رو انتخاب کنید
هر كس مي خواد بگه تا براش كل فايل رو ايميل كنم
اما اگه شما حتما باید از کادر editingdbgrid1.columns استفاده کنید.مثلا برای فارسی نوشتن عنوان فیلدها.بهتره از یه روشی دیگه استفاده کنید:
شما میتونید بجای اینکه روی dbgrid دوبار کلیک کنید که کادرediting باز بشه،روی table1 دوبار کلیک کرده تا کادر کوچکی(تیتر آن:form1.table1) باز شود، در آن کلیک راست کرده و گزینه add allfileds را انتخاب کنید تا تمامی فیلدهای جدول نشان داده شود. حالا هرکدام از فیلدها را انتخاب کرده و در پانل خصوصیات آن،خصوصیت displaylabel را انتخاب کرده و نام فارسی آن را تایپ کنید .برای وسط چین کردن اطلاعات درون جدول از خصوصیت alignment استفاده کنید.
اگر فیلدها رو به فارسی نوشتین اما فونت آن مشکل داشت یا خواستید یه فونت دیگه داشته باشه ، dbgrid را انتخاب کنید ودر پانل خصوصیات آن،خصوصیت titlefont را انتخاب کرده که در آن می توانید فونت فیلدها را تغییر دهید.برای تغییر فونت اطلاعات درون جدول نیز می توانید از خاصیت font استفاده کنید.
با سلام
کاربر محترم و گرامی Hsimple11
من خیلی احتیاج به مورد اشاره شده شما دارم و تمام موارد شما رو هم به صورت زیر انجام دادم می شه لطف کنید اشکال کار رو بگید.
ابتدا یک دیتا ست جدا گذاشتم و اون رو ربط دادم به جدولی که می خواهم بعدا در combo بیاید بعد فیلد دیتا ستم که قرار است combo شود و به dbgrid وصل است
lookupdataset آنرا به دیتا ست جدولی که قرار است در combo قرار بگیرد ارتباط دادم و lookupkeyfeild آنرا فیلدی که می خوام در combo باشد قرار دادم
خاصیت بوتون استیل اون فیلد را روی قرار cdsauto دادم .ولی موقع اجرا combo ظاهر نمی شود .
یعنی من قسمتی را کسر یا اشتباه کردم .
----------------------------------------------------------------------------------------
تعریف ستونهای جستجو -----------> نوشته شده توسط Hsimple11
اگر میخواهید ستونی یک لیست را از جدولی دیگه نشون بده، ابتدا باید یک فیلد جستجو تعریف کنید. بعد خاصیت FieldName را از ستون مورد نظر به اون فیلد جستجو مقداردهی کنید و خاصیت ButtonStyle را cbsAuto قرار دهید. هرگاه اون ستون انتخاب شود، یک لیست که محتویات آن از جدول جستجو می باشد نشان داده می شود.
با سلام
من ميخواهم براي كنترل وارد كردن اطلاعات در يك سل يك event بنويسم كه در صورتي كه اطلاعات وارد شده حائز شرايط نبود خروج از ان سل امكان پذير نباشد. كسي از دوستان ميتونه منو راهنمائي كنه
با تشكر
اینو بنویس جواب میده 100%
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
test1: Real;
RowNo: Integer;
farbe:TColor;
begin
with (Sender as TDBGrid) do
begin
if (gdSelected in State) then
begin
// Farbe für die Zelle mit dem Focus
// color of the focused row
Canvas.Brush.Color := clblue;
end
else
begin
// Zeile erfahren
// get the actual row number
rowno := ADOTable1.RecNo;
// gerade und ungerade Zeilen ermitteln
// odd or even ?
test1 := (RowNo / 2) - trunc(RowNo / 2);
// Zeile gerade…
// If it’s an even one…
if test1 = 0 then
begin
farbe := clSkyBlue
end
// …Zeile ungerade
// …else it’s an odd one
else
begin
farbe := $00FF80FF;
end;
Canvas.Brush.Color := farbe;
// Font-Farbe immer schwarz
// font color always black
Canvas.Font.Color := clBlack;
end;
Canvas.FillRect(Rect);
// Denn Text in der Zelle ausgeben
// manualy output the text
Canvas.TextOut(Rect.Left + 2, Rect.Top + 1, Column.Field.AsString);
end
end;
ما در خدمتیم
mr13668248@gmail.com:تشویق:
سلام دوستان عزیز من در جدولم فیلدی از نوع Real دارم که به طور مثال در اون مقدار 15.69 ذخیره شده می خواستم بدونم چرا در DBgrid عدد 15.6899995803833 در صورتی که وقتی خود جدول رو در SQL باز می کنم همان 15.69 رو نمایش میده البته با نوع Float هم همینطور بود برای حل این مشکل باید چکار کرد که همان عددی که در جدول هست نمایش داده بشه؟
با تشکر
سلام كسي الان آنلاين هست من ي سوال فوري دارم جوابم رو بده؟
من مبتدي هستم مي خواهم با كليك روي عنوان ستون نام اصلي ستون رو به دست بياورم يعني بفهمم كه كاربر با كليك روي عنوان ستون روي كدوم عنوان ستون كليك كرده
سلام خسته نباشین وقت بخیر
اساتید محترم لطفا کمک کنید فردا باید تحویل بدم 5 نمره داره (یعنی 29 اردیبهشت 92)
میخوام وقتی روی دکمه انجام کلیک میشه رکورد ها با هم جمع بشن یعنی اولی و اضافه کنه بعد همونو با بعدی جمع و الی آخر مثل ِ عکس
خیلی گشتم موفق نشدم عاجزانه درخواست کمک دارم چون حرفه ای هم نیستم ممنون
http://upload.tehran98.com/img1/hm4h06bzv80mkikzlbp.jpg
این چه کاریه آخه؟
یک قانون رو چند بار باید گوشزد کرد؟
از طرفی کار شما چه ربطی به گرید داره؟
نشستید نشستید شب تحویل اومدید اینجا انتظار دارید براتون کسی کاری انجام بده؟
نکنید عزیز من
سلام دوستان امکانش هست
یه سمپل کوچیک از قرار دادن عکس در بک گراند dbgrid بگذارید
با تشکر
یاعلی مدد
سلام.
کار سختی نیست. در مورد calculeted fields جستجو نمایید .
چه ربطی داره؟ مگر می خواد پشت هر فیلد عکس بذاره؟!!نقل قول:
کار سختی نیست. در مورد calculeted fields جستجو نمایید .
شما باید متدهای Paint رو OverRide کنید.
درود دوستان
میخوام alignment فقط یک ستون از datagridview رو left to right کنم. چیکار کنم؟
مرسی
سلام.
روی گرید دو بار کلیک کرده و تک تک ستونهایی رو که لازم دارید اد کنید و دیتای متصل بهش رو هم مشخص کنید.
بر روی ستونی که می خواهید، در همین ادیتور کلیک کرده و آیتم های مربوط به title رو اصلاح کنید.
در حالت ران تایم هم می تونید با داشتن اندیس یک ستون، همین کار رو براش انجام بدید.
ممنون ، اما من می خوام alignment فقط یک ستون از gridview رو خودم به صورت دستی ( توو برنامه نویسی) LeftToRight کنم. چطور می شه؟
گفتم که بهتون. تست کنید.
هر کاری کردم نشد. میشه یه نمونه واسم بنویسید لطفا
..........
با سلام خدمت دوستان
يه مشكلي تو رنگي كردن DBgrid دارم.
كلا وقتي رو خاصيت DrawColumnCell تو قسمت Event دابل كليك ميكنم ميره پروسيژورش رو اتوماتيك ايجاد ميكنه و حالا كه كدها رو نوشتم و كامپايل كردم از خود پروسيژور اين ارور رو ميگيره.
[dcc32 Error] Unit3.pas(113): E2003 Undeclared identifier: 'TRect'
از تعريف پروسيژور تو Type از اين خط:
procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
تو سايت هاي خارجي گشتم يه چيزايي نوشته بود گفته بود بايد فايل pasيا dcuرو تو مسير گتابهانه بذاري. (يه همچين چيزايي :لبخند:)
سلام.
مشکل شما قدری عجیبه. بعید می دونم اشکال مربوط به اینجایی باشه که گفتید. بررسی کنید ببینید اشتباهی به جای Rect جایی ننوشتید TRect ؟
Windows رو در یوزز بیاورید دوباره چک کنید.
مرسي از جوابتون.
اون مشكل حل شد ولي حالا اين اين خطوط ارور ميگيره.
if ((ADOQuery1.FieldByName('taeed').Value = '0') or (ADOQuery1.FieldByName('taeed').Value = '')) then
(Sender as tdbgrid).Canvas.Brush.Color :=clWhite; //or any color
if ADOQuery1.FieldByName('taeed').Value = '1' then
(Sender as tdbgrid).Canvas.Brush.Color := clblue; //or any color
if ADOQuery1.FieldByName('taeed').Value = '2' then
(Sender as tdbgrid).Canvas.Brush.Color := clTeal; //or any color
(Sender as tdbgrid).Canvas.FillRect(Rect);
(Sender as tdbgrid).DefaultDrawColumnCell(Rect, DataCol, Column, State);
اين پيام خطا مياد كه موندم چه ربطي داره آخه.
Could not convert variable of type (UnicodeString) into type (Double)
مقادیر عددی چرا کوتیشن دارند؟
برای جابجایی یک سطر از DBGrid از کد زیر استفاده کنید :
متغیر های زیر رو به یونیتتون اضافه کنید:
var
Form1: TForm1;
.
.
.
Pt: TGridCoord;
First,Last:integer;
FirstRec,LastRec:String;
.
.
.
implementation
{$R *.dfm}
در رویداد OnMouseMove ءDBGrid کدهای زیر را اضافه کنید:
if ssLeft in Shift then
begin
dbgrid1.BeginDrag(true);
First:=Pt.y;
end;
و در رویداد OnDragOver ءDBGrid نیز :
pt:= dbGrid1.MouseCoord( x, y ) ;
Last:=Pt.y;
و در پایان در رویداد OnDragDrop ءDBGrid یک متغیر از نوع Integer تعریف میکنیم و سپس کد زیر را مینویسیم :
i : Integer;
if (First>0) and (First<>Last) then
begin
FirstRec:='';
for i:=1 to Table1.FieldCount-1 do FirstRec:=FirstRec+Table1.Fields[i].AsString+'|';
Table1.MoveBy(Last-First);
LastRec:='';
for i:=1 to Table1.FieldCount-1 do LastRec:=LastRec+Table1.Fields[i].AsString+'|';
for i:=1 to Table1.FieldCount-1 do
begin
Table1.Edit;
Table1.Fields[i].AsString:=Copy(FirstRec,1,Pos('|',FirstRec)-1);
Delete(FirstRec,1,Pos('|',FirstRec));
Table1.Post;
end;
Table1.MoveBy(First-Last);
for i:=1 to Table1.FieldCount-1 do
begin
Table1.Edit;
Table1.Fields[i].AsString:=Copy(LastRec,1,Pos('|',LastRec)-1);
Delete(LastRec,1,Pos('|',LastRec));
Table1.Post;
end;
Table1.MoveBy(Last-First);
end;
همونطور که میبینین در این کد از Table برای اتصال به بانک استفاده شده , شما اگر از AdoQuery استفاده میکنین , در همین تابع آخر , هرجا Table بود کافیه به جاش نام ADOQueryتون رو قرار بدین.
موفق باشین.
سلام
من از کامپوننت Ehlib تو برنامم استفاده میکنم
میخواستم بدونم چطور میشه تعداد کاراکتر های ورودی رو توی DBGRID کنترل کرد که از یه مقداری بیشتر نشه
چون داخل برنامه ارور نشون میده به کاربر.
سلام دوستان، من یه سوال داشتم، ممنون میشم اگه جواب بدید، من میخوام عنوان جدولم(dbgrid) فارسی باشه، جدول وقتی به adotable وصل باشه میشه این کارو کرد ولی وقتی به ado query وصل باشه و هر بار جدول رو clear کرد چه جوری title رو فارسی کنم؟ در ضمن دیتابیسم حتما باید انگلیسی باشه