PDA

View Full Version : مخفی کردن فرم از تسکبار



joooje
پنج شنبه 21 مهر 1390, 13:31 عصر
سلام به دوستان
من یه فرم دارم و دوتا دکمه روی اون
با زدن دمکه و با استفاده از دستور create یه فرم میسازم
حالا میخوام با زدن دکمه دوم فرم دوم که ساخته شده از تسک بار حذف بشه ولی خودش همچنان دیده بشه
یه جستجویی هم کردم و اینو به دست آوردم:
استفاده از ShowWindow(Application.Handle, SW_HIDE); در on activate که نتونستم برای این مورد خودم استفاده کنم
ولی برای فرم اول که قبل از شروع برنامه اینو توش نوشته بودم کار میداد
ممنون میشم راهنمایی کنید

Mask
پنج شنبه 21 مهر 1390, 16:14 عصر
باید برای فرمی که به صورت run time ساخته میشه یه ایونت مثلا on show ایجاد کنید و کد مربوطه رو در اون قرار دهید.

joooje
پنج شنبه 21 مهر 1390, 17:55 عصر
ولی اگر توی onshow بزارم که به محض نمایش فرم از تسکبار مخفیش میکنه!
ولی من میخوام بتونم هر موقع خواستم از تسکبار مخفیش کنم و اگر خواستم دوباره کاری کنم که تو تسکبار نمایشش بده
ممنون

MohsenB
پنج شنبه 21 مهر 1390, 20:17 عصر
سلام

اگر در دلفی 2010 به بالا برنامه مینویسید از منوی Project گزینه ViewSource را انتخاب کنید و این خط از کد را اینطور تغییر دهید :


Application.MainFormOnTaskbar := False;

اگر هم در ویرایش های دیگر دلفی هستید از تابع زیر استفاده کنید :


procedure setShowInTaskbar(Visible : Boolean; hwnd : integer);
begin
ShowWindow(hwnd, SW_HIDE);
if Visible then
SetWindowLong(hwnd, GWL_EXSTYLE,-WS_EX_TOOLWINDOW)
else
SetWindowLong(hwnd, GWL_EXSTYLE, WS_EX_TOOLWINDOW);
ShowWindow(hwnd, SW_SHOW);
end;

موفق باشید

majidbestgame
پنج شنبه 21 مهر 1390, 20:50 عصر
سلام...
من فک میکنم بهترین روش این باشه که وقتی فرمتون رو کریت کردید هندل اون فرم روی تاسکبار رو بگیری و با استفاده از تابع ShowWindow اونو مدیریت کنی هروقت خواستی نشون داده بشه هر وقت خواستی پاک بشه از رو تاسکبار
این کد مربوط به این کار کد کل یونیتو گذاشتم که بیشتر فابل فهمه فقط یادت باشه یک متغییر سراسری برای نگهداری هندل فرم تو بخش Private تعریف کنی...تو کد هست

unit Unit2;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm2 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
FHandle :hwnd;
end;

var
Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);
var MyForm:TForm;
begin
MyForm:=Tform.Create(application);
with MyForm do
begin
width:=200;
height:=150;
Caption:='My Form Caption...';
Show;
fhandle:=GetWindow(MyForm.Handle, GW_OWNER);
end;
end;

procedure TForm2.Button2Click(Sender: TObject);
begin
ShowWindow(Fhandle,Sw_Hide); // to hide On Taskbar
ShowWindow(Fhandle,Sw_Show); // to show on taskbar
end;
end.


و اما در آخر...............