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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.08.2012, 10:31   #1
HellMercenariess
Форумчанин
 
Аватар для HellMercenariess
 
Регистрация: 27.07.2009
Сообщений: 547
По умолчанию отослать значение в комбо-бокс

Возможно ли отослать(установить) значение в ComboBox чужой программы?

найти нужный контрол я умею:
Код:
function EnumClasses(HWND:hWnd;lParam:Integer):BOOL;stdcall;
 var
  buff: ARRAY [0..127] OF Char;
   s:string;
begin
    SetLength(s,256);
    SetLength(s,GetClassName(HWND,PChar(@s[1]),256));
        form1.listBox1.items.Add(s);
     GetWindowText(HWND, buff, sizeof(buff));
    form1.listBox1.items.Add(StrPas(buff));
    Result:=true;
end;
текст я имею представление как отсылать
Код:
 Result := Succeeded(SendMessage(Wnd, WM_SETTEXT, 0, Integer(PChar('1111'))));
недавние темы с получением инфы из чужих контроллов.
http://programmersforum.ru/showthread.php?t=183036
http://programmersforum.ru/showthread.php?t=207426
"Виновник этого парада,он не дурак, ушел как надо!" Похороны панка.
HellMercenariess вне форума Ответить с цитированием
Старый 13.08.2012, 10:41   #2
Silver_S
Форумчанин
 
Регистрация: 14.03.2011
Сообщений: 104
По умолчанию

Из исходников VCL:
Код:
procedure TCustomCombo.SetItemIndex(const Value: Integer);
begin
  if csLoading in ComponentState then
    FItemIndex := Value
  else
    if GetItemIndex <> Value then
      SendMessage(Handle, CB_SETCURSEL, Value, 0);  <<<<<<<<
end;
PS Как можно догадаться, для других манипуляций с ComboBox используются сообщения, также начинающиеся на CB_*

Последний раз редактировалось Silver_S; 13.08.2012 в 10:49.
Silver_S вне форума Ответить с цитированием
Старый 20.08.2012, 10:10   #3
HellMercenariess
Форумчанин
 
Аватар для HellMercenariess
 
Регистрация: 27.07.2009
Сообщений: 547
По умолчанию

Цитата:
Сообщение от Silver_S Посмотреть сообщение
Из исходников VCL:

PS Как можно догадаться, для других манипуляций с ComboBox используются сообщения, также начинающиеся на CB_*
В этой теме ключевое слово "чужой", поэтому как вы подали пример так работать не будет.
Но вот я кое-что нарыл:
Код:
 
cbId := GetDlgCtrlId(cbHandle);
SendMessage(cbHandle, CB_SETCURSEL, 2, 0);
SendMessage(MainWndHandle, WM_COMMAND, MakeWParam(cbId, CBN_SELCHANGE), cbHandle);
Автор - Nyctos Kasignete
Цитата:
По поводу ComboBox. Чтобы выполнялись действия, которые происходят при смене элемента, нужно уведомить об этом изменении само родительское окно, в котором расположен ComboBox.
cbId — идентификатор ComboBox'а. Нужен для отправки сообщения WM_COMMAND родительскому окну.
cbHandle — дескриптор окна ComboBox'а.
MainWndHandle — дескриптор родительского окна, в котором находится ComboBox.
Так работает.
"Виновник этого парада,он не дурак, ушел как надо!" Похороны панка.

Последний раз редактировалось HellMercenariess; 20.08.2012 в 10:15.
HellMercenariess вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обновление данных через комбо боксы maratgub Microsoft Office Excel 4 10.08.2011 22:38
Комбо не видят друг друга Sergey112233 Microsoft Office Access 0 06.02.2011 20:15
Лист бокс Кинельски Общие вопросы Delphi 4 02.06.2010 19:28
Чужой Лист бокс Василий Общие вопросы Delphi 12 04.01.2009 01:50
из таблицы в комбо-бокс Arteom БД в Delphi 4 13.09.2007 23:22