Главная страница
    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.46 MB
Время: 0.039 c
11-1083862844
Delphi5.01
2004-05-06 21:00
2004.12.05
Вот такой баг был замечен мной и моим другом.


14-1100589983
ИМХО
2004-11-16 10:26
2004.12.05
1986 год: честно ли Динамо Киев стало чемпионом СССР?


6-1096520266
Slonco
2004-09-30 08:57
2004.12.05
Как заставить сетевой комп запустить приложение командой сервера?


1-1100825461
fashionguide
2004-11-19 03:51
2004.12.05
Свой текст в Gauge1


1-1100966872
лена19
2004-11-20 19:07
2004.12.05
действительные типы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский