Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.12.05;
Скачать: CL | DM;

Вниз

Проблема с mdi окнами.   Найти похожие ветки 

 
Tria ©   (2004-11-24 10:37) [0]

Выглядит следующим образом. Есть mdi-приложение. В нем открыто mdi child окно (1) с деревом свойств. На форме (1) есть action с shortcut на клавиши Delete. При двойном щелчке на этом дереве (или выбора пункта меню) открывается еще одно child окно (2). Так вот, при открытии этого окна (2) возникают проблемы:
1. При редактировании текста в TEdit клавиша Del не функционирует, событие нажатия этой клавиши не доходит до объекта (OnKeyDown не срабатывает).
2. При открытии окна (2) по двойному щелчку на дереве в окне (1) второй щелчек мышки передается в окно (2) и срабатывает соответствующее событие. При этом открытие окна (2) происходит в событии OnDblClick дерева окна (1).

Может кто подскажет, как с этим бороться?


 
TUser ©   (2004-11-24 10:47) [1]

Покажи код


 
tria ©   (2004-11-24 11:23) [2]

Код в окне (1) по открытию окна (2). Вызывается по action с shortcut Enter и по OnDblClick дерева окна (1).
//строки,определяют какое окно открывать
....
//Нашли, что это окно
 Else If p is TPerech Then begin
    TfmEditPerechn.CreateEdit(self,pAgr);
 end

//В окне (2) процедура CreateEdit(self,pAgr);
constructor TfmEditPerechn.CreateEdit(Owner: TComponent;pn:TAgregateObj);
var capt:string;
begin
 If Not Assigned(pn) Then begin
            ShowMessage("Передали nil!");    Halt;
                          end;
 Create(Owner);
 ThisNew:=False;
 If pn is TRegister Then begin
     Self.pn:=TRegister.Create;
     (Self.pn as TRegister).Assign(Pointer(pn));
                        end
                   Else
   Case pn.Id of
   10..69: begin //перечисления
     Self.pn:=TPerech.Create;
     (Self.pn as TPerech).Assign(Pointer(pn));
           end;
   70..159:begin// - справочники
     self.pn:=TSprav.Create();
     (self.pn as TSprav).Assign(Pointer(pn));
           end;
  160..255:begin// - документы
     self.pn:=TDoc.Create();
     (self.pn as TDoc).Assign(Pointer(pn));
           end;
   end;//Case
 capt:=Caption;
 ObjToForm(pn);
 Caption:=Capt+pn.Name;
 btOK.Top:=Height-btOK.Height-27;
 btOK.Left:=Width-btOK.Width-10;
 OrderTabByTopLeft(Self);
end;


 
tria ©   (2004-11-24 11:25) [3]

Если окно (2) открывать модально, то все проблемы исчезают. (вылазят другие, связанные с тем, что код не рассчитан на работу с модальными окнами).


 
tria ©   (2004-11-24 14:37) [4]

Неужели нет ни одной идеи?
Никто не сталкивался с такими проблемами?



Страницы: 1 вся ветка

Текущий архив: 2004.12.05;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.023 c
4-1098448993
antonioxxx
2004-10-22 16:43
2004.12.05
Доступ к (драйверу) мыши


14-1099726170
DillerXX
2004-11-06 10:29
2004.12.05
Не поможите ли с олимпиадной задачей?


11-1083641459
yustas
2004-05-04 07:30
2004.12.05
Доп. компоненты.


1-1100820152
noob
2004-11-19 02:22
2004.12.05
loop


6-1095793373
ildar_kh
2004-09-21 23:02
2004.12.05
Запуск фрейма..