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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.04.2007, 20:12   #1
Voland
Heavy metal
Пользователь
 
Аватар для Voland
 
Регистрация: 02.04.2007
Сообщений: 42
Вопрос Полноэкранный режим и главное меню

Доброго времени суток!

Есть вопрос... Надо сделать так чтобы главное меню моей программы при переходе в полноэкранный режим (методом BorderStyle:=bsNone; WindowState:=wsMaximized; ) скрывалось, а при подведении курсора к верху экрана автоматически показывалось. Я пробовал так: когда надо скрыть меню ставим Self.MainMenu:=nil; а потом обратно Self.MainMenu:=MainMenu1; Но это вызывает изменение размеров клиентской части окна. В большинстве программ где есть такая фича, меню просто появляется ПОВЕРХ окна не изменяя его размер. Можно ли так сделать в VCL? или через WinAPI? И есть ли другой способ сделать полноэкранный режим?
Voland вне форума Ответить с цитированием
Старый 02.04.2007, 21:33   #2
Cezar
Средний прогер
Форумчанин
 
Аватар для Cezar
 
Регистрация: 16.01.2007
Сообщений: 123
По умолчанию

Попробуй так:
Создай еще одно окно (BorderStyle:=bsNone), помести на него меню.
Создай сверху в главном окне какой-то прозрачный обьект (например TShape).
И в событии этого обьекта OnMouseMove:
begin
form2.show;
end;
Ну там дальше создай условие скрытия окна/меню.

Сам не пробовал.
Cezar вне форума Ответить с цитированием
Старый 03.04.2007, 10:56   #3
Voland
Heavy metal
Пользователь
 
Аватар для Voland
 
Регистрация: 02.04.2007
Сообщений: 42
Радость

Большое спасибо за идею!!! Получилось!
Сейчас выложу код, может ещё кому пригодится.

Код:
unit Unit1; // главная форма

...

type
  TForm1 = class(TForm)
    Image1: TImage;	// Align:=alClient
    MainMenu1: TMainMenu;
    ...
    Fullscreen1: TMenuItem;
    procedure Fullscreen1Click(Sender: TObject);
    procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

uses Unit2;

{$R *.dfm}

{ TForm1 }

procedure TForm1.Fullscreen1Click(Sender: TObject);
begin
  if Fullscreen1.Checked then begin
    BorderStyle:=bsNone;
    WindowState:=wsMaximized;
    Menu:=nil;	// чтобы не делать два одинаковых меню, просто
    Form2.Menu:=MainMenu1;  // перекидываем на вторую форму
  end else begin
    Form2.Hide;  
    WindowState:=wsNormal;  // обязательно в таком порядке
    BorderStyle:=bsSizeable;
    Form2.Menu:=nil;
    Menu:=MainMenu1;
  end;
end;

procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if not Fullscreen1.Checked then Exit; 
  if Y <= 2 then begin
    Form2.Width:=Screen.Width;  //если вдруг разрешение поменяют во время работы проги
    Form2.ClientHeight:=0;  
    Form2.Show
  end else
    Form2.Hide;
end;

end.
Код:
unit Unit2; // дополнительная форма - только для этой цели

...

type
  TForm2 = class(TForm)
    procedure CreateParams(var p: TCreateParams); override;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

uses Unit1;  // чтобы получить доступ отсюда к меню на главной форме

procedure TForm2.CreateParams(var p: TCreateParams);
begin
  inherited;
  p.ExStyle:=p.ExStyle or WS_EX_TOPMOST;  // чтобы всегда была поверх главной
end;

procedure TForm2.FormCreate(Sender: TObject);
begin
  Top:=0;
  Left:=0;
end;
Вот. Ещё раз спасибо!
Voland вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
переход в полноэкранный режим andrey4623 Общие вопросы Delphi 7 11.03.2008 09:28
Помогить настроить полноэкранный режим для Turbo Pascal 7.0 в Терминале olegbelyi Паскаль, Turbo Pascal, PascalABC.NET 1 30.10.2007 13:05
Полноэкранный режим Кронос Gamedev - cоздание игр: Unity, OpenGL, DirectX 1 26.08.2007 12:17
полноэкранный режим в Delphi deadh5n1 Общие вопросы Delphi 1 27.06.2007 09:18
Полноэкранный режим mishel Общие вопросы Delphi 2 26.01.2007 02:31