PDA

View Full Version : تغییر دادن شفافیت panel



Beginner2013
یک شنبه 18 تیر 1391, 19:38 عصر
چجوری می تونم آلفای یک پنل رو کم و زیاد کنم؟
با تشکر

Mask
دوشنبه 19 تیر 1391, 13:34 عصر
چون خاصیت تغییر آلفا رو فرم داره ، میتونید با تغییر پرنت فرم ، به جای پنل ازش استفاده کنید.

Beginner2013
سه شنبه 20 تیر 1391, 08:17 صبح
چون خاصیت تغییر آلفا رو فرم داره ، میتونید با تغییر پرنت فرم ، به جای پنل ازش استفاده کنید.
ممنون Gold عزیز؛من الان یک From درست کردم ، و خاصیتهاشو به صورت زیر تنظیم کردم ولی وقتی میاد رو فرم چیزی پشتش معلوم نیست و کنترلایی که قبلا چیده بودم دیده نمیشن:

frmTest.Width:=frmMain.Width;
frmTest.Height:=frmMain.Height;
frmTest.BorderStyle:=bsNone;
frmTest.Parent:=frmMain;
frmTest.AlphaBlend:=true;
frmTest.AlphaBlendValue:=100;
frmTest.Show;

ممنون میشم راهنمایی کنید

SayeyeZohor
سه شنبه 20 تیر 1391, 08:33 صبح
AlphaBlendValue رو كم ست كردين
بعد اگه منظورتون از اين كار رو بگين شايد بتونيم بهتر كمك كنيم:لبخندساده:

Beginner2013
سه شنبه 20 تیر 1391, 08:42 صبح
AlphaBlendValue رو زياد ست كردين
بعد اگه منظورتون از اين كار رو بگين شايد بتونيم بهتر كمك كنيم:لبخندساده:
alpha رو صفر کردم ولی باز نتیجه همونه.
مساله اینکه من یک ShockWaveFlash رو فرمم دارم که تمام صفحست،با کمکی که دوستان در این تاپیک (http://barnamenevis.org/showthread.php?349835-%D8%A7%D9%86%D8%AA%D8%AE%D8%A7%D8%A8-%DB%8C%DA%A9-%D9%86%D8%A7%D8%AD%DB%8C%D9%87-%D8%A7%D8%B2-%D9%81%D8%B1%D9%85-%D9%88-%D8%A8%D9%87-%D8%AF%D8%B3%D8%AA-%D8%A2%D9%88%D8%B1%D8%AF%D9%86-Point-%D8%B4%D8%B1%D9%88%D8%B9-%D9%88-Point-%D9%BE%D8%A7%DB%8C%D8%A7%D9%86%DB%8C) کردن می تونم ناحیه ای از فرم رو انتخاب کنم و مختصات آغاز و پایانش رو به دست بیارم،مشکل اینکه انتخاب ناحیه رو این کنترل قایل انجام نیست به خاطر همین می خوام یک فرم با شفافیت کم رو فرمم قرار بدم و روی اون بتونم نواحی رو انتخاب کنم یا به کاربر اجازه بدم با مداد چیزهایی رو روی فلشی که میبینه بکشه و ..
با تشکر

SayeyeZohor
سه شنبه 20 تیر 1391, 08:51 صبح
ببخشيد اشتباه گفتم و تصحيح شد

SayeyeZohor
سه شنبه 20 تیر 1391, 08:59 صبح
ShockWaveFlash روي كدوم فرمته؟

Beginner2013
سه شنبه 20 تیر 1391, 09:03 صبح
ShockWaveFlash روي كدوم فرمته؟
parent یا همون frmMain

SayeyeZohor
سه شنبه 20 تیر 1391, 09:23 صبح
يك نگاهي به اين بنداز "دانلود" (http://s1.picofile.com/file/7432502468/ProjNew.rar.html) ببين به كارت ميآد شايد بهترش كردي

Beginner2013
سه شنبه 20 تیر 1391, 09:31 صبح
يك نگاهي به اين بنداز "دانلود" (http://s1.picofile.com/file/7432502468/ProjNew.rar.html) ببين به كارت ميآد شايد بهترش كردي

ممنون دوست من،کار کرد،یعنی وقتی رو دکمه میرم همچنان خط انتخاب دیده میشه،فقط موندم کدتون با کد من چه فرقی داره که واسه شما کار میکنه

SayeyeZohor
سه شنبه 20 تیر 1391, 09:33 صبح
من ShowModal كردم روي همون فرم
شما Parent رو كه اختصاص مي دين مشكل پيدا مي كنه و خاصيت فرم Owner خودش رو مي گيره

Beginner2013
سه شنبه 20 تیر 1391, 11:56 صبح
من ShowModal كردم روي همون فرم
شما Parent رو كه اختصاص مي دين مشكل پيدا مي كنه و خاصيت فرم Owner خودش رو مي گيره

دوست من این باز مشکل ساز شد،فرمو که تکون میدم فرما از هم دیگه جدا میشن،حالا اینو چیکارش کنم؟

Beginner2013
سه شنبه 20 تیر 1391, 12:02 عصر
چیزی که به ذهنم رسید این بود که فول اسکرینش بکنم،اگه راه بهتری سرغ داشتید بگید

SayeyeZohor
سه شنبه 20 تیر 1391, 20:07 عصر
اين رو دانلـــــــــــــــــــــ ـــــــود (http://s3.picofile.com/file/7433083759/_ProjNew_910420.rar.html) كن و من رو دعا :خجالت:

SayeyeZohor
چهارشنبه 21 تیر 1391, 09:16 صبح
اين رو دانلـــــــــــــــــــــ ـــــــــو (http://s1.picofile.com/file/7433406448/_ProjNew_910421.rar.html)د كنين
:خجالت:

Beginner2013
چهارشنبه 21 تیر 1391, 09:46 صبح
ممنونم دوست من.اذیتتون کردم.اگه به عنوان آخرین سوال این 2 خطم توضیح بدین شرمندم کردین.

procedure WMMoving(var Msg: TWMMoving);
message WM_GETMINMAXINFO;

SayeyeZohor
چهارشنبه 21 تیر 1391, 10:05 صبح
خواهش
اول اينكه يك اشتباه :
:خجالت:
پروسيجر بالا رو به اين پروسيجر تغيير بديد
private
{ Private declarations }
procedure WMMoving(var Msg: TWMMoving); message WM_MOVING;

اما توضيحات راجع به اين پروسيجر و كارش از زبان سايت اصلي :

سايت اصلي (http://delphi.about.com/od/delphitips2008/qt/wm_moving.htm)


What if you do not want the form of your Delphi application to be moved of the screen?
There's no OnMoving event you can handle. Luckily, using Delphi it is easy to add one:

To handle the OnMoving event add the following to the definition of your form (private section):
procedure WMMoving(var Msg: TWMMoving); message WM_MOVING;
The WM_MOVING message is sent to a window that the user is moving. By processing this message, an application can monitor the size and position of the drag rectangle and, if needed, change its size or position.

Write the code to reposition the form if the user is trying to move it off the screen:
procedure TPopupForm.WMMoving(var Msg: TWMMoving) ;
var
workArea: TRect;
begin
workArea := Screen.WorkareaRect;

with Msg.DragRect^ do
begin
if Left < workArea.Left then
OffsetRect(Msg.DragRect^, workArea.Left - Left, 0) ;

if Top < workArea.Top then
OffsetRect(Msg.DragRect^, 0, workArea.Top - Top) ;

if Right > workArea.Right then
OffsetRect(Msg.DragRect^, workArea.Right - Right, 0) ;

if Bottom > workArea.Bottom then
OffsetRect(Msg.DragRect^, 0, workArea.Bottom - Bottom) ;
end;

inherited;
end;

The above WM_MOVING message handler will stop the form from being moved off screen.

Ananas
چهارشنبه 21 تیر 1391, 22:17 عصر
سلام.
این رو هم امتحان کن :

unit Unit1;

interface

uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
procedure MyFormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
procedure MyFormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
end;

var
Form1: TForm1;
formGlass : TForm = nil;
glass_Rect : TRect;
glass_bitmap : TBitmap = nil;

procedure ReDraw(canv : TCanvas; sel_r : TRect);

implementation

{$R *.dfm}

procedure ReDraw(canv : TCanvas; sel_r : TRect);
begin
glass_bitmap.SetSize(Screen.Width, Screen.Height);
glass_bitmap.Canvas.Brush.Color := $000000ff;
glass_bitmap.Canvas.Rectangle(0, 0, Screen.Width, Screen.Height);
glass_bitmap.Canvas.Brush.Color := $00ffffff;
glass_bitmap.Canvas.Rectangle(sel_r.Left, sel_r.Top, sel_r.Right, sel_r.Bottom);
canv.Draw(0, 0, glass_bitmap);
end;

procedure TForm1.MyFormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
if ssLeft in Shift then
begin
glass_Rect.Right := X;
glass_Rect.Bottom := Y;
end
else
begin
glass_Rect.Right := X;
glass_Rect.Bottom := Y;
glass_Rect.Left := X;
glass_Rect.Top := Y;
end;
ReDraw((Sender as TForm).Canvas, glass_Rect);
end;

procedure TForm1.MyFormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
(Sender as TForm).Close;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
if formGlass = nil then
formGlass := TForm.Create(Self);
if glass_bitmap = nil then
glass_bitmap := TBitmap.Create;
formGlass.BorderStyle := bsNone;
formGlass.WindowState := wsMaximized;
formGlass.Color := $00000000;
formGlass.AlphaBlend := True;
formGlass.AlphaBlendValue := $80;
formGlass.OnMouseMove := MyFormMouseMove;
formGlass.OnMouseUp := MyFormMouseUp;
formGlass.Show;
end;

end.

فقط رویداد OnClick دکمه رو بسازید بقیه برای زمان اجرا هست.

SayeyeZohor
چهارشنبه 21 تیر 1391, 23:27 عصر
Ananas دكمه تشكر رو در حد و اندازت نديدم :قلب::خجالت::تشویق: