View Full Version : بروز رسانی dbgrid با استفاده از تایمر
rmb_ali
چهارشنبه 19 دی 1386, 11:43 صبح
دوستان من میخوام توی یکی از سل های dbgrid ام ساعت قرار بگیره و هر ثانیه بروز بشه یعنی توی این سل ساعت کار کنه آیا همچین کاری میشه؟
من به فکرم زد که از timer استفاده کنم ولی نمیدونم چه جوری میشه dbgrid رو آپدیت کنم
rmb_ali
چهارشنبه 19 دی 1386, 13:11 عصر
مثل اینکه نمیشه ؟؟؟؟؟؟؟؟؟
mohebbi_en
چهارشنبه 19 دی 1386, 15:13 عصر
سلام
باید فیلدی داخل جدول از نوع datetime تعریف کنی آنگاه با تایمر آنرا Update کنی و سپس آن جدول را به Dbgrid وصل کنید.
procedure TForm1.Timer1Timer(Sender: TObject);
begin
table1.First;
table1.Edit;
table1.FieldValues['tim']:=time;
table1.Post;
end;
SYNDROME
چهارشنبه 19 دی 1386, 15:17 عصر
دوستان من میخوام توی یکی از سل های dbgrid ام ساعت قرار بگیره و هر ثانیه بروز بشه یعنی توی این سل ساعت کار کنه آیا همچین کاری میشه؟
من به فکرم زد که از timer استفاده کنم ولی نمیدونم چه جوری میشه dbgrid رو آپدیت کنم
دوست عزیز این کار که شدنی است ولی چرا می خواهید این کار را انجام دهید؟
این کار باعث می شود شما هر ثانیه یک بار عمل Edit و Post را انجام دهید و این خودش کار چندان صحیحی نیست.
موفق باشید
rmb_ali
چهارشنبه 19 دی 1386, 18:54 عصر
البته من اینکارو میخوام روی dbgrid انجام بدم (با فیلدهای محاسباتی) نه روی جدول در ضمن اینکارو برای این میخوام که: یه جدولی دارم که کاربر وقتی کلید استارت رو میزنه شروع به ثبت زمان کنه و مدت زمان سپری شده رو ذخیره کنه بنابراین میخوام تا قبل از اینکه کاربر کلید استارت رو زد ساعت کار کنه ولی به محض اینکه کاربر کلید استارت رو زد فیلد startTime فریز بشه و فیلد endTime شروع به کار کنه
mohebbi_en
پنج شنبه 20 دی 1386, 07:58 صبح
مثال زیر دقیقا این کاری را که میخواهی انجام میده یک فرم و دوتا تایمر و یک دکمه که با کلیک اون کار مورد نظر شما انجام میشه ضمنا باید یک جدول با دو تا فیلد از نوع datetime هم داشته باشید.
procedure TForm1.FormShow(Sender: TObject);
begin
Timer1.Enabled:=true;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
table1.First;
table1.Edit;
table1.FieldValues['tim1']:=time;
table1.Post;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
table1.Active:=true;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Timer1.Enabled:=false;
Timer2.Enabled:=true;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
table1.Active:=false;
timer2.Enabled:=false;
Timer1.Enabled:=false;
end;
ام راحتتر اینه که توی دوتا edit کار ثبت زمانها را انجام بدی بعد به جدول منتقل کنی و اگر هم میخواهی حتما شکل جدولی داشته باشه از string grid استفاه کن.
mohebbi_en
پنج شنبه 20 دی 1386, 08:01 صبح
ببخشید procedure تایمر دوم اینه.
procedure TForm1.Timer2Timer(Sender: TObject);
begin
table1.First;
table1.Edit;
table1.FieldValues['tim2']:=time;
table1.Post;
end;
rmb_ali
پنج شنبه 20 دی 1386, 19:55 عصر
ممنون از راهنمایی تون
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.