ورود

View Full Version : ساخت فرمی که پشتش خالی باشد



ashki
شنبه 04 تیر 1384, 00:25 صبح
با سلام من می خواهم یک فرم داشته باشم که پشتش خالی باشد
یعنی با حرکت دادن آن پشت ویندوز معلوم باشد از داخل فرم
مرسی

vcldeveloper
شنبه 04 تیر 1384, 02:26 صبح
اگه می خوای فرم حالت شفاف داشته باشه، باید یک رنگ رو برای خاصیت TransparentColorValue انتخاب کنی و خاصیت TransparentColor رو True کنی. در داخل فرم، هر جایی که رنگ TransparentColorValue رو داشته باشه، نشون داده نمیشه و بجاش تصویر پنجره زیر فرم برنامه نمایش داده میشه.
اگه می خوای فرم برنامه حالت نیمه شفاف داشته باشه، باید مقدار AlphaBlendValue رو کمتر از 255 (مثلا 230) بزاری و خاصیت AlphaBlend رو True کنی.
هر دو ویژگی فوق فقط در ویندوزهای 2000 یا بالاتر عمل می کنند!

MSK
شنبه 04 تیر 1384, 09:04 صبح
نمی دونستم این سوال یه سوال جدیده و باید در یک تاپیک جدید قرار بگیره یا باید در همینجا مطرحش کنم؟!

بهرحال اگه نباید اینجا میزاشتمش ببخشید.

حالا اگه واقعا بخواهیم محیط پشت فرم از اون نواهی مورد نظر در دسترس باشه چی؟

یعنی مثلا اگه زیر اونجایی که ترانسپرنته یه آیکون وجود داره بشه از همین رو فرم کلیکش کرد؟

:گیج:

ashki
شنبه 04 تیر 1384, 09:07 صبح
آره آقای MSK زدی تو خال

آره اساتید مربوطه راهی برای این کار هست

سالومه
شنبه 04 تیر 1384, 10:38 صبح
بله میشه و هست:

http://www.hwb.com/gruhn/programming/tutorial/clear.html
http://delphi.about.com/od/formsdialogs/l/aa073101b.htm
http://www.howtodothings.com/viewarticle.aspx?article=292
http://delphi.about.com/od/windowsshellapi/l/aa120898.htm
http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=585&lngWId=7
http://homepages.borland.com/efg2lab/Library/UseNet/1998/0716.txt

در این حالت ها دیگه فرم به صورت Alpha Transparent نیست و اون قسمت هایی از فرم که پشتشون معلمومه رو میشه استفاده کرد و مثلاً اگر یک آیکن پشت اون قسمت باشه میشه مستقیم روش کلیک کرد

MSK
شنبه 04 تیر 1384, 12:40 عصر
خیلی عالی بود! ممنون.

:flower: :flower: :flower:

Delphi Skyline
شنبه 04 تیر 1384, 13:17 عصر
اینم آسونش :


form1.brush.style:=bsclear;


:flower:

سالومه
شنبه 04 تیر 1384, 14:17 عصر
اینم آسونش :


form1.brush.style:=bsclear;


:flower:

مهرداد جان کدی که شما دادی درست نیست و در اصل این کار باعث میشه هر چیزی روی Canvas فرم کشیده بشه با مقدار رنگ ( بی رنگ ) انجام بشه.

با این کار و اجرای این کد مشکلاتی در Refresh کردن فرم به وجود میاد و در بسیاری از موارد پوسته اصلی فرم درست نمایش داده نمیشه.

بهترین کار برای جواب سوال این دوستان، یکی راهی هست که آقای کشاورز گفتن که البته مربوط به شفافیت فرم ( در ویندوزهای محدود ) و یکی هم راهی هست که من نشون دادم و مربوط میشه به ساختن Region در فرم.

موفق باشید

Delphi Skyline
شنبه 04 تیر 1384, 15:42 عصر
بله درست است . من که گفتم این هم یکیش .

Kamyar.Kimiyabeigi
شنبه 04 تیر 1384, 17:23 عصر
درود

من هرچی گشتم برای فرم TransparentColorValue را پیدا نکردم میشه بیشتر راهنمایی کنین
:flower:

ashki
شنبه 04 تیر 1384, 17:49 عصر
سلام مشکل من با این کد حل شد


var
frmRegion,tempRegion: HRGN;
i: integer;
arect: Trect;

begin
frmRegion := 0;
for I:=0 to ControlCount -1 do begin
aRect := Controls[i].BoundsRect;
offsetRect(aRect,clientorigin.X-left,Clientorigin.Y-top);
tempRegion := CreateRectRgnIndirect( aRect);
if frmRegion = 0 then
frmRegion := tempregion
else begin
combineRgn(frmRegion,frmRegion,tempRegion, RGN_OR);
DeleteObject(tempRegion);
end;
end;
tempRegion:=
CreateRectRgn(0,0,width,0
//GetSystemMetrics(SM_CYCAPTION)
//GetSystemMetrics(SM_CYSIZEFRAME)
//GetSystemMetrics(SM_CYMENU)*ord(menu<>nil)
);
CombineRgn(frmRegion,frmRegion,tempRegion,RGN_OR);
DeleteObject(tempRegion);
setWindowRgn(handle,frmRegion,false);

RezaCPU
یک شنبه 19 شهریور 1385, 04:35 صبح
یک راه ساده
میتوانید کامپوننت آماده این کار را از سایت
http://www.devexpress.com
مجانی دانلود کنید.
نام کامپوننت:
Express ForumLibrary

موفق باشید

Saeid59_m
یک شنبه 19 شهریور 1385, 08:00 صبح
اگه از دلفی قدیمی استفاده می کنید این ویژگی وجود ندارد .

در دلفی 7 هستش