Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сделать активным вкладку, (Перейти на вкладку) 
V
    Опции темы
Serebrus
Дата 28.6.2012, 09:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 333
Регистрация: 22.5.2007
Где: Ташкент

Репутация: нет
Всего: нет



Привет друзья программеры.
С помощью EnumChildWindows ищу TPageControl, а именно нужную мне вкладку другого приложения (разработано в delphi).
После нахождения ни как не могу его активировать, т.е. перейти на эту вкладку, выдается ошибка связанная с памятью.
Пробовал разные функции: 
Код
ShowWindow(h, SW_NORMAL), SendMessage(h, WM_ACTIVATE, WA_ACTIVE, 0), SetForegroundWindow(h) и даже пару SendMessage(h, WM_LBUTTONDOWN, 0, 0); SendMessage(h, WM_LBUTTONUP, 0, 0);
 Но увы, все старания не помогли, что посоветуете?
PM MAIL   Вверх
AlekXL
Дата 28.6.2012, 09:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 2.5.2008

Репутация: нет
Всего: 0



посоветуем оттрасировать исходники VCL, как переключаются вкладки TPageControl. Какие сообщения посылаются и т.д.
Либо TCM_SETCURSEL или TabCtrl_SetCurSel  или что-то в этом духе
Цитата(Serebrus @  28.6.2012,  09:10 Найти цитируемый пост)
выдается ошибка связанная с памятью

фи

PM MAIL   Вверх
Serebrus
Дата 28.6.2012, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 333
Регистрация: 22.5.2007
Где: Ташкент

Репутация: нет
Всего: нет



AlekXL, а delphi ругается на TCM_SETCURSEL и TabCtrl_SetCurSel: Undeclared identifier, хотя включил SellAPI
PM MAIL   Вверх
Чучмек
Дата 28.6.2012, 11:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЭТ БИЛЭТ
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 11.5.2008
Где: СССР

Репутация: 7
Всего: 41



Код

const
  TCM_FIRST               = $1300;     
  TCM_SETCURSEL          = TCM_FIRST + 12;
...
...

SendMessage(PageControlHandle, TCM_SETCURSEL, PageIdex, 0);


Добавлено @ 11:36
Однако, TPageControl  будет считать активной старую вкладку.

Это сообщение отредактировал(а) Чучмек - 28.6.2012, 11:37


--------------------
умную мысль держи при себе, а дурной - поделись с другими 
PM MAIL   Вверх
Serebrus
Дата 28.6.2012, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 333
Регистрация: 22.5.2007
Где: Ташкент

Репутация: нет
Всего: нет



Чучмек, спасибо, помогло, нужная мне вкладка становится активной, НО компоненты ране активной вкладки (т.е. другой вкладки) отображаются здесь.
Как можно это исправить?
PM MAIL   Вверх
Чучмек
Дата 28.6.2012, 21:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЭТ БИЛЭТ
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 11.5.2008
Где: СССР

Репутация: 7
Всего: 41



Можно сымитировать нажатие клавиш (клик | ctrl+tab | стрелки вперед/назад)
Вот через стрелки
Код

const
  TCM_FIRST              = $1300;
  TCM_SETCURSEL          = TCM_FIRST + 12;
  TCM_GETCURSEL          = TCM_FIRST + 11;
  TCM_GETITEMCOUNT       = TCM_FIRST + 4;
function PageControlSetActivePage(PChWin:cardinal;ind:integer):boolean;
var
 pcount,
 itemind,
 i:integer;
begin
result:=false;
pcount:=sendMessage(PChWin,TCM_GETITEMCOUNT,0,0);
if  (pcount<0) or (ind>= pcount) or (ind<0) then exit;
itemind:=sendMessage(PChWin,TCM_GETCURSEL,0,0);
if ind<itemind then
 for i:=0 to itemind-ind-1 do sendMessage(PChWin,$100,$25,$14B0001)
               else
 for i:=0 to ind-itemind-1 do sendMessage(PChWin,$100,$27,$14D0001);
result:= ind = sendMessage(PChWin,TCM_GETCURSEL,0,0);
end;



--------------------
умную мысль держи при себе, а дурной - поделись с другими 
PM MAIL   Вверх
Keeper89
Дата 29.6.2012, 00:03 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 14
Всего: 58



Товарищи мазохисты:
Код

uses CommCtrl;
...
SendMessage(Handle, TCM_SETCURFOCUS, TabIndex, 0);


Это сообщение отредактировал(а) Keeper89 - 29.6.2012, 02:50


--------------------
PM MAIL WWW   Вверх
northener
Дата 29.6.2012, 01:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

Репутация: нет
Всего: 20



Цитата(Keeper89 @  29.6.2012,  00:03 Найти цитируемый пост)
Товарищи мазохисты

А автор опять скажет, что дельфя ругается на TCM_SETCURFOCUS. smile


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
Keeper89
Дата 29.6.2012, 02:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 14
Всего: 58



northener, дополнил smile


--------------------
PM MAIL WWW   Вверх
Чучмек
Дата 29.6.2012, 09:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЭТ БИЛЭТ
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 11.5.2008
Где: СССР

Репутация: 7
Всего: 41



Keeper89, да, действительно  smile 


--------------------
умную мысль держи при себе, а дурной - поделись с другими 
PM MAIL   Вверх
Serebrus
Дата 29.6.2012, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 333
Регистрация: 22.5.2007
Где: Ташкент

Репутация: нет
Всего: нет



Спасибо всем, рад за ответы и плюс что дали возможность так вас рассмешить
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0502 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.