Форум программистов, компьютерный форум, киберфорум
Наши страницы
Lazarus
Войти
Регистрация
Восстановить пароль
 
Sharpix
0 / 0 / 0
Регистрация: 07.10.2013
Сообщений: 62
#1

Просмотрщик графики - полноэкранный режим

20.07.2018, 14:52. Просмотров 93. Ответов 0
Метки нет (Все метки)

Здравствуйте.
Я делаю просмотрщик графики. Подскажите как правильнее реализовать полноэкранный просмотр. Есть 2 варианта.
1. Развернуть на весь экран MainForm. У MainForm есть MainMenu, Panel1 вверху с кнопками, StatusBar и ScrollBox с Image1 внутри. Вот такая процедура:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
procedure FullScreen;
begin
  if filesCount > 0 then
  with MainForm do
  begin
    lastWidth := MainForm.Width;
    lastHeight := MainForm.Height;
    lastLeft := MainForm.Left;
    lastTop := MainForm.Top;
    BorderStyle := bsNone;
    WindowState := wsFullScreen;
    FormStyle := fsStayOnTop;
    //MainMenu.Items.Visible := false;
    Menu := nil;
    Panel1.Visible := false;
    StatusBar.Visible := false;
    Image1.Width := ScrollBox1.Width;
    Image1.Height := ScrollBox1.Height;
    LblFName.Visible := true;
    LblFName.Caption := allFiles[currIndex] + ' (' + IntToStr(currIndex + 1) + '/' + IntToStr(filesCount) + ') ';
    fScreen := true;
  end;
end;
Всё работало нормально до тех пор, пока я не добавил MainMenu в последнюю очередь. Форма корректно разворачивалась на весь экран, картинка вписывалась - ОК. После добавления MainMenu и установки MainMenu.Items.Visible:=false; или MainForm.Menu:=nil; картинка стала разворачиваться и после этого сразу сдвигаться немного вверх (видимо, на высоту исчезнувшего MainMenu), а под картинкой остаётся пустое пространство соответствующей высоты. Что можно сделать, чтобы MainMenu скрывалось по-тихому, не влияя на другие компоненты?

2. Сделать две формы - вторую для полноэкранного режима. Скрыть первую - показать вторую. И наоборот. Две автосоздаваемые формы. Вот так я сделал:
Код из первой формы:
Pascal
1
2
3
4
5
6
7
8
9
10
11
unit Main;
 
implementation
uses FScreen;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  Form2.Show;
  //Form1.Visible := false;
  Form1.Hide;
end;
Код из второй формы:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
unit FScreen;
 
implementation
uses Main;
 
procedure TForm2.FormShow(Sender: TObject);
begin
  Image1.Picture.LoadFromFile(fName);  // Имя файла из Form1
  PicResize;
end;
 
procedure TForm2.FormClose(Sender: TObject; var CloseAction: TCloseAction);
begin
  //Form1.Visible:=true;
  Form1.Show;
end;
 
procedure TForm2.Button1Click(Sender: TObject);
begin
  Close;
end;
На первый взгляд всё работает корректно. Всё ли я сделал правильно? И как лучше:
Form1.Visible := false; или Form1.Hide;
Form1.Visible:=true; или Form1.Show; соответственно
Работает вроде одинаково, даже кнопка приложения при показе Form2 исчезает из тулбара.

Второй вариант получился лучше. Как быть?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.07.2018, 14:52
Ответы с готовыми решениями:

Как узнать что чужое приложение(окно) перешло в полноэкранный режим?
Надо чтобы моя программа не выводила окно, если окно чужого приложения заняло...

Просмотрщик изображений Lazarus
доброго времени суток!:umnik:Решил написать свой просмотрщик изображений...

Просмотрщик изображении с возможностью Zoom-а
Помогите пожалуйста сделать так что бы изабражения увеличеловалось /уменьшалось...

Просмотрщик изображений в Лазарусе, с буфером обмена
Помогите сделать что бы можно было копировать и вставить изображение . И...

Полноэкранный режим -> оконный режим
Нужно программно перевести игру из полноэкранного режима в оконный, пробовал...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.07.2018, 14:52

Просмотрщик графики
Прошу совета, парни. По клику в ListBox грузится одна картинка в Image1, а...

Полноэкранный режим
Подскажите можно ли как нибудь сделать полноэкранный режим формы? Есть ли...

Полноэкранный режим
Доброго дня всем! Есть такая проблема: тестовая программа написана в Паскале,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru