PDA

View Full Version : انتقال فوكوس به كنترل ديگر با توجه به رويداد onexit



as_re63
شنبه 08 فروردین 1388, 10:51 صبح
با سلام
لطفا مرا در كد زير و مشاهده خطا در زمان اجرا راهنمايي كنيد.

procedure Tfrmreciption.LabeledEdit1Exit(Sender: TObject
begin
if trim(LabeledEdit1.Text)='' then
LabeledEdit1.SetFocus;

حال اگر برروي فرمي كه داراي يك نوار ابزار كه شامل دكمه هاي جديد - ذخيره - ويرايش - انصراف و خروج مي باشد اگر كليد f6 (كليد ميانبر دكمه انصراف) يا دكمه انصراف را كليك كنم خطاي زير رخ ميدهد

can not focus adisabled or invisible window

البته labelededit فوق بر روي يك panel قرار دارد كه با زدن دكمه انصراف در نوار ابزار فرم panel مخفي مي شود(panel.visible=false;)
چگونه مي شود رويداد onexit را با شرايط خاص كنترل نمود مثلا در مورد فوق وقتي كه فوكوس در اختيار دكمه انصراف قرار گيرد اين رويداد عمل نكند يا در قسمت شرط داخل اين رويداد چه شرطي بايد اضافه گردد. البته در مورد خاصيت activecontrol هم مطابق زير انجام داددم باز هم error داد

if not (activecontrol is TToolbutton(act_escape)) then


با تشكر از راهنمايي شما

shervin farzin
شنبه 08 فروردین 1388, 20:00 عصر
سلام
اين خطا قاعدتا بايد فقط زماني رخ بده كه شما دكمه F6 رو ميزنيد ( با كليك كردن دكمه انصراف نبايد خطا رخ بده ) .
به هر ترتيب همونطور كه از پيغام خطا مشخصه ، براي ورود Focus به LabeledEdit1 بايد اول چك كنيد كه Enable , Visible اون برابر True باشه . ( در مورد مسئله شما Visible )

If (trim(LabeledEdit1)='') and (LabeledEdit1.visible=true) then LabeledEdit1.setFocus;
موفق باشيد .