Главная страница
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.48 MB
Время: 0.023 c
14-1100518286
fag2000
2004-11-15 14:31
2004.12.05
Подскажите софтитну для записи на диск музыки с интернет радио.


14-1100512864
dron-s
2004-11-15 13:01
2004.12.05
Где мне взять картинки?


6-1096376062
Yerick
2004-09-28 16:54
2004.12.05
ЛВС


3-1099832621
DeepProg
2004-11-07 16:03
2004.12.05
Отобразить Memo поле в DBGrid - вариация на тему


3-1099593732
Zif
2004-11-04 21:42
2004.12.05
Как удалить значения одного из столбцов в БД?