Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Create на чужом окне

1.8K
19 апреля 2006 года
LastSoul
279 / / 28.12.2005
Как на другое окно вставить TrackBar?

Таким образом:
 
Код:
With TTrackBar.Create(Form2) Do
 Begin
  Parent:=Form2;
  left:=50;
  top:=50;
 End;

у меня получалось вставлять только на те формы, у которых был известен класс, одним словом на те которые я делал в delphi...

Вообщем само окно нахожу вот так:
h:=FindWindow(nil,'Total Commander');
а что делать дальше???
>
344
19 апреля 2006 года
Delpher
493 / / 14.08.2005
Цитата:

у меня получалось вставлять только на те формы, у которых был известен класс,



Вывод: надо узнать класс формы, это можно сделать с помощью фун-ии

 
Код:
function GetClassName(Wnd: HWnd; ClassName: PChar;
  MaxCount: Integer): Integer;




WinAPI функции
1.8K
19 апреля 2006 года
LastSoul
279 / / 28.12.2005
Что-то я недопонимаю... :( :x
Приведит пожалуйста на примере P(
А я потом с кодом сам разберусь...
>
303
20 апреля 2006 года
makbeth
1.0K / / 25.11.2004
Цитата:
Originally posted by LastSoul
Что-то я недопонимаю... :( :x
Приведит пожалуйста на примере P(
А я потом с кодом сам разберусь...
>


У всех потомков TWinControl, к коим относится TTrackBar, есть еще один конструктор, который как раз этим и занимается:

 
Код:
constructor CreateParented(ParentWindow: HWND);
1.8K
20 апреля 2006 года
LastSoul
279 / / 28.12.2005
Цитата:
Originally posted by makbeth
У всех потомков TWinControl, к коим относится TTrackBar, есть еще один конструктор, который как раз этим и занимается:
 
Код:
constructor CreateParented(ParentWindow: HWND);


Дык и это тоже пробовал, вот:

 
Код:
h:=FindWindow(nil,'Total Commander 5.51 - sdfg');
 With Button1.CreateParented(h) Do
  Begin
   ...
  End;

Я вот немогу догнать, что между Begin и End писать?
Все перепробовал там писать, что в голову приходило, но никакого результата это мне не принесло... :x То ошибки какие-нибудь вылазят, то все OK компилится, но на другом окне ничего не создается... X)- :( :{
>
303
21 апреля 2006 года
makbeth
1.0K / / 25.11.2004
Цитата:
Originally posted by LastSoul
Дык и это тоже пробовал, вот:
 
Код:
h:=FindWindow(nil,'Total Commander 5.51 - sdfg');
 With Button1.CreateParented(h) Do
  Begin
   ...
  End;

Я вот немогу догнать, что между Begin и End писать?
Все перепробовал там писать, что в голову приходило, но никакого результата это мне не принесло... :x То ошибки какие-нибудь вылазят, то все OK компилится, но на другом окне ничего не создается... X)- :( :{
>


Попробуй вот так:

 
Код:
h:=FindWindow(nil,'Total Commander 5.51 - sdfg');
 With TButton.CreateParented(h) Do
  Begin
   ...
  End;

Скорее всего ничего не выйдет... Лезешь то в память другого процесса. Так что...
5
21 апреля 2006 года
hardcase
4.5K / / 09.08.2005
Я вот сделал так:
Код:
procedure TForm2.Button1Click(Sender: TObject);
  var Hnd: THandle;
      Btn: TButton;
  begin
    Hnd:=FindWindow('TForm1', 'Form1');
//    Hnd:=Handle;
    if Hnd <> 0 then begin
        Btn:=TButton.Create(Self); // Owner = From2 чтоб кнопка автомиатически умерла на другой форме при закрытии этой формы
        with Btn do begin
            Name:='SuperButton';
            SetBounds(10,10,200,25);
            OnClick:=OnSuperButtonClick;
            ParentWindow:=Hnd;
        end;
    end;
  end;

procedure TForm2.OnSuperButtonClick(Sender: TObject);
  begin
    ShowMessage('U''ve pushed SuperButton!!!');
  end;

У меня Form1: TForm1 в другом приложении создавалась. OnClick - событие не проскакивало в чужом приложениии, хотя кнопуся создавалась.
1.8K
21 апреля 2006 года
LastSoul
279 / / 28.12.2005
Цитата:
Originally posted by hardcase
Код:
procedure TForm2.Button1Click(Sender: TObject);
  var Hnd: THandle;
      Btn: TButton;
  begin
    Hnd:=FindWindow('TForm1', 'Form1');
//    Hnd:=Handle;
    if Hnd <> 0 then begin
        Btn:=TButton.Create(Self);
        with Btn do begin
            Name:='SuperButton';
            SetBounds(10,10,200,25);
            OnClick:=OnSuperButtonClick;
            ParentWindow:=Hnd;
        end;
    end;
  end;


Спасибо за код...
button видимо создается на чужом окне :), т.к. при повторном нажатии на кнопку кричит, что таковая есть уже на том окне... (но ее невидно :x, visible пробовал - ничего X)-)

Можно ли ее сделать типа StayOnTop?
>

5
21 апреля 2006 года
hardcase
4.5K / / 09.08.2005
Цитата:
Originally posted by LastSoul
Можно ли ее сделать типа StayOnTop?


Знаешь панельки? Так вот - видно там какраз панельками всё закрыто. И нада создавать на панельках. Кроме того - посмотри WinSight'ом - он об окошках расскажет многое. 8)
Только нафига создавать кнопку, обработчик которой не вызывается? X)- :-?

1.8K
21 апреля 2006 года
LastSoul
279 / / 28.12.2005
Цитата:
Originally posted by hardcase
Только нафига создавать кнопку, обработчик которой не вызывается? X)- :-?


:o совсем забыл... :(

Нифига у меня не вышло что я хотел сделать,
но всеравно спасибо всем за помощь...
>

5
21 апреля 2006 года
hardcase
4.5K / / 09.08.2005
Цитата:
Originally posted by LastSoul
:o совсем забыл... :(

Нифига у меня не вышло что я хотел сделать,
но всеравно спасибо всем за помощь...
>

Но думаю, можно сделать мышиный хук, который отловит момент, когда указатель проползёт над кнопкой или произойдёт клик.

1.8K
21 апреля 2006 года
LastSoul
279 / / 28.12.2005
Цитата:
Originally posted by hardcase
Но думаю, можно сделать мышиный хук, который отловит момент, когда указатель проползёт над кнопкой или произойдёт клик.


Ну клик тут неподойдет, т.к. мне в принципе
надо не Button а TrackBar зафигачить в тотал...
AlphaBlendValue хотел менять
PS Придется ченить другое придумывать... :{
>

5
21 апреля 2006 года
hardcase
4.5K / / 09.08.2005
Цитата:
Originally posted by LastSoul
Ну клик тут неподойдет, т.к. мне в принципе
надо не Button а TrackBar зафигачить в тотал...
AlphaBlendValue хотел менять
PS Придется ченить другое придумывать... :{
>

Ух, блин, что-то тебя прёт с Альфы!
А плагин к тоталу написать не выход? Правда на http://ghisler.com/plugins.htm я чего-то не нашёл описания интерфейса с плагинами (их кажется 3-4 типа).
Сам я TC не использую - у меня очень сильно навороченный Эксплорер. Если чего нада интегрировать в систему - лезу в реестр.

1.8K
22 апреля 2006 года
LastSoul
279 / / 28.12.2005
Цитата:
Originally posted by hardcase
А плагин к тоталу написать не выход?


Ты прав - выход...
Только вот я еще не дорос чтоб плагины писать... :(
>

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог