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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.09.2009, 20:03   #1
Nester
Форумчанин
 
Аватар для Nester
 
Регистрация: 22.10.2008
Сообщений: 103
Радость Form Region-почему так происходит

Создаю регион присваиваю его форме-всё ок
но стоит выполнить FormStyle:=fsStayOnTop как регион игнорируется

подскажите почему так происходит?

Вот пример:
Вложения
Тип файла: rar Глюк.rar (161.6 Кб, 14 просмотров)
Никто не знает больше чем не знаю я
Nester вне форума Ответить с цитированием
Старый 14.09.2009, 20:27   #2
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Скорее всего из-за этого:

Delphi 7:
Код:
procedure TCustomForm.SetFormStyle(Value: TFormStyle);
begin
  if FFormStyle <> Value then  begin
     //...
    if not (csDesigning in ComponentState) then DestroyHandle;
    //...
    if not (csDesigning in ComponentState) then UpdateControlState;
    //...
  end;
end;
а, в D10 работает нормально, т.к. изменение производится без удаления Handle:

Код:
procedure TCustomForm.SetFormStyle(Value: TFormStyle);
begin
  if FFormStyle <> Value then begin
    if ((Value = fsNormal) and (FFormStyle = fsStayOnTop)) or
       ((Value = fsStayOnTop) and (FFormStyle = fsNormal)) then
    begin
      FFormStyle := Value;
      if not (csDesigning in ComponentState) and HandleAllocated then
        SetWindowPos(Handle, HWND_STYLE[FFormStyle = fsStayOnTop], 0, 0, 0, 0,
          SWP_NOMOVE or SWP_NOSIZE or SWP_NOACTIVATE or SWP_NOOWNERZORDER);
    end
   //...
Так, что попробуйте SetWindowPos() вместо FormStyle := ...
alexBlack вне форума Ответить с цитированием
Старый 14.09.2009, 20:53   #3
Nester
Форумчанин
 
Аватар для Nester
 
Регистрация: 22.10.2008
Сообщений: 103
Радость

Спасибо!
сделал так
Код:
SetWindowPos(Form1.Handle, HWND_TOPMOST, Form1.Left, Form1.Top, Form1.Width, Form1.Height, SWP_SHOWWINDOW);
Никто не знает больше чем не знаю я
Nester вне форума Ответить с цитированием
Старый 14.09.2009, 21:16   #4
Nester
Форумчанин
 
Аватар для Nester
 
Регистрация: 22.10.2008
Сообщений: 103
По умолчанию

Может кому сгодится:
FormStyle:=fsStayOnTop
Код:
SetWindowPos(Form1.Handle, HWND_TOPMOST, Form1.Left, Form1.Top, Form1.Width, Form1.Height, SWP_SHOWWINDOW);
FormStyle:=fsNormal
Код:
SetWindowPos(Form1.Handle, HWND_NOTOPMOST, Form1.Left ,Form1.Top, Form1.Width, Form1.Height, SWP_SHOWWINDOW);
Никто не знает больше чем не знаю я
Nester вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
почему так? помогите решить evgenrpo Общие вопросы C/C++ 6 31.05.2009 22:43
Почему так происходит? Zeraim Общие вопросы Delphi 1 05.05.2008 14:10
Почему так? Знач. по умолч. у функции and277 Общие вопросы C/C++ 9 14.03.2008 17:53
Почему так? Сильванович Михаил Общие вопросы C/C++ 2 03.07.2007 11:57
Обьясните почему так... malevich Общие вопросы Delphi 5 10.02.2007 17:29