PDA

View Full Version : مشکل minimize در دلفی 7



hamid-nic
شنبه 04 مهر 1388, 13:32 عصر
سلام
چرا وقتی برنامه را از طریق دکمه ی minimize بالای پنجره اقدام به minimize کردن می کنم فرم بصورت یک پنجره کوچک (مانند شکل ضمیمه ) بالای start ظاهر میشه و بصورت کامل به Taskba نمی ره ؟ (برنامه شامل چندین Form است که برای minimize از فرم اصلی استفاده می کنم )
کد زیر هم امتحان کردم در دلفی 7 جواب نمی دهد :

Application.MainFormOnTaskbar := True;

behzad_dr
شنبه 04 مهر 1388, 15:44 عصر
دوست خوب ; حق با برنامه شما شماست ... شما برای minimize کردن برنامه باید فرم اصلی برنامه رو minimize کنی .. در حالی که شما فرم های فرعی برنامه رو minimize میکنید . به نظر من اگر میخواین کاربر بتوه در هر فرم برنامه این کار رو انجام بده border style فرم های فرعی رو none کنید و فرم اصلی رو bsSingle کنید و بعد فرمهای فرعی رو طوری تنطیم کنید که مثلا دقیقا پائین تر از اون دکمه های مینیمایز باشه . یا اینکه مینیمایز فرمهای فرعی رو فالس کنید که کاربر برای میمایز کردن به فرم اصلی مراجعه کنه .

hamid-nic
شنبه 04 مهر 1388, 15:56 عصر
دوست خوب ; حق با برنامه شما شماست ... شما برای minimize کردن برنامه باید فرم اصلی برنامه رو minimize کنی .. در حالی که شما فرم های فرعی برنامه رو minimize میکنید . به نظر من اگر میخواین کاربر بتوه در هر فرم برنامه این کار رو انجام بده border style فرم های فرعی رو none کنید و فرم اصلی رو bsSingle کنید و بعد فرمهای فرعی رو طوری تنطیم کنید که مثلا دقیقا پائین تر از اون دکمه های مینیمایز باشه . یا اینکه مینیمایز فرمهای فرعی رو فالس کنید که کاربر برای میمایز کردن به فرم اصلی مراجعه کنه .

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

Mahmood_M
شنبه 04 مهر 1388, 16:04 عصر
اگر پنجره اصلی برنامه رو Minimize کنید برنامه به قسمت TaskBar خواهد رفت ، اما اگه فرمی غیر از فرم اصلی رو Minimize کنید مانند تصویری که گذاشتید میشه ... ، این استاندارد ویندوز هست ، فرمهای غیر از فرم اصلی رو به اون صورت می چینه تا دسترسی بهشون راحت تر باشه ... ( البته می تونست این پنجره ها رو بهتر هم بچینه ! )
پنجره هایی که در TaskBar نمایش داده میشن هر کدوم مربوط به یک Application هستند ...


برنامه شامل چندین Form است که برای minimize از فرم اصلی استفاده می کنم
اگه فرم Minimize شده همون فرم اصلی باشه نباید مشکلی پیش بیاد ...
در مواردی ممکنه فرم اصلی عوض بشه ! ، مثلا فرض کنید برای برنامتون فرم Splash گذاشتید و در Unit اصلی پروژه فرم اصلی رو قبل از مثلا Form1 و در بالای اون Create میکنید ، در این صورت دلفی فرم Splash رو به عنوان فرم اصلی قرار میده ...
به طور کلی در یونیت اصلی پروژه اولین فرمی که Create میشه به عنوان فرم اصلی قرار داده میشه ...
این موارد رو کنترل کنید ...

موفق باشید ...

Zahed2008
شنبه 04 مهر 1388, 16:11 عصر
سلام، ببين اين كارت رو راه ميندازه:

Application.Minimize;

behzad_dr
شنبه 04 مهر 1388, 16:14 عصر
البته دوست عزیز شما از ابتدا اشتباه کردید که فرم اصلی برنامه رو برای user , pass تعیین کردید . شما باید یه فرم غیر از فرم اصلی (main form ) رو برای این کار در نظر می گرفتید که اگر کاربر رمز و پسورد اشتباه تایپ کرد می تونستید خطا بدین و برنامه رو ببنید(terminate کنید) .
اما حالا که اشتباه کردید شما می تونید فرم اصلی برنامه رو به اون فرمی که مد نظرتون است تغییر بدید .
از منوی project گزینه option رو انتخاب کنید و در اونجا main form رو تغییر بدین .

hamid-nic
شنبه 04 مهر 1388, 16:28 عصر
البته دوست عزیز شما از ابتدا اشتباه کردید که فرم اصلی برنامه رو برای user , pass تعیین کردید . شما باید یه فرم غیر از فرم اصلی (main form ) رو برای این کار در نظر می گرفتید که اگر کاربر رمز و پسورد اشتباه تایپ کرد می تونستید خطا بدین و برنامه رو ببنید(terminate کنید) .
اما حالا که اشتباه کردید شما می تونید فرم اصلی برنامه رو به اون فرمی که مد نظرتون است تغییر بدید .
از منوی project گزینه option رو انتخاب کنید و در اونجا main form رو تغییر بدین .

چطوری هم فرم اصلی نمایش داده بشه و هم اینکه فرم User, Pass .
حالا اگر من با روشی که گفتید اون را تبدیل به فرم اصلی کنم تکلیف اون فرم User , Pass چی میشه ؟
اونا چطوری و کی نشون بدم ؟

Mahmood_M
شنبه 04 مهر 1388, 16:29 عصر
ببینید دوست عزیز وقتی برنامه را شروع می کنم ابتدا یک فرم به عنوان اولین فرم شروع ظاهر شده و نام کاربری و پسورد می گیره بعد یک فرم دیگه باز می کنه که اون فرم ، فرم اصلی است و از اون به سایر فرم ها دسترسی دارم حلا چطوری اون را تبدیل به یک فرم اصلی بکنم در حالی که برای اولین بار که شروع می کنم فرم درخواست نام کاربری و رمز عبور را نمایش دهد ؟
باید فرمی که مربوط به درخواست رمز عبور هست رو در رویدادی مثل OnShow فرم اصلی نمایش بدید ، یا این که بعد از Create شدن و قبل از Application.Run نشون داده بشه ...
مثال :
{$R *.res}
var
User, Pass : String;

begin
Application.Initialize;
Application.CreateForm(TMainFrm, MainFrm);
Application.CreateForm(TLoginFrm, LoginFrm);
LoginFrm.ShowModal;
if (user <> LUSER) or (pass <> LPASS) then
Application.Terminate;
Application.Run;
end.
در کد بالا ، قبل از نمایش فرم اصلی ، فرم لاگین نمایش داده میشه و اگه User و Pass درست نبود ، برنامه Terminate میشه ، Terminate شدن برنامه باعث میشه که بعد از Run شدن برنامه بسته بشه ، اگر هم که U و P درست بودن برنامه بدون مشکل اجرا خواهد شد و فرم اصلی نمایش داده میشه ...
توجه کنید که همونطور که در پست قبلی هم گفتم اولین فرمی که Create میشه همون فرم اصلی هست ( در کد بالا MainFrm )

موفق باشید ...

hamid-nic
شنبه 04 مهر 1388, 16:29 عصر
سلام، ببين اين كارت رو راه ميندازه:

Application.Minimize;
نه دوست عزیز
مشکلم را فهمیدم با این درست نمیشه .

hamid-nic
شنبه 04 مهر 1388, 16:42 عصر
باید فرمی که مربوط به درخواست رمز عبور هست رو در رویدادی مثل OnShow فرم اصلی نمایش بدید ، یا این که بعد از Create شدن و قبل از Application.Run نشون داده بشه ...

مثال :


{$R *.res}
var
User, Pass : String;

begin
Application.Initialize;
Application.CreateForm(TMainFrm, MainFrm);
Application.CreateForm(TLoginFrm, LoginFrm);
LoginFrm.ShowModal;
if (user <> LUSER) or (pass <> LPASS) then
Application.Terminate;
Application.Run;
end.
در کد بالا ، قبل از نمایش فرم اصلی ، فرم لاگین نمایش داده میشه و اگه User و Pass درست نبود ، برنامه Terminate میشه ، Terminate شدن برنامه باعث میشه که بعد از Run شدن برنامه بسته بشه ، اگر هم که U و P درست بودن برنامه بدون مشکل اجرا خواهد شد و فرم اصلی نمایش داده میشه ...
توجه کنید که همونطور که در پست قبلی هم گفتم اولین فرمی که Create میشه همون فرم اصلی هست ( در کد بالا MainFrm )

موفق باشید ...



ممونم
ببخشید مگر تموم اینا ساخته شدن فرم ها نباید در یونیت اصلی پروژه صورت بگیره ؟
یعنی شما در یونیت اصلی برنامتون چه فرمی ساخته میشه ؟

Mahmood_M
شنبه 04 مهر 1388, 16:44 عصر
بخشید مگر تموم اینا ساخته شدن فرم ها نباید در یونیت اصلی پروژه صورت بگیره ؟
یعنی شما در یونیت اصلی برنامتون چه فرمی ساخته میشه ؟
کدهایی که براتون گذاشتم مربوط به Unit اصلی هست ...

موفق باشید ...