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

Вниз

В DLL не работает ActionManager   Найти похожие ветки 

 
GRF   (2004-01-22 21:38) [0]

Доброго времени суток. В DLL не работают кнопки "Вырезать", "Копировать" и т.д. Действия к ним заданы в ActionManager. Пока это был exe-шник, то все работало. В чем может быть причина?


 
GRF   (2004-01-24 00:52) [1]

Может быть, я некорректно задал вопрос? Но, честно говоря, мне пока что-то более конкретное в голову не приходит. Единственное, что могу пояснить, так это, что "не работают кнопки" - просто не работают, т.е. ошибок не выдают, не ругаются и т.д., а ведут себя так, будто им ничего не назначено.


 
GRF   (2004-01-27 20:06) [2]

Может быть заставить работать стандартные действия из ActionList, ActionManager в DLL вообще невозможно? Потому что на других форумах мне тоже толком ничего не ответили.


 
Mystic   (2004-01-27 20:29) [3]

Самое простое --- вместо DLL использовать пакеты.


 
GRF   (2004-01-27 20:37) [4]

К сожалению ничего не знаю о пакетах.
Дело в том что пишу я под AutoCAD. Что бы связать AutoCAD и Delphi использую ObjectARX для MVS C++. В DLL всего одна экспортируемая функция как раз для этой связи. Я не Бог весть какой делфер, а в C++ вообще ноль. Действую по примеру (т.е. по бумажке). Поэтому не зная что такое пакеты я врядли что-то здесь смогу изменить.
Но все же, возвращаясь к началу, неужели это действительно так сложно заставить работать стандартные действия в DLL? Честно говоря не ожидал, что проблема выскочит именно здесь.


 
just me   (2004-01-27 20:47) [5]

Не в стандартных действиях дело, а в том, что в DLL и основной программе один и тот же класс суть разные классы. Выходов 2: 1. упомянутые выше пакеты; 2. сборка программы и DLL с run-time packages


 
GRF   (2004-01-27 20:59) [6]

Не могу с Вами спорить, т.к. не владею вопросом, но все-таки ведь если назначить кнопкам любые другие действия кроме стандартных (хоть даже и через тотже ActionList, ActionManager), то все прекрасно работает.


 
GRF   (2004-01-27 21:05) [7]

Да и еще. Ведь основная программа делает доступной экспортируемую функцию из DLL в AutoCAD. А эта функция делает Form1.Create (ну плюс еще Show, Free) и все.
Также я вызывал DLL-форму и из программы на Delphi (чтобы лично для себя отсечь сомнения в том, что это из-за C++, AutoCADа и т.д.) и там тоже стандартные действия не работают.


 
GRF   (2004-01-30 21:40) [8]

На других форумах пытались найти выход и кое-что мне помогли. К примеру, можно в лоб назначать событиям типа EditCut1.OnUpdate обработчики TForm1.ActionUpdate(Sender : TObject). Вот примерный код такого обработчика:
procedure TForm1.ActionUpdate(Sender: TObject);
begin
if ActiveControl is TCustomEdit then
TAction(Sender).UpdateTarget(ActiveControl)
else
TAction(Sender).Enabled := False;
end;

После этого нужные кнопки приходят в движение, но есть одно НО.
Если работа ведется с TMemo, то все нормально.
Если же со StringGrid, то здесь хуже: не ловится начало редактирования ячейки, то есть кнопки молчат (к примеру в буфере что-то есть, а кнопка все равно потушена). Обновление происходит только после нажатия в ячейке правой кнопкой, а затем тамже левой. Что это такое я не знаю.
Как мне объяснили, это происходит потому что у StringGrid TInplaceEdit находится в приватной секции и как-то там недоступен и еще что-то про потомство от TCustomEdit. За последнее предложение не ручаюсь - сказал как понял.
Может кто знает как достучаться до TInplaceEdit или вообще как выйти из ситуации с таблицей.


 
Maxud   (2004-01-31 15:10) [9]

Передавай в DLL Screen и все будет работать.


 
GRF   (2004-01-31 16:27) [10]

Screen пробовал. Кнопки не реагируют на изменение св-ва Enabled у Memo и StringGrid.



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

Форум: "Основная";
Текущий архив: 2004.02.10;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.011 c
14-29537
stone
2004-01-21 11:10
2004.02.10
Брачный договор - это свадебное завещание.


14-29547
Романов Р.В.
2004-01-19 10:33
2004.02.10
404


14-29589
mixvictor
2004-01-18 22:29
2004.02.10
Нейронные сети


14-29533
SPeller
2004-01-17 16:24
2004.02.10
Интерфейс к файлу SUHDLOG.DAT


14-29566
syte_ser78
2004-01-20 16:43
2004.02.10
Кол-во логических дисков





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский