Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 24.12.2015, 12:17
cadil cadil вне форума
Начинающий
 
Регистрация: 24.10.2007
Сообщения: 169
Репутация: 10
По умолчанию Как сделать Menu невидимым?

На поле формы отображается меню. Оно необходимо только при начальной настройке программы.
Помогите, пожалуйста, написать команду, чтобы при компиляции программы меню было невидимым и было видимым при выполнении команды, по аналогии, например,
Код:
Label1.Visible:=True;
Заранее благодарю.
Ответить с цитированием
  #2  
Старый 24.12.2015, 13:18
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

так если меню не нужно можно его не создавать
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #3  
Старый 24.12.2015, 14:00
cadil cadil вне форума
Начинающий
 
Регистрация: 24.10.2007
Сообщения: 169
Репутация: 10
По умолчанию

Цитата:
Сообщение от NumLock
так если меню не нужно можно его не создавать
Меню необходимо для начальной настройки программы. В моем случае - для подключения СОМ-порта.
Ответить с цитированием
  #4  
Старый 24.12.2015, 14:08
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Цитата:
Сообщение от cadil
Меню необходимо для начальной настройки программы...
Тогда можно спрятать так
Код:
var
 i: integer;
begin
 with MainMenu1 do
  for i := 0 to Items.Count-1 do
   Items[i].Visible:= not Items[i].Visible;
end;
повторный вызов отобразит снова
Ответить с цитированием
Этот пользователь сказал Спасибо Alegun за это полезное сообщение:
cadil (24.12.2015)
  #5  
Старый 24.12.2015, 19:20
cadil cadil вне форума
Начинающий
 
Регистрация: 24.10.2007
Сообщения: 169
Репутация: 10
По умолчанию

Цитата:
Сообщение от Alegun
Тогда можно спрятать так
...
повторный вызов отобразит снова
Благодарю! Реализовал Ваше предложение.
Правда, в моем случае есть маленький недостаток. Процедуры вывода-скрытия меню и других элементов организованs через двойной клик и клик по полю формы. Чтобы форму привести к исходному состоянию - приходится делать 5-6 кликов! Это многовато ...
Новая идея такая - отказаться от меню и перейти на выпадающий список, который легче спрятать.

Помогите, пожалуйста, переписать эту команду с MainMenu1 на ComboBox1:
Код:
for i:=1 to 4 do MainMenu1.Items[0].Items[i-1].Checked:=false;
как тут:
Код:
var n:Integer;
begin
 n:=0;
 if ComboBox1.ItemIndex = 0 then n:=1;
 if ComboBox1.ItemIndex = 1 then n:=2;
 if ComboBox1.ItemIndex = 2 then n:=3;
 if ComboBox1.ItemIndex = 3 then n:=4;
 if UsedCOM<>n
  then Open_COM(n);
end;

Последний раз редактировалось cadil, 24.12.2015 в 21:19.
Ответить с цитированием
  #6  
Старый 24.12.2015, 23:00
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Какая-то ересь, должно быть
Код:
...

for i:=0 to 3 do MainMenu1.Items[0].Items[i].Checked:=false;
...
var n:Integer;
begin
 n:= ComboBox1.ItemIndex + 1;
 if UsedCOM <> n then Open_COM(n);
end;
Ответить с цитированием
  #7  
Старый 24.12.2015, 23:28
cadil cadil вне форума
Начинающий
 
Регистрация: 24.10.2007
Сообщения: 169
Репутация: 10
По умолчанию

Цитата:
Сообщение от Alegun
Какая-то ересь, должно быть
Я, похоже, невнятно объяснил.
Требуется команду
Код:
for i:=1 to 4 do MainMenu1.Items[0].Items[i-1].Checked:=false;
написать для ComboBox1.
MainMenu1 - планирую исключить.
Ответить с цитированием
  #8  
Старый 25.12.2015, 00:26
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Цитата:
Сообщение от cadil
Требуется команду...написать для ComboBox1...
Напрямую не выйдет т.к. итемы у ComboBox - это обычные строки, но туда можно внедрить рисунок, вот пример псевдо CheckComboBox
Вложения
Тип файла: zip CheckCB.zip (2.4 Кбайт, 2 просмотров)
Ответить с цитированием
Этот пользователь сказал Спасибо Alegun за это полезное сообщение:
cadil (25.12.2015)
  #9  
Старый 25.12.2015, 09:12
Rosenkrantz Rosenkrantz вне форума
Активный
 
Регистрация: 04.12.2007
Адрес: Москва
Сообщения: 234
Версия Delphi: Delphi 7
Репутация: 40
По умолчанию

По крайней мере, вот этот код точно можно заменить
Код:
if ComboBox1.ItemIndex = 0 then n:=1;
if ComboBox1.ItemIndex = 1 then n:=2;
if ComboBox1.ItemIndex = 2 then n:=3;
if ComboBox1.ItemIndex = 3 then n:=4;
на
Код:
if ComboBox1.ItemIndex in [0..3] then
  n := ComboBox1.ItemIndex + 1;
Но, может быть, вы объясните - чего вы хотите получить в итоге всех этих усилий? У меня сильное подозрение, что вы просто изначально выбрали неверный путь и, как следствие, способ реализации.

Последний раз редактировалось Rosenkrantz, 25.12.2015 в 09:16.
Ответить с цитированием
  #10  
Старый 25.12.2015, 09:56
icWasya icWasya вне форума
Местный
 
Регистрация: 09.11.2010
Сообщения: 499
Репутация: 10
По умолчанию

А если просто
Код:
 Menu:=Nil;
Или вообще использовать не TMainMenu, а TPopupMenu?
Ответить с цитированием
Этот пользователь сказал Спасибо icWasya за это полезное сообщение:
cadil (23.01.2016)
  #11  
Старый 25.12.2015, 19:22
cadil cadil вне форума
Начинающий
 
Регистрация: 24.10.2007
Сообщения: 169
Репутация: 10
По умолчанию

Цитата:
Сообщение от Rosenkrantz
Но, может быть, вы объясните - чего вы хотите получить в итоге всех этих усилий? У меня сильное подозрение, что вы просто изначально выбрали неверный путь и, как следствие, способ реализации.
В термостате, который собираю, я использую цифровой термодатчик фирмы DALLAS-MAXIM. Для продвижения своей продукции фирма выпускает программы с открытым кодом для всей линейки термодатчиков, которые когда-либо выпускались фирмой.
Я пытаюсь адаптировать этот многофункциональный исходник под свои узкие задачи. Практически все уже удалось - кроме как спрятать меню.
Ответить с цитированием
  #12  
Старый 25.12.2015, 19:49
cadil cadil вне форума
Начинающий
 
Регистрация: 24.10.2007
Сообщения: 169
Репутация: 10
По умолчанию

Цитата:
Сообщение от Alegun
Напрямую не выйдет т.к. итемы у ComboBox - это обычные строки, но туда можно внедрить рисунок, вот пример псевдо CheckComboBox
Дико благодарен за проделанную работу.
Как будет выглядеть команда
Код:
MainMenu1.Items[0].Items[i-1].Checked:=false;
в переложении на CheckComboBox1?
Ответить с цитированием
  #13  
Старый 25.12.2015, 21:03
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Цитата:
Сообщение от cadil
...Как будет выглядеть команда ... в переложении на CheckComboBox1?
Код:
 CheckComboBox1.Items.Objects[i-1]:= nil;
Ответить с цитированием
  #14  
Старый 25.12.2015, 21:54
cadil cadil вне форума
Начинающий
 
Регистрация: 24.10.2007
Сообщения: 169
Репутация: 10
По умолчанию

Цитата:
Сообщение от Alegun
Напрямую не выйдет т.к. итемы у ComboBox - это обычные строки, но туда можно внедрить рисунок, вот пример псевдо CheckComboBox
Подкорректировал высланный проект под свои задачи - в итоговую строку должно вставляться ОДНО значение из выпадающего списка и оставаться ОДИН флажок в списке.
Не могу найти - где в проекте активируются флажки (см. вложение - Project2.dpr)? Помогите!
Вложения
Тип файла: zip CheckCB_1.zip (409.3 Кбайт, 1 просмотров)
Ответить с цитированием
  #15  
Старый 29.12.2015, 14:23
Rosenkrantz Rosenkrantz вне форума
Активный
 
Регистрация: 04.12.2007
Адрес: Москва
Сообщения: 234
Версия Delphi: Delphi 7
Репутация: 40
По умолчанию

Цитата:
Сообщение от cadil
В термостате, который собираю, я использую цифровой термодатчик фирмы DALLAS-MAXIM. Для продвижения своей продукции фирма выпускает программы с открытым кодом для всей линейки термодатчиков, которые когда-либо выпускались фирмой.
Я пытаюсь адаптировать этот многофункциональный исходник под свои узкие задачи. Практически все уже удалось - кроме как спрятать меню.

Я имел в виду - зачем меню нужно? Откройте форму настроек при первом запуске программы, при последующих запусках не открывайте и ничего не нужно прятать, нет? Или я все же чего-то не понимаю?
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 01:21.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter