Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.12.05;
Скачать: [xml.tar.bz2];

Вниз

Проблема с 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.033 c
3-1099831137
Apophis
2004-11-07 15:38
2004.12.05
Отчет через MSWord


1-1100876680
Shamansky
2004-11-19 18:04
2004.12.05
Событие при перемещении формы


1-1101061918
Dot
2004-11-21 21:31
2004.12.05
CRC


14-1100798599
Ihor Osov'yak
2004-11-18 20:23
2004.12.05
Я в шоке...


4-1098363879
-=SS=-
2004-10-21 17:04
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский