Изменить свойства элемента чужого окна

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Ответить
Viktor Zull
Сообщения: 117
Зарегистрирован: 10 ноя 2005, 02:00

Подскажите как можно изменить свойства элемента чужого окна. В частности свойства Ancros - привязки.

Первое, что я делаю - нахожу гланое окно, затем в нем нахожу нужный элемент (окно). Затем, наверно, надо использовать функцию GetWindowLong. Но свойство anchors получить мне так и не удалось.


Код: Выделить всё

Var
  Wnd,
  ChildWnd:HWND;
  E:Integer;
begin
  Wnd := FindWindowPos('Имя окна');
  if Wnd <> 0 then
    begin
      ChildWnd := FindWindowEx(Wnd,0,'LISTBOX',nil);
      if ChildWnd<>0 then
        begin
            ShowMessage('OK!');
            E := Windows.GetWindowLong(ChildWnd,?????);

        end;
    end;
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

И не удастся. GetWindowLong оперирует понятиями WinAPI, а не VCL.
Свойства объектов VCL можно получить ТОЛЬКО средствами VCL.
Eugie
Сообщения: 708
Зарегистрирован: 17 фев 2004, 23:59
Откуда: SPb

Viktor Zull, попробуй так:

Код: Выделить всё

var 
  ctrl: TWinControl;
  wnd: HWND;
begin
  ... { определили дескриптор элемента wnd }
  ctrl := FindControl(wnd); // или FindVCLWindow(pos), если известно положение элемента
  if ctrl <> nil then
    ctrl.Anchors := ...
end;
Viktor Zull
Сообщения: 117
Зарегистрирован: 10 ноя 2005, 02:00

Попробовал так:

Код: Выделить всё

Wnd := FindWindowPos('Имя окна');
  if Wnd <> 0 then
    begin
      ChildWnd := FindWindowEx(Wnd,0,'LISTBOX',nil);
      if ChildWnd<>0 then
        begin
            ShowMessage('OK!');
            ctrl := FindControl(ChildWnd);
            if ctrl <> nil then
                begin
                  ShowMessage('OK!');
                  ctrl.Anchors := [akLeft,akRight];
                end;
        end;
    end;
Не получилось. Главное окно находит, дочернее тоже находит.
А FindControl(дочернее) не находит.

Что делать?

А вот в FindVCLWindow(Point(X,Y)) - X,Y - это Left и Top компонента или положение его на экране?
Ответить