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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.09.2013, 19:19   #11
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Пока Человек борща не пришел могу посоветовать кинуть на форму компонент TApplication, и в его событии OnMinimize прописать WindowState:=wsNormal;
Или так:
Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
  Application.OnMinimize:=oga;
end;

procedure TForm1.oga(Sender: TObject);
begin
  WindowState:=wsNormal;
end;
Что равноценно.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.09.2013, 19:48   #12
Lifeda92
Пользователь
 
Регистрация: 15.08.2012
Сообщений: 39
По умолчанию

Нужно именно изменить системное меню.
Lifeda92 вне форума Ответить с цитированием
Старый 07.09.2013, 19:50   #13
grominfo
Форумчанин
 
Аватар для grominfo
 
Регистрация: 30.05.2011
Сообщений: 651
По умолчанию

Цитата:
Нужно именно изменить системное меню.
Системное меню меняется только через winapi. Когда писалась Делфи 7, аeро-тем для Windows вроде бы не было.
Создание, программирование и сопровождение сайтов любой сложности.
Изготовление программ на заказ.
Список услуг и портфолио на сайте www.andreygrom.ru
grominfo вне форума Ответить с цитированием
Старый 07.09.2013, 19:52   #14
Lifeda92
Пользователь
 
Регистрация: 15.08.2012
Сообщений: 39
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Пока Человек борща не пришел могу посоветовать кинуть на форму компонент TApplication, и в его событии OnMinimize прописать WindowState:=wsNormal;
Или так:
Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
  Application.OnMinimize:=oga;
end;

procedure TForm1.oga(Sender: TObject);
begin
  WindowState:=wsNormal;
end;
Что равноценно.
Спасибо, сейчас попробую, но хотелось бы все таки узнать как изменить системное меню.
Lifeda92 вне форума Ответить с цитированием
Старый 07.09.2013, 19:54   #15
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Ещё вариант:
Код:
  private
    { Private declarations }
  public
    { Public declarations }
    //Ставим фильтр оконных сообщений
    procedure WMMsgFilter(var aMsg: TMessage); message WM_SYSCOMMAND;
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}
{ TForm2 }

procedure TForm2.WMMsgFilter(var aMsg: TMessage);
begin
  if (aMsg.Msg = WM_SYSCOMMAND) then // Если 100600% это оно
  begin
    if (aMsg.WParam = SC_MINIMIZE) then // И окно минимизируется
      aMsg.Msg := WM_NULL;              // Заменим код сообщения на NULL
  end;
  inherited; // Отправим сообщение дальше
end;
Кнопка окна, пункты в контекстном меню - работать не будут.
Человек_Борща вне форума Ответить с цитированием
Старый 07.09.2013, 20:19   #16
grominfo
Форумчанин
 
Аватар для grominfo
 
Регистрация: 30.05.2011
Сообщений: 651
По умолчанию

Вот ещё примерчик

http://delphiworld.narod.ru/base/cha...stem_menu.html
Создание, программирование и сопровождение сайтов любой сложности.
Изготовление программ на заказ.
Список услуг и портфолио на сайте www.andreygrom.ru
grominfo вне форума Ответить с цитированием
Старый 07.09.2013, 20:26   #17
Lifeda92
Пользователь
 
Регистрация: 15.08.2012
Сообщений: 39
По умолчанию

Цитата:
Сообщение от grominfo Посмотреть сообщение
Это относится к системному меню формы.
Lifeda92 вне форума Ответить с цитированием
Старый 07.09.2013, 20:31   #18
grominfo
Форумчанин
 
Аватар для grominfo
 
Регистрация: 30.05.2011
Сообщений: 651
По умолчанию

Цитата:
Это относится к системному меню формы.
Я знаю. Просто мне не совсем понятно, как винда строит системное меню на превью-окнах. Попробуйте поискать дескриптор этого окна, и изменить системное меню в нём.
Создание, программирование и сопровождение сайтов любой сложности.
Изготовление программ на заказ.
Список услуг и портфолио на сайте www.andreygrom.ru
grominfo вне форума Ответить с цитированием
Старый 07.09.2013, 21:35   #19
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Это относится к системному меню
МоньяГГГ )))
Ну накой тебе системное меню, если:
1) Его действия перекроют эти примеры
2) win+D или типа того могут все это дело поХРить
3) Затея с антисворачиванием, извини конечно, глупа и опасна. А хуже всего когда твое окно, которое ты запретил к сворачиванию начинает перекрывать свои же модальные диалоги - вот тогда начинается самое веселье. Поверь мне - вспоминать тебя будут словами нелестными.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.09.2013, 21:37   #20
Lifeda92
Пользователь
 
Регистрация: 15.08.2012
Сообщений: 39
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
Ещё вариант:
Код:
  private
    { Private declarations }
  public
    { Public declarations }
    //Ставим фильтр оконных сообщений
    procedure WMMsgFilter(var aMsg: TMessage); message WM_SYSCOMMAND;
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}
{ TForm2 }

procedure TForm2.WMMsgFilter(var aMsg: TMessage);
begin
  if (aMsg.Msg = WM_SYSCOMMAND) then // Если 100600% это оно
  begin
    if (aMsg.WParam = SC_MINIMIZE) then // И окно минимизируется
      aMsg.Msg := WM_NULL;              // Заменим код сообщения на NULL
  end;
  inherited; // Отправим сообщение дальше
end;
Кнопка окна, пункты в контекстном меню - работать не будут.
Код:
procedure TForm1.aplctnvnts1Message(var Msg: tagMSG; var Handled: Boolean);
begin
    if (Msg.Message = WM_SYSCOMMAND) then
  begin
    if (Msg.wParam = SC_MINIMIZE) then
      Msg.message := WM_NULL;
  end;
  inherited;
end;
Спасибо работает.
Lifeda92 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сворачивание формы lu_una Общие вопросы Delphi 4 04.12.2012 11:01
Проблема отображения главной формы над другими Прик Общие вопросы Delphi 10 24.01.2011 12:31
Как программно закрыть все открытые модальные формы перед сворачиванием главной формы в трей? SkAndrew Общие вопросы Delphi 8 27.01.2010 22:44
Обращение из формы в dll к элементу главной формы (delphi) a_n_n_a Помощь студентам 3 10.05.2009 04:00
Сворачивание формы. Diogo Общие вопросы Delphi 29 31.08.2007 10:31