Mohammad S
سه شنبه 27 مرداد 1383, 13:17 عصر
با سلام خدمت تمامی دوستان عزیز
مشکلی که من دارم مربوط به اعمال فیلتر روی جداول از نوع DBISAM هست. دستوری که برای فیلتر نوشتم اینه:
DM.DBISAMKarmandan.Filter:='Family = '+QuotedStr(Karmandan_Show.Edit1.Text+'**');
علت اینکه دو تا * گذاشتم اینکه وقتی یکی بود، هنگام فیلتر کردن، اولین حرف فامیلی که زده می شد، مثل این بود که شما حرف اشتباه تایپ کرده اید ولی وقتی حرف دوم را میزدم، پیدا می کرد ؟! :?
من هم دو تا * گذاشتم و مشکل حل شد.
حالا مشکلی که دارم اینه: چون من در OnDrawDataCell مربوط به DBGrid، با استفاده از کدهای زیر، رکوردهای دو رنگی شده اند:
if (DM.DBISAMKarmandan.RecNo mod 2) = 0 then
Karmandan_Show.DBISAMDBGrid1.Canvas.Brush.Color := $00D6FCFC // Ñä ÒÑÏ ÈÑÇí ÑÏíÝ
else
Karmandan_Show.DBISAMDBGrid1.Canvas.Brush.Color := $00FFBFBF ; // Ñä ÈäÝÔ ÈÑÇí ÑÏíÝ
if gdSelected in State then
begin
DBISAMDBGrid1.Canvas.Brush.Color := clWhite; // Ñä Òãíäå ÓØÑí ˜å Ñæí Âä ˜áí˜ ÔÏå
DBISAMDBGrid1.Canvas.Font.Color := clRed; // Ñä ÓØÑí ˜å Ñæí Âä ˜áí˜ ÔÏå
end;
Karmandan_Show.DBISAMDBGrid1.Canvas.FillRect(Rect) ;
Karmandan_Show.DBISAMDBGrid1.DefaultDrawDataCell(R ect, Field, State);
گویا مشکل Table در DBISAM اینه که پس از اعمال فیلتر، پروسیجر فوق دوباره اجرا نمی شده همچنین OnCalcField هم گویا اجرا نمی شه چون من فیلدی به نام ردیف تعریف کردم که در واقع شماره رکورد جدول هست که پس از اعمال فیلتر، تغییر نمی کنه.
حالا من برای این مشکل عجیب غریب باید چکار کنم؟ :roll:
با تشکر :oops:
مشکلی که من دارم مربوط به اعمال فیلتر روی جداول از نوع DBISAM هست. دستوری که برای فیلتر نوشتم اینه:
DM.DBISAMKarmandan.Filter:='Family = '+QuotedStr(Karmandan_Show.Edit1.Text+'**');
علت اینکه دو تا * گذاشتم اینکه وقتی یکی بود، هنگام فیلتر کردن، اولین حرف فامیلی که زده می شد، مثل این بود که شما حرف اشتباه تایپ کرده اید ولی وقتی حرف دوم را میزدم، پیدا می کرد ؟! :?
من هم دو تا * گذاشتم و مشکل حل شد.
حالا مشکلی که دارم اینه: چون من در OnDrawDataCell مربوط به DBGrid، با استفاده از کدهای زیر، رکوردهای دو رنگی شده اند:
if (DM.DBISAMKarmandan.RecNo mod 2) = 0 then
Karmandan_Show.DBISAMDBGrid1.Canvas.Brush.Color := $00D6FCFC // Ñä ÒÑÏ ÈÑÇí ÑÏíÝ
else
Karmandan_Show.DBISAMDBGrid1.Canvas.Brush.Color := $00FFBFBF ; // Ñä ÈäÝÔ ÈÑÇí ÑÏíÝ
if gdSelected in State then
begin
DBISAMDBGrid1.Canvas.Brush.Color := clWhite; // Ñä Òãíäå ÓØÑí ˜å Ñæí Âä ˜áí˜ ÔÏå
DBISAMDBGrid1.Canvas.Font.Color := clRed; // Ñä ÓØÑí ˜å Ñæí Âä ˜áí˜ ÔÏå
end;
Karmandan_Show.DBISAMDBGrid1.Canvas.FillRect(Rect) ;
Karmandan_Show.DBISAMDBGrid1.DefaultDrawDataCell(R ect, Field, State);
گویا مشکل Table در DBISAM اینه که پس از اعمال فیلتر، پروسیجر فوق دوباره اجرا نمی شده همچنین OnCalcField هم گویا اجرا نمی شه چون من فیلدی به نام ردیف تعریف کردم که در واقع شماره رکورد جدول هست که پس از اعمال فیلتر، تغییر نمی کنه.
حالا من برای این مشکل عجیب غریب باید چکار کنم؟ :roll:
با تشکر :oops: