ورود

View Full Version : اسكن اتوماتيك در پس زمينه



smakhavan
دوشنبه 12 اسفند 1387, 11:01 صبح
سلام
برنامه اي دارم مينويسم كه ميخواهم كاربر امكان اسكن برگه هاي زياد را داشته باشد و در ضمن اسكن تصاوير بتواند از اينترفيس برنامه هم استفاده كند و ساير كارهاي مورد نظرش را انجام دهد. براي اين كار از اسكنرهاي فيدردار استفاده ميشود اما مشكل اينجاست كه هنگام اسكن هيچ كنترلي بر روي فرم نداريم. من حتي از ترد هم استفاده كردم اما مثل اينكه يك پنجره مودال غير مرئي روي فرم قرارگرفته است.

آيا راهي وجود دارد كه بتوان اين كار را انجام داد؟

vcldeveloper
دوشنبه 12 اسفند 1387, 23:26 عصر
من حتي از ترد هم استفاده كردم اما مثل اينكه يك پنجره مودال غير مرئي روي فرم قرارگرفته است.
خب، وجود همچین پنجره ایی فقط Thread اصلی را متوقف میکنه، کاری به سایر Threadها که در حال اجرا هستند نداره.
البته من این فایل ضمیمه رو دانلود نکردم که ببینم چی هست.

smakhavan
سه شنبه 13 اسفند 1387, 08:52 صبح
البته من این فایل ضمیمه رو دانلود نکردم که ببینم چی هست.

آقاي كشاورز ميشه اين فايل را يه نگاهي بندازين ببينين كجاي كار من مشكل داره. چون قبلا هم گفته بودم كه خيلي كار با ترد را بلد نيستم و دارم فعلا تاتي تاتي ميكنم. (از كامپوننت ImageEn براي اسكن استفاده كرده‌ام)

vcldeveloper
سه شنبه 13 اسفند 1387, 11:23 صبح
نحوه فراخوانی Thread شما دو اشکال اساسی داره:

1- Thread را بصورت CreateSuspended = True میسازید، ولی در متد Create کد

inherited Create(False)
را دارید! یعنی با این کد شما هر مقداری که به عنوان پارامتر به Create بدید، نتیجه فرقی نمیکنه، و همیشه False ارسال میشه، و Thread بلافاصله اجرا میشه.

2- کل کدی که Thread باید اجرا بکنه را در Synchronize نوشتید، یعنی عملا فرقی بین ایجاد کردن Thread یا نکردن آن نمیکنه! چون با این کد، همواره عمل اسکن در داخل Thread اصلی، نه Thread شما، انجام میشه!
درباره Synchornize قبلا چند بار توضیح دادم، دیگه اینجا تکرار نمی کنم. توصیه می کنم تاپیک های مربوط به Thread در تالار دلفی را مطالعه کنید.

smakhavan
پنج شنبه 15 اسفند 1387, 16:47 عصر
خيلي خيلي ممنون
مورد اولي را كه گفته بودين عمدا تغيير داده بودم و فراموش كرده بودم كه برگردونم
اما در مورد دوم كه گفتين خيلي روشنم كرد!!!
من يك سري تغييراتي را اعمال كردم و به نظر مياد درست جواب ميده.
اين را گذاشتم كه ببينين ديگه مشكلي نداره. ممنون ميشم راهنماييم كنين