PDA

View Full Version : سوال: کامپوننت نویسی



Mani_rf
یک شنبه 10 خرداد 1388, 16:52 عصر
سلام.
من میخواستم یک کامپوننت شبیه به DateTimePicker که تو خود .net هست بنویسم اما با یک مشکل جالب بر خوردم.
خوب این کامپوننت در واقع یک ComboBox هست که وقتی باز می شود یک قسمت به اضافه می شود که در آن تقویمی وجود دارد و کاربر می تواند تاریخ مورد نظر را انتخاب نماید. مشکل من این است که نتوانستم کاری کنم تقویمی در خارج از فرم هم باز شود. همانند DateTimePicker که وابسته به اندازه فرم نیست و اگر در پایین ترین قسمت فرم هم قرار گیرد و روی آن کلیک شود قسمت تقویم در خارج از فرم باز می شود و پس از اتمام کار بسته می شود.

نمونه این تقویم را که با زبان #C نوشته شده بود را از سایت CodeProject پیدا کردم اما نتوانستم قسمت باز شدن در خارج از فرم را پیدا کنم تا به VB.Net تبدیل کنم.

خوشحال می شوم اگر کسی راهنمایی کند.
نمونه باز شدن خارج از فرم :

http://manirf.persiangig.com/image/DateTimePicker.png

Mani_rf
دوشنبه 11 خرداد 1388, 12:48 عصر
خیلی متشکر از راهنماییتون...
:لبخند:

mina.net
دوشنبه 11 خرداد 1388, 16:24 عصر
سلام دوست عزیز
در یک پیام خصوصی از من خواستی که به شما جواب بدم.
دوست عزیز کامپوننت من اولا COMBOBOX نیست ثانیا دو قسمت یکپارچه نیستند.
اون قسمتی که تقویمی که باز می شه یک فرم مجزا هست و در هر صورت باز خواهد شد. فقط یک موضوعی رو رعایت کن. وقتی کنترل در پایین صفحه نمایش قرار می گیره و جای کافی برای نمایش نداره تقویم بجای اینکه از زیر تکست باکس باز بشه از روش بازبشه.
در ضمن بهتره برای اینکه زوتر به جواب برسی عنوان تاپیکت با سوالت مرتبط تر باشه و در ضمن مفهوم تر.

Mani_rf
دوشنبه 11 خرداد 1388, 20:17 عصر
با تشکر از راهنمایی مفیدتان ،‌اما من در این روش مشکلی مشاهده کردم.
با باز شدن فرم طبیعتا فرم مادر فکوس خود را از دست می دهد و به نظر من زیاد خوشایند نیست. و در کنترلری مانند DateTimePicker این اتفاق نمی افتد.

mina.net
دوشنبه 11 خرداد 1388, 22:04 عصر
با تشکر از راهنمایی مفیدتان ،‌اما من در این روش مشکلی مشاهده کردم.
با باز شدن فرم طبیعتا فرم مادر فکوس خود را از دست می دهد و به نظر من زیاد خوشایند نیست. و در کنترلری مانند DateTimePicker این اتفاق نمی افتد.

1- سوال : چرا خوشایند نیست؟
2- اگه روش بهتری می دونید و یا اینکه بعدا پیدا کردید خوشحال می شم من هم بدونم.

Mani_rf
شنبه 16 خرداد 1388, 17:59 عصر
دوباره سلام
می توانم بپرسم برای گرفتن مختصات textbox در DatePicker که نوشتید ازچه کدی استفاده کردین؟
من تقریبا مجبور شدم از 10 روش مختلف استفاده کنم اما خوب همشون خطا داشت و مقدار دقیق را برای بازشدن فرم تقویم برنمی گرداند.
شما چطوری مختصات را گرفتین؟؟؟؟؟؟؟

mina.net
شنبه 16 خرداد 1388, 19:34 عصر
دوباره سلام
می توانم بپرسم برای گرفتن مختصات textbox در DatePicker که نوشتید ازچه کدی استفاده کردین؟
من تقریبا مجبور شدم از 10 روش مختلف استفاده کنم اما خوب همشون خطا داشت و مقدار دقیق را برای بازشدن فرم تقویم برنمی گرداند.
شما چطوری مختصات را گرفتین؟؟؟؟؟؟؟



Dim X, Y As Integer
If Me.Parent.RightToLeft Then
X = Me.Parent.PointToScreen(Me.Location).X
Else
X = Me.Parent.PointToScreen(Me.Location).X
End If
Y = Me.Parent.PointToScreen(Me.Location).Y + Me.Height

حامد مصافی
شنبه 16 خرداد 1388, 20:34 عصر
برای اینکه هنگام باز شدن پنجره مادر فوکوس را از دست ندهد پنجره popup باید در ولایت پنجره desktop باشد. به این منظور از توابع API زیر به تناسب جایگاه مورد نیاز استفاده کنید. (نحوه استفاده = جستجو)


GetDesktopWindow
SetWindowParent