نقل قول: همه چیز در مورد DBGrid
با سلام خدمت دوستان
يه مشكلي تو رنگي كردن 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رو تو مسير گتابهانه بذاري. (يه همچين چيزايي :لبخند:)
نقل قول: همه چیز در مورد DBGrid
سلام.
مشکل شما قدری عجیبه. بعید می دونم اشکال مربوط به اینجایی باشه که گفتید. بررسی کنید ببینید اشتباهی به جای Rect جایی ننوشتید TRect ؟
نقل قول: همه چیز در مورد DBGrid
نقل قول:
نوشته شده توسط
You-See
سلام.
مشکل شما قدری عجیبه. بعید می دونم اشکال مربوط به اینجایی باشه که گفتید. بررسی کنید ببینید اشتباهی به جای Rect جایی ننوشتید TRect ؟
با تشكر از جوابتون
من جايي از ract يا TRect استفاده نكردم. فقط تو تعريف خود پروسيژور هست.
نقل قول: همه چیز در مورد DBGrid
Windows رو در یوزز بیاورید دوباره چک کنید.
نقل قول: همه چیز در مورد DBGrid
نقل قول:
نوشته شده توسط
You-See
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
مقادیر عددی چرا کوتیشن دارند؟
Drag & Drop سطرهای یک DBGrid
برای جابجایی یک سطر از 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تون رو قرار بدین.
موفق باشین.
نقل قول: همه چیز در مورد DBGrid
سلام
من از کامپوننت Ehlib تو برنامم استفاده میکنم
میخواستم بدونم چطور میشه تعداد کاراکتر های ورودی رو توی DBGRID کنترل کرد که از یه مقداری بیشتر نشه
چون داخل برنامه ارور نشون میده به کاربر.
نقل قول: همه چیز در مورد DBGrid
سلام دوستان، من یه سوال داشتم، ممنون میشم اگه جواب بدید، من میخوام عنوان جدولم(dbgrid) فارسی باشه، جدول وقتی به adotable وصل باشه میشه این کارو کرد ولی وقتی به ado query وصل باشه و هر بار جدول رو clear کرد چه جوری title رو فارسی کنم؟ در ضمن دیتابیسم حتما باید انگلیسی باشه