..........
..........
توابع تبدیل تاریخ با دقت 5000 سال
پذیرش پروژه، کامپوننت، آموزش برنامه نویسی (دلفی، اس کیو ال، ..) -> 09123780840
پایگاه داده، تیونینگ، طراحی و پیاده سازی ..
با سلام خدمت دوستان
يه مشكلي تو رنگي كردن 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 ؟
توابع تبدیل تاریخ با دقت 5000 سال
پذیرش پروژه، کامپوننت، آموزش برنامه نویسی (دلفی، اس کیو ال، ..) -> 09123780840
پایگاه داده، تیونینگ، طراحی و پیاده سازی ..
Windows رو در یوزز بیاورید دوباره چک کنید.
توابع تبدیل تاریخ با دقت 5000 سال
پذیرش پروژه، کامپوننت، آموزش برنامه نویسی (دلفی، اس کیو ال، ..) -> 09123780840
پایگاه داده، تیونینگ، طراحی و پیاده سازی ..
مرسي از جوابتون.
اون مشكل حل شد ولي حالا اين اين خطوط ارور ميگيره.
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)
مقادیر عددی چرا کوتیشن دارند؟
توابع تبدیل تاریخ با دقت 5000 سال
پذیرش پروژه، کامپوننت، آموزش برنامه نویسی (دلفی، اس کیو ال، ..) -> 09123780840
پایگاه داده، تیونینگ، طراحی و پیاده سازی ..
برای جابجایی یک سطر از 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 کنترل کرد که از یه مقداری بیشتر نشه
چون داخل برنامه ارور نشون میده به کاربر.