Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.03.2010, 22:54   #1
SolovejK
Пользователь
 
Регистрация: 27.01.2010
Сообщений: 52
По умолчанию Не срабатывает OnActivate у формы

Ни в какую не хочет работать этот код. Реакция программы просто нулевая, ничего не происходит

Код:
procedure TMain.FormActivate(Sender: TObject);
begin
  ExcelApplication1.Workbooks[1].Activate(lcid);//делает активной нужную мне книгу Excel
end;
А здесь работает без проблем:

Код:
procedure TMain.FormClick(Sender: TObject);
begin
  ExcelApplication1.Workbooks[1].Activate(lcid);
end;
В чем может быть проблема?

PS: Работаю с Delphi 2006

Последний раз редактировалось SolovejK; 27.03.2010 в 23:07. Причина: Забыл указать версию Delphi
SolovejK вне форума Ответить с цитированием
Старый 28.03.2010, 00:02   #2
noxin
Пользователь
 
Регистрация: 24.03.2010
Сообщений: 38
По умолчанию

А кроме этого ещё описана где-нибудь работа exel, или только эта строчка?
Если чем помог, оставьте отзыв...
noxin вне форума Ответить с цитированием
Старый 28.03.2010, 00:20   #3
SolovejK
Пользователь
 
Регистрация: 27.01.2010
Сообщений: 52
По умолчанию

Excel открывается в скрытой форме при запуске программы тут проблем никаких нет и дальше тоже работает программа как надо. Но если открыть какой нибудь документ Excel, программа при получении фокуса начинает обращаться в этот открытый документ, соответственно вылетают ошибки, поэтому и пытаюсь в OnActivate у формы активировать нужную мне книгу Excel, чтобы программа читала данные откуда надо.
SolovejK вне форума Ответить с цитированием
Старый 28.03.2010, 00:53   #4
noxin
Пользователь
 
Регистрация: 24.03.2010
Сообщений: 38
По умолчанию

а что мешает сразу после открытия exel делать это, или я что-то не так понял?
Если чем помог, оставьте отзыв...
noxin вне форума Ответить с цитированием
Старый 28.03.2010, 01:12   #5
SolovejK
Пользователь
 
Регистрация: 27.01.2010
Сообщений: 52
По умолчанию

В том то и дело что во время работы программы приходится открывать разные файлы Excel и работать с ними. Программа должна обращаться именно в свой первоначально открытый документ. При получении фокуса программа начинает читать данные с активного в данный момент Excel документа вот и приходится либо руками активировать нужный документ, либо программно.
SolovejK вне форума Ответить с цитированием
Старый 28.03.2010, 03:29   #6
Volt
Форумчанин
 
Аватар для Volt
 
Регистрация: 07.12.2008
Сообщений: 244
По умолчанию

Данное событие FormActivate возникает при активации формы если форма одна то оно произойдет только один раз если форма не одна то данное событие будет срабатывать когда вы будете передавать фокус то одной форме то другой. Попробуйте проверять
Код:
var
  Form1: TForm1;
  flag:boolean;
implementation

{$R *.dfm}

procedure TForm1.Timer1Timer(Sender: TObject);

begin

if Form1.Handle = GetForegroundWindow()then
begin
if flag then
begin
flag:=false;
form1.caption:='Активна';
ExcelApplication1.Workbooks[1].Activate(lcid);
end;
end
else
begin
form1.Caption:='Не активна';
flag:=true;
end;


end;

procedure TForm1.FormCreate(Sender: TObject);
begin
flag:=true;
end;
|̲̅̅●̲̅̅|̲̅̅=̲̅̅|̲̅̅●̲̅̅]

Последний раз редактировалось Volt; 28.03.2010 в 03:53.
Volt вне форума Ответить с цитированием
Старый 28.03.2010, 15:26   #7
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

А вот так не пробовал ?

ExcelApplication1.Workbooks.Item[1].Activate;

У нас принято оформлять код специальным тэгом - при помощи кнопочки "#".
Только...
И не значком #.
И не РНР-кодом.
И не значком цитаты.
И не собственными "ручками".
Рекомендую. Помимо общих правил форума есть и дополнения к ним в каждом разделе...
Модератор
Перемешивай дело с бездельем и не сойдешь с ума...

Последний раз редактировалось mihali4; 28.03.2010 в 17:06.
Grag вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с OnActivate Dennis777 Помощь студентам 6 04.01.2010 19:30
Индекс не срабатывает GenniY БД в Delphi 4 24.11.2009 15:05
Как обойтись без события OnActivate? _Инженер_ Общие вопросы Delphi 4 01.10.2009 17:23
Не срабатывает макрос... Busine2009 Фриланс 6 14.08.2009 10:14
Не срабатывает OnCloseQuery Arkuz Общие вопросы Delphi 4 31.07.2009 01:32