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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.04.2009, 16:32   #1
John_chek
Форумчанин
 
Аватар для John_chek
 
Регистрация: 24.01.2007
Сообщений: 108
По умолчанию Как поднять на верх динамически созданное ранее окно?

Добрый день, уважаемые!
Динамически, в разных событиях, в разное время создаются несколько окон (2,3,5 не важно):
Код:
…
  FSendOne := TFSendOne.Create(application);
  FSendOne.Caption := '111';
  FSendOne.Show;
…
  FSendOne := TFSendOne.Create(application);
  FSendOne.Caption := '222';
  FSendOne.Show;
…
То окно, которое создано последним, соответственно находится на верхнем уровне. Как зная хендл, капшн и т.д. поднять другое окно?
Вроде должно так работать:

Код:
BringWindowToTop(FindWindow('TFSendOne','111'));
или
Код:
Windows.SetFocus(FindWindow('TFSendOne','111'));
Но окно получает только фокус и если в него передавать данные, например:

Код:
FSendOne.Edit1.Text := '555';
то опять таки они попадут в окно которое создано последним, а если нужно чтобы они попали в ранее созданное окно с таким же классом?. Help!!!
John_chek вне форума Ответить с цитированием
Старый 28.04.2009, 16:41   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Есть какерский выход:
Код:
FormStyle:=fsStayOnTop;
FormStyle:=fsNormal;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.04.2009, 16:52   #3
John_chek
Форумчанин
 
Аватар для John_chek
 
Регистрация: 24.01.2007
Сообщений: 108
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Есть какерский выход:
Код:
FormStyle:=fsStayOnTop;
FormStyle:=fsNormal;
Не то что я имел ввиду.
Пишется локальная аська, так вот когда человек общается с 1-м собеседником все норм, а когда с2,3-мя сразу, то вся инфа льется в одно окно, которое открыто последним!

Окна динамические, класс у них один TFSendOne, только Caption разные.

поэтому я и спрашивал как выдергивать окно зная класс и капшн. Что-то типа FindWindow, но он возвращает только хендл, а как его потом наверх поднять?
Наверх имею ввиду не сделать поверх всех окон...
John_chek вне форума Ответить с цитированием
Старый 28.04.2009, 17:00   #4
Neeter
Форумчанин
 
Аватар для Neeter
 
Регистрация: 22.02.2009
Сообщений: 875
По умолчанию

Дык там и написано:
Код:
FormStyle:=fsStayOnTop; //Сначала делаем окно поверх всех
FormStyle:=fsNormal;       //И делаем его нормальным
Обе строки писать надо
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
Neeter вне форума Ответить с цитированием
Старый 28.04.2009, 17:02   #5
John_chek
Форумчанин
 
Аватар для John_chek
 
Регистрация: 24.01.2007
Сообщений: 108
По умолчанию

Цитата:
Сообщение от Neeter Посмотреть сообщение
Дык там и написано:

Обе строки писать надо
А смысл в чем?? Прочти мой 2-й топ
John_chek вне форума Ответить с цитированием
Старый 28.04.2009, 17:07   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
John_chek
А че это она в активное льется?
Пропиши к каждому окну свою "струю"
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.04.2009, 17:11   #7
John_chek
Форумчанин
 
Аватар для John_chek
 
Регистрация: 24.01.2007
Сообщений: 108
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А че это она в активное льется?
Пропиши к каждому окну свою "струю"
А по подробнее, код если можно?!
John_chek вне форума Ответить с цитированием
Старый 28.04.2009, 17:33   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
John_chek
А для этого нужно знать как ты делал.
Для каждого чатлайнина отдельный поток, отдельное окно... И т.д.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.04.2009, 17:40   #9
John_chek
Форумчанин
 
Аватар для John_chek
 
Регистрация: 24.01.2007
Сообщений: 108
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А для этого нужно знать как ты делал.
Для каждого чатлайнина отдельный поток, отдельное окно... И т.д.
Вот кусок код когда приходит сообщение:
Код:
  
...
HandleSendOne := Copy(a,pos('&#&#',a)+4,200);
  if FindWindow('TFSendOne',PChar(HandleSendOne)) <> 0 then
    begin
//    Windows.SetFocus(FindWindow('TFSendOne',PChar(HandleSendOne)));
//    BringWindowToTop(FindWindow('TFSendOne',PChar(HandleSendOne)));
    delete(a,pos('&#&#',a),200);
    FSendOne.richedit1.SelAttributes.Color := clRed;
    FSendOne.RichEdit1.lines.add(a);
    if isWindowVisible(FindWindow('TFSendOne',PChar(HandleSendOne))) = false then
      begin
      FSendOne.Show;
      end;
    end
  else
    begin
    FSendOne := TFSendOne.Create(application);
    SendIp := abinding.PeerIP;
    FSendOne.Caption := Copy(a,pos('&#&#',a)+4,200);
    delete(a,pos('&#&#',a),200);
    FSendOne.Show;
    FSendOne.richedit1.SelAttributes.Color := clRed;
    FSendOne.RichEdit1.lines.add(a);
    end;
...
когда месага приходит проверяю существет окно, если да тогда хочу в него сувать, если нет создаю новое, а тут косяк вылез, когда несколько окон открыто.....
HandleSendOne - сюда записываю, кто отправил, пишу это в капшн

Последний раз редактировалось John_chek; 28.04.2009 в 17:43.
John_chek вне форума Ответить с цитированием
Старый 28.04.2009, 17:45   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

ну...
Опиши запись, где будут поля окно, источник.
Потом массив этих записей.
Смысл в том чтобы связать окно с источником (чатлайнером). Когда тебе приходит сообщение, определяй от кого, ищи в этом массиве и пердавай его связанному с источником окну.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как удалить ранее нарисованное изображение Xcopy Паскаль, Turbo Pascal, PascalABC.NET 3 30.03.2009 08:50
Как динамически создать компонент subsonic Общие вопросы Delphi 2 13.03.2009 15:23
Как изменять динамически созданные Label МаксMorfey Компоненты Delphi 2 03.01.2009 10:23
Динамически массив как параметр ф-ии SNUPY Помощь студентам 2 11.05.2008 01:16
Как динамически выводить изображения на форму? Никки Общие вопросы Delphi 2 18.01.2008 18:03