PDA

View Full Version : استفاده از open dialog



khoshblagh
شنبه 22 فروردین 1388, 07:32 صبح
با سلام خدمت دوستان
من اخیرا از open dialog در برنامه استفاده کردم . به این صورت که کامپوننت مربوطه را بر روی فرم قرار دادم و یک memo که محتویات فایل مورد نظر بعد از Open در این memo نمایش داده میشود. حال مشکل من این است که بعد از نمایش محتویات فایل پنجره open dialog همچنان از مانده و فرم بد ریخت میشود . من باید چکار کنم که پنجره open dialog بعد از انتخاب فایل توسط کاربر به طور خودکار بسته شود؟ متشکرم.

MSHService
شنبه 22 فروردین 1388, 10:24 صبح
سلام
شما وقتي دكمه open رو ميزني اين پنجره بسته نميشه؟ با بسته ميشه و دوباره باز ميشه؟
حجم فايلي رو كه بار ميكني زياده؟
ميتوني برنامه ت رو الصاق كني؟
موفق باشيد.

khoshblagh
شنبه 22 فروردین 1388, 12:49 عصر
با تشکر
در حقیقت پنجره باز و فایل مورد نظر هم انتخاب و در کنترل memo محتویات نمایش داده میشود. فقط پنجره open dialog که دیگر مورد نیاز نیست همچنان باز مانده است.هجم فایل بسیار کم میباشد.

MSHService
شنبه 22 فروردین 1388, 13:36 عصر
سلام ببين رفيق
اگه برات ممكنه سورست رو بزار با بچه ها ببينيم اشكال از كجاست!

vcldeveloper
شنبه 22 فروردین 1388, 16:33 عصر
باید از این الگو برای استفاده از اینگونه Dialog Boxها استفاده کنید:


if OpenDialog1.Execute then
Memo1.Lines.LoadFromFile(OpenDialog1.FileName);

khoshblagh
سه شنبه 25 فروردین 1388, 09:11 صبح
باید از این الگو برای استفاده از اینگونه Dialog Boxها استفاده کنید:


if OpenDialog1.Execute then
Memo1.Lines.LoadFromFile(OpenDialog1.FileName);


من از همین الگو استفاده کرده ام !

vcldeveloper
سه شنبه 25 فروردین 1388, 10:26 صبح
من از همین الگو استفاده کرده ام !
Execute فقط موقعی True میشه که کاربر Dialog Box را با استفاده از دکمه Open بسته باشه.

یک نمونه پروژه Demo قرار بدید که مشکل شما را بازسازی کنه.

khoshblagh
چهارشنبه 26 فروردین 1388, 08:47 صبح
فکر میکنم اشتباه از من است. زیرا به نظر میرسد طبق کد پست قبل memo مورد نظر سعی در نمایش نام فایل میکند. در حالیکه من در memo فوق الذکر محتویات فایل را نمایش میدهم . شاید اشکال همین باشد. لازم به ذکر است این روش استفاده از open dialog از بخش دلفی سایت about استفاده کرده ام .

daffy_duck376
چهارشنبه 26 فروردین 1388, 08:59 صبح
دوست عزیز OPEN DLG همیشه بعد انتخاب بسته میشود . اگه دوباره باز میشود و یا می ماند احتمالا یک خط دستور دیگر در جای دیگر این کار رو می کند . حالا بهترین کار اینه که برنامه رو خط به خط TRACE کنید ببینید که کدوم کدها در کجا اجرا میشود

khoshblagh
پنج شنبه 27 فروردین 1388, 07:22 صبح
با سلام خدمت دوستان
همه پنجره open dialog بروی فرم باقی نمی مانده فقط بخشی از آن ( مثلا فقط دکمه ها) باقی میماند. و بقیه آن توسط کنترل memo که محتویات فایل به نمایش میگذارد پوشانده میشود. جالب اینکه از پنجره open dialog خارج از کادر فرم جاری یعنی بروی فرم اصلی برنامه(Main Form) قرار داشته باشد بعد از انتخاب کاملا بسته شده و این مشکل فعلی را ندارد.

vcldeveloper
پنج شنبه 27 فروردین 1388, 12:01 عصر
همه پنجره open dialog بروی فرم باقی نمی مانده فقط بخشی از آن ( مثلا فقط دکمه ها) باقی میماند. و بقیه آن توسط کنترل memo که محتویات فایل به نمایش میگذارد پوشانده میشود.
همچین چیزی نداریم، مگر اینکه فقط تصویری از آن دکمه ها بر روی فرم باقی مانده باشه، نه خودِ دکمه ها. اگر تصویر دکمه ها باقی مانده، یعنی بلافاصله بعد از بسته شدن پنجره Open File شما یک پردازش سنگین را شروع کردید، و برنامه فرصت رسم مجدد فرم را پیدا نمیکنه، برای همین هم باقیمانده تصویر Dialog Box مربوطه همچنان روی فرم باقی می ماند.

khoshblagh
شنبه 29 فروردین 1388, 07:40 صبح
با تشکر از جناب کشاورز


همچین چیزی نداریم، مگر اینکه فقط تصویری از آن دکمه ها بر روی فرم باقی مانده باشه، نه خودِ دکمه ها. اگر تصویر دکمه ها باقی مانده، یعنی بلافاصله بعد از بسته شدن پنجره Open File شما یک پردازش سنگین را شروع کردید، و برنامه فرصت رسم مجدد فرم را پیدا نمیکنه، برای همین هم باقیمانده تصویر Dialog Box مربوطه همچنان روی فرم باقی می ماند.

احتمالا باید همین طور باشد . در این صورت چگونه باید این مشکل حل کرد. متشکرم

vcldeveloper
شنبه 29 فروردین 1388, 10:03 صبح
بستگی به نوع کار شما داره. راه حل کلی اش استفاده از یک Thread جداگانه برای پردازش مربوطه هست، تا Thread اصلی برنامه درگیر پردازش نشه.
درباره Thread قبلا توضیح داده شده، و می تونید جستجو کنید.