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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 05.07.2011, 10:20
Аватар для Amilman
Amilman Amilman вне форума
Новичок
 
Регистрация: 27.03.2011
Адрес: г.Кемерово
Сообщения: 98
Версия Delphi: XE
Репутация: 10
Радость Нужна помощь с кодом

Доброго времени суток. Меня интересует реализация моей задачи. Допустим у меня есть кнопка и три картинки, мне нужно что бы при нажатии на кнопку картинка становились visible:=false и так при каждом нажатии на кнопку картинки по очереди становились visible:=false.
Как это можно реализовать?
Заранее спасибо)
Ответить с цитированием
  #2  
Старый 05.07.2011, 11:03
chainik chainik вне форума
Начинающий
 
Регистрация: 30.06.2008
Сообщения: 140
Репутация: 8882
По умолчанию это несложно

ЭТО НЕСЛОЖНО.
делаем глобальную переменную, в которой храним индекс картинки.
при каждом нажатии на кнопку индекс инкрементируем,
а чтобы он не вышел за границы- применяем функцию mod
Я этот трюк часто применяю Довольно удобно для пользователя
и экономит площадь экрана.

Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
type
Tz=array[0..2] of record
                    CFNam,      //имя файла с картинкой
                    Cap:string; //заголовок кнопки
                    end;
 
const
Z:Tz=((CFnam:'Pictures1.bmp';Cap:'Картинка1'),
        (CFnam:'Pictures2.bmp';Cap:'Картинка2'),
        (CFnam:'Pictures3.bmp';Cap:'Картинка3'));
 
var
Index:integer;      //здесь хранится индекс картинки
 
procedure TForm1.Button1Click(Sender: TObject);
begin
Index:=(Index+1) mod Length(Z);
Button1.Caption:=Z[Index].Cap;
Image1.Picture.LoadFromFile(Z[Index].CFnam);
end;
Ответить с цитированием
  #3  
Старый 05.07.2011, 11:35
Аватар для Amilman
Amilman Amilman вне форума
Новичок
 
Регистрация: 27.03.2011
Адрес: г.Кемерово
Сообщения: 98
Версия Delphi: XE
Репутация: 10
Подмигивание

Спасибо большое за код он мне пригодится). Но мне нужно именно чтоб они становились не видимыми. Когда последняя картинка станет Visible:=false то у меня запланировано действие.
Ответить с цитированием
  #4  
Старый 05.07.2011, 17:05
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Тут большой простор для фантазии. Если вам нужно случайным образом скрывать следующую картинку, а на форме кроме ваших картинок иных нет, то можно просто пробежаться по всем контролам формы и при нахождении нужного типа контрола в видимом состоянии скрывать его. Можно ориентироваться по имени картинки, если они однотипные, то можно искать контрол по маске имени и тоже скрывать по необходимости. Можно сделать массив из указателей на ваши картинки и работать с ним и т.д.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #5  
Старый 07.07.2011, 08:12
Аватар для DrDharm
DrDharm DrDharm вне форума
Прохожий
 
Регистрация: 07.07.2011
Адрес: Cаратов
Сообщения: 7
Версия Delphi: 7
Репутация: 10
По умолчанию

Ну, вот говорят: поздно рыть колодец, когда хочется пить...только вчера скачал Дельфи, и...понял что за пару дней не разберусь...

Поскольку, проблема аналогична, не рискнул создавать новую тему. помогите, плиз, с кодом : необходимо сделать программку для рассчета плотности двухкомпонентной смеси с содержанием компонентов 0-100% с шагом 1, для температур -40...40 с шагом 1 , по формуле

P=100/(d1/p1+(100-d1)/p2)/1000;

где d1 - доля 1-го компонента, P1,P2 - массивы по 81 числу(заданные плотности для текущей температуры)...

т.е. для температуры -40, производится 101 рассчет для 0-100% содержания, затем для -39 и т.д.

если возможно, как-то сделать вывод результатов в виде таблицы...
__________________
BENEFICIUM ACCIPERE LIBERTATEM EST VENDERE
Ответить с цитированием
  #6  
Старый 07.07.2011, 09:37
Аватар для Developer
Developer Developer вне форума
Прохожий
 
Регистрация: 01.07.2011
Адрес: Украина
Сообщения: 27
Версия Delphi: 7, 2009
Репутация: 75
По умолчанию

Можете опесать детальдно формулу, а именно что это за массивы P1, P2 и откуда они берутся? Желательно навести пример пару расчётов.
Во всяком случае я создал проект в Delphi7 которые поможет решить вашу задачу (скачать). В место i*j вам необходимо вставить вашу формулу.
Ответить с цитированием
  #7  
Старый 07.07.2011, 10:40
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Уважаемый DrDharm я в упор не увидел ничего аналогичного заданной теме. Да и даже если бы оно было так, в чужой теме задавать свой вопрос не принято. Это неизбежно приводит к бардаку. А посему обращаюсь к модератору с просьбой перенести данный вопрос в отдельную тему, где и продолжим обсуждать уже Вашу проблему.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #8  
Старый 07.07.2011, 12:03
chainik chainik вне форума
Начинающий
 
Регистрация: 30.06.2008
Сообщения: 140
Репутация: 8882
По умолчанию

За 2 дня не осилишь. Точно говорю.
Да и не в тему по-моему...

Я тут накропал кое- что
Надеюсь поможет
exe в прищепку не влез. Откомпилируешь сам (Delphi7)

Обработку ошибок не делал!
При неверном вводе повиснет!

А еще смущает формула. Там деление на 1000- делить все выражение или только то что в скобках?
Как я понимаю это переводной коэфф плотности (но тебе виднее)
Короче внимательно посмотри скобки и внеси в мой исходник.
Вложения
Тип файла: zip Tmp.zip (11.5 Кбайт, 2 просмотров)
Ответить с цитированием
  #9  
Старый 07.07.2011, 12:16
Аватар для DrDharm
DrDharm DrDharm вне форума
Прохожий
 
Регистрация: 07.07.2011
Адрес: Cаратов
Сообщения: 7
Версия Delphi: 7
Репутация: 10
По умолчанию

Уважаемый Страдалецъ, я глубоко извиняюсь. Аналогичность,я увидел в названии темы, подумалось что изобилие одноименных(с похожими названиями) тем, скорее приведет к бардаку; сожалею - ошибся, не повториться. Если можно перенести тему, буду только рад.

Спасибо огромное, Developer, в общем цикл в цикле это оно, то что надо было и выводится именно так как и надо; а массивы там, значения плотностей для каждого градуса температуры P1(1...81), P2(1...81) - константы; их бы как то вручную загнать, они впоследствии не меняются, вот рассчет для примера при температуре -40(шаг 1):
d1=0%(в первом шаге внешнего цикла прокручивается от 0 до 100) и 100-d1=100% - соотношение частей в смеси;
плотности этих частей для температуры -40, P1(1)=500 и P2(1)=600 соответственно:

P(суммарная плотность)=100/(d1/P1(1)+(100-d1)/P2(1);
-40 0% P=100/(0/500+(100-0/600);
-40 1% P=100/(1/500+(100-1/600);
...
-40 100% p=100/(100/500+(100-100)/600)

101 цикл для -40, затем 101 цикл(0-100%) для -39, где в рассчете используются вторые значения из массивов P1(2)=517.5 и P2(2)=619.7...вот эти-то значения(сорри, не в курсе допустима-ли индексация имен массивов P1 и P2) и надо как то задать перед вычислением, то есть они у меня есть, их как то ввести надо ) еще раз, дико извиняюсь, я, кроме школьно-програмного бейсика не имел дела с программированием, но проблема рассчета почти 10000 значений стоит очень уж остро )
__________________
BENEFICIUM ACCIPERE LIBERTATEM EST VENDERE
Ответить с цитированием
  #10  
Старый 07.07.2011, 12:55
Аватар для Developer
Developer Developer вне форума
Прохожий
 
Регистрация: 01.07.2011
Адрес: Украина
Сообщения: 27
Версия Delphi: 7, 2009
Репутация: 75
По умолчанию

Массивы сохраняются в файле "table.txt"
Вложения
Тип файла: rar calculation.rar (187.3 Кбайт, 2 просмотров)
Ответить с цитированием
  #11  
Старый 07.07.2011, 13:21
Аватар для DrDharm
DrDharm DrDharm вне форума
Прохожий
 
Регистрация: 07.07.2011
Адрес: Cаратов
Сообщения: 7
Версия Delphi: 7
Репутация: 10
По умолчанию

To Developer !!! Огромаднейшее спасибище !!! Работает, все работает...Один вопрос еще, с Вашего позволения:у меня в массивах встречаются не целочисленные значения, и, если я правильно понял, в описании массивов :


aP1,aP2:array [1..81] of integer;

вместо integer прописать real ?
__________________
BENEFICIUM ACCIPERE LIBERTATEM EST VENDERE
Ответить с цитированием
  #12  
Старый 07.07.2011, 16:09
Аватар для Developer
Developer Developer вне форума
Прохожий
 
Регистрация: 01.07.2011
Адрес: Украина
Сообщения: 27
Версия Delphi: 7, 2009
Репутация: 75
По умолчанию

Цитата:
Сообщение от DrDharm
To Developer !!! Огромаднейшее спасибище !!! Работает, все работает...Один вопрос еще, с Вашего позволения:у меня в массивах встречаются не целочисленные значения, и, если я правильно понял, в описании массивов :


aP1,aP2:array [1..81] of integer;

вместо integer прописать real ?

Да. Но изменения нужны не только там. Прикрепляю новую версию программы.
Вложения
Тип файла: rar calculation.rar (187.7 Кбайт, 4 просмотров)

Последний раз редактировалось Developer, 07.07.2011 в 16:20.
Ответить с цитированием
  #13  
Старый 08.07.2011, 08:42
Аватар для DrDharm
DrDharm DrDharm вне форума
Прохожий
 
Регистрация: 07.07.2011
Адрес: Cаратов
Сообщения: 7
Версия Delphi: 7
Репутация: 10
По умолчанию

To Developer. Ещё раз благодарю безмерно; все работает как часики
__________________
BENEFICIUM ACCIPERE LIBERTATEM EST VENDERE
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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