Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

Ответ
 
Опции темы
Старый 27.03.2010, 23:54   #1
SolovejK
Форумчанин
 
Регистрация: 27.01.2010
Сообщений: 52
Репутация: 25
По умолчанию Не срабатывает 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; 28.03.2010 в 00:07. Причина: Забыл указать версию Delphi
SolovejK вне форума   Ответить с цитированием
Старый 28.03.2010, 01:02   #2
noxin
Пользователь
 
Регистрация: 24.03.2010
Сообщений: 38
Репутация: 25

icq: 393-773-310
По умолчанию

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

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

icq: 393-773-310
По умолчанию

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

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

icq: 356-774-206
skype: dubkov3
По умолчанию

Данное событие 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
Репутация: 151

icq: 585281783
skype: delmas61
По умолчанию

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

ExcelApplication1.Workbooks.Item[1].Activate;

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

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с OnActivate Dennis777 Помощь студентам 6 04.01.2010 20:30
Индекс не срабатывает GenniY БД в Delphi 4 24.11.2009 16: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


00:48.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru