Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 13.11.2017
Сообщений: 25
1

Минимизация строк

22.05.2018, 18:21. Показов 1139. Ответов 16

Author24 — интернет-сервис помощи студентам
Здравствуйте!
Допустим:
Delphi
1
2
3
4
5
  Image1.Visible:=true;
  Image9.Visible:=true;
  Image10.Visible:=true;
  Image11.Visible:=true;
  Image12.Visible:=true;
Как это занести в одну строчку?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.05.2018, 18:21
Ответы с готовыми решениями:

Минимизация кода
Допустим у меня 100 кнопок TButton... b1,b2,b3...b100 Мне нужно сделать так чтобы при нажатии на...

Минимизация(сворачивание) форм в панель задач
В проекте используется около 20 форм. Что бы форма, не являющаяся главной, при минимизации...

Минимизация кода для однотипных операций
Имеется такой кусок программы: repeat case GameMode.ItemIndex of 0: begin ...

Минимизация функции...
Помогите пожалуйста написать программу решения задачи минимизации функции без ограничений методом...

16
пофигист широкого профиля
4733 / 3167 / 859
Регистрация: 15.07.2013
Сообщений: 18,253
22.05.2018, 18:46 2
Элементарно.
Delphi
1
Image1.Visible:=true;Image9.Visible:=true;Image10.Visible:=true;Image11.Visible:=true;Image12.Visible:=true;
0
9 / 9 / 12
Регистрация: 17.01.2018
Сообщений: 281
22.05.2018, 18:51 3
Либо через массив компонентов, либо через перебор всех компонентов циклом.
0
0 / 0 / 0
Регистрация: 13.11.2017
Сообщений: 25
22.05.2018, 18:51  [ТС] 4
Цитата Сообщение от northener Посмотреть сообщение
Элементарно.
Я имел ввиду в одну команду
0
WarlikeLaux
22.05.2018, 18:52
  #5

Не по теме:


Цитата Сообщение от northener Посмотреть сообщение
Элементарно.
Delphi
1
Image1.Visible:=true;Image9.Visible:=true;Image10.Visible:=true;Image11.Visible:=true;Image12.Visible:=true;
:D:D:D

0
0 / 0 / 0
Регистрация: 13.11.2017
Сообщений: 25
22.05.2018, 18:52  [ТС] 6
Цитата Сообщение от WarlikeLaux Посмотреть сообщение
Либо через массив компонентов
Можно пример пожалуйста?
0
9 / 9 / 12
Регистрация: 17.01.2018
Сообщений: 281
22.05.2018, 19:00 7
Delphi
1
2
//10 элементов компонентного типа TImage
Images: array [1..10] of TImage;
Как я понимаю, вы не динамически создаете компоненты, так что вот так вот будет
Delphi
1
2
3
4
5
6
7
8
9
  n := 0;
  for i := 0 to ComponentCount -1 do
    begin
      if (Components[i] is TImage) then
        begin
          inc(n);
          Images[n] := TImage(Components[i]);
       end;
    end;
Как обращаться я думаю Вы поняли.

Добавлено через 1 минуту
Подредактировал немного, пару опечаток допустил.
1
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
22.05.2018, 19:01 8
Delphi
1
2
3
for i := 0 to ComponentCount - 1 do
if Components[i] is TImage then
TImage(Components[i]).Visible := true;
0
0 / 0 / 0
Регистрация: 13.11.2017
Сообщений: 25
22.05.2018, 19:03  [ТС] 9
Мне не все нужно скрыть, а только некоторые
0
9 / 9 / 12
Регистрация: 17.01.2018
Сообщений: 281
22.05.2018, 19:04 10
Кстати, оно может не по порядку занестись в массив, так что лучше у всех компонентов в свойство Tag записать порядковый номер и вместо Images[n] использовать Images[Component[i].Tag] в цикле инициализации массива.
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
22.05.2018, 19:06 11
Или как у WarlikeLaux,
Delphi
1
2
3
4
5
6
7
8
9
 n := 0;
  for i := 0 to ComponentCount -1 do
    begin
      if (Components[i] is TImage) then
        begin
          inc(n);
          if n in [1,9..12] then    Images[n] := TImage(Components[i]);
       end;
    end;
0
9 / 9 / 12
Регистрация: 17.01.2018
Сообщений: 281
22.05.2018, 19:07 12
Цитата Сообщение от JeeNK Посмотреть сообщение
Мне не все нужно скрыть, а только некоторые
Можно еще так (но тут надо занести в свойство Tag порядковые номера)
Delphi
1
2
3
4
5
  for j in [1, 9..12] do
    for i := 0 to ComponentCount - 1 do
      if Components[i] is TImage then
        if Components[i].Tag = j then
          TImage(Components[i]).Visible := true;
0
0 / 0 / 0
Регистрация: 13.11.2017
Сообщений: 25
22.05.2018, 19:11  [ТС] 13
Цитата Сообщение от WarlikeLaux Посмотреть сообщение
Можно еще так
Извиняюсь, конечно, но есть возможность создать какую-нибудь функцию, чтобы вызывать ее и убирать картинки в 1-2 строчки, а не в 5?
0
9 / 9 / 12
Регистрация: 17.01.2018
Сообщений: 281
22.05.2018, 19:25 14
Лучший ответ Сообщение было отмечено JeeNK как решение

Решение

Цитата Сообщение от JeeNK Посмотреть сообщение
Извиняюсь, конечно, но есть возможность создать какую-нибудь функцию, чтобы вызывать ее и убирать картинки в 1-2 строчки, а не в 5?
Создать свою пользовательскую процедуру, только вот я не знаю можно ли множество передавать как параметр, а чем тебя не устраивают эти пять строчек? А вообще, слушай, можно же так сделать, не очень красиво конечно, лучше было бы множество передавать, насчет этого думаю у Puporev нужно уточнить, он точно должен знать.
Delphi
1
2
for j in [1, 9..12] do
    MySyperProcedure(j);
Сама процедура.
Delphi
1
2
3
4
5
6
7
8
9
procedure MySyperProcedure(n: integer);
var
  i: integer;
begin
   for i := 0 to ComponentCount - 1 do
      if Components[i] is TImage then
        if Components[i].Tag = n then
          TImage(Components[i]).Visible := true;
end;
Добавлено через 5 минут
Но лучше конечно через массив компонентов (тогда и процедуры не надо, все уложится в две строчки), а то как я понимаю, раз вы хотите процедуру, то собираетесь вызывать ее не один раз.
Delphi
1
2
  for i in [1, 9..12] do
    Images[i].Visible := true; //если будет ошибка, то походу надо TImage(Images[i]).Visible := true
1
0 / 0 / 0
Регистрация: 13.11.2017
Сообщений: 25
22.05.2018, 19:25  [ТС] 15
Цитата Сообщение от WarlikeLaux Посмотреть сообщение
только вот я не знаю можно ли множество передавать как параметр
Уже сам додумал это, но все работает, спасибо
0
9 / 9 / 12
Регистрация: 17.01.2018
Сообщений: 281
22.05.2018, 19:25 16
А то перебирать каждый раз все компоненты такое себе.
0
пофигист широкого профиля
4733 / 3167 / 859
Регистрация: 15.07.2013
Сообщений: 18,253
23.05.2018, 01:07 17

Не по теме:

Цитата Сообщение от JeeNK Посмотреть сообщение
Я имел ввиду в одну команду
Я это понял, но не смог удержаться от шуточного, но строго буквального ответа на вопрос. :)


Цитата Сообщение от JeeNK Посмотреть сообщение
Мне не все нужно скрыть, а только некоторые
Если эти "некоторые" можно сгруппировать на одну панель, то всё гораздо проще.
Delphi
1
Panel1.Visible:=False;
P.S. В любом случае работу через поиск в списках Components/Controls считаю крайним случаем.
0
23.05.2018, 01:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.05.2018, 01:07
Помогаю со студенческими работами здесь

Минимизация при запуске
Здрасте. Объясните как сделать так чтобы при запуске приложение сразу было свернуто. При...

Минимизация
Не могли бы помочь написать код для вычисления f(x)? Условие . Множество K(x)=({{a,b:a,b\in N,...

Минимизация
Здравствуйте. Возник вопрос с минимизацией. Вот прилагаю картинку. Никак не могу понять как они при...

Минимизация функционала
Добрый день! И всё-таки жизнь столкнула с математикой :) - экспериментируя с алгоритмами...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru