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

Присвоить форму переменной

21.12.2022, 01:21. Показов 2309. Ответов 34
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет. Как обычно перерыл весь инет и не нашел ответа.
В программе есть несколько форм с image, и функция, как этой функции передать в какой форме должна выводиться картинка:
Пример.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Form1
...
ButtonClick();
 begin
 If edit1.text = '1' then a:=1;
 If edit1.text = '2' then a:=2;
 imageload(a);  
end;
 
procedure imageload(a: Integer);
begin
if a = 1 then
Form3.Image1.Picture.LoadFromFile('aaa');
if a = 2 then
Form4.Image1.Picture.LoadFromFile('aaa');
end
...

Как я могу сделать чтобы было вот так:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Form1
...
ButtonClick();
 begin
 If edit1.text = '1' then a:=Form3;
 If edit1.text = '2' then a:=Form4;
 imageload(a);  
end;
 
 
procedure imageload(a: Integer);
begin
a.Image1.Picture.LoadFromFile('aaa');
end
Надеюсь понятно написал)
В общем мне необходимо переменной присвоить номер формы.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.12.2022, 01:21
Ответы с готовыми решениями:

Присвоить значение переменной.
Здравствуйте есть такая строка Form1.top := (point.y) - 250; Form1.left := (point.x) - 80 как присвоить переменную к -250 и - 80 вот...

Table присвоить переменной
Есть большая подпрограмма, в ней часто используется компонент Table1. Но у меня таких TTable много и процедуру нужно переписывать для...

Присвоить значение переменной
Не получается присвоить клетке значение переменной (не соответствие типов переменных), пробовал по-разному, но ничего не выходит. ...

34
1 / 1 / 0
Регистрация: 05.12.2020
Сообщений: 68
24.12.2022, 01:15  [ТС]
Студворк — интернет-сервис помощи студентам
Да я же все объяснил что надо и какой у меня вопрос.

Не понимаю, не работает..
Почему здесь создаются формы и только Форм2? У меня же уже есть 9 форм и на каждой из них Image1 в которую загружается картинка.
Delphi
1
2
3
4
5
6
7
procedure TForm1.FormCreate(Sender: TObject);
begin
  Forms := TList.Create;
  Forms.Add(TForm2.Create(Application));
  Forms.Add(TForm2.Create(Application));
  Forms.Add(TForm2.Create(Application));
end;
И здесь почему TForm2, а где 3 и 4?
Delphi
1
2
3
4
5
6
7
begin
  if TryStrToInt(Edit1.Text, n) and (n >= 0) and (n < Forms.Count) then begin
    f.FileName := ExtractFilePath(ParamStr(0)) + '1.jpg';
    f.Text := 'Какая-то картинка на форме №' + IntToStr(n);
    TForm2(Forms[n]).LoadImage(f);
    TForm2(Forms[n]).Show;
  end;
Пытаюсь сделать вот так:

Создать новый проект с 3мя VCL Form.
на первой Edit1 и Button1,
на второй Image1
и на третий тоже Image1.

Я так понимаю что в этот лист надо добавить 2 мои формы на которых Image как-то так:
Delphi
1
2
3
4
5
6
7
procedure TForm1.FormCreate(Sender: TObject);
begin
  Forms := TList.Create;
  Forms.Add(TForm2.Create(Application));
  Forms.Add(TForm3.Create(Application));
  
end;
И теперь чет по-другому сделать с кнопкой.
Пытаюсь сделать разными способами опираясь на твой код, но никак не работает, точнее я не догоняю как сделать правильно.
0
Модератор
4150 / 2360 / 813
Регистрация: 15.11.2015
Сообщений: 9,489
24.12.2022, 12:27
Цитата Сообщение от AndreyPok Посмотреть сообщение
Почему здесь создаются формы и только Форм2?
Не Form2, а типа TForm2. У тебя сейчас 9 разных форм, пусть они и сделаны одинаково, но для компилятора они разные. Если сделать все 9 форм одного типа (TForm2, например), то они все будут одинаковые, и ко всем ним можно будет обращаться, как к TForm2, что и делается далее в коде.

Цитата Сообщение от AndreyPok Посмотреть сообщение
а где 3 и 4?
А зачем, если можно обойтись одним классом? Не, ну если тебе хочется вручную создавать 9 одинаковых форм, то это сугубо твоё личное дело. Но ведь, это не удобно.

Цитата Сообщение от AndreyPok Посмотреть сообщение
опираясь на твой код, но никак не работает
Давай проект, а то не понятно, что ты делаешь неправильно.
0
1 / 1 / 0
Регистрация: 05.12.2020
Сообщений: 68
25.12.2022, 14:08  [ТС]
Да у меня в проекте ничего нет, я не понимаю, могу конечно пустой прикрепить)
Если сделать все 9 форм одного типа и обращаться как к Form2, то как мы сможем выбрать куда загрузить картинку в Image1 на форме 1 или в Image1 на форме 2, обращаться к ним же одинаково через form2?

Вот я загрузил новый проект и там отметил как необходимо. Если кто сделает спасибо.
Вложения
Тип файла: rar Image.rar (6.9 Кб, 11 просмотров)
0
1 / 1 / 0
Регистрация: 05.12.2020
Сообщений: 68
25.12.2022, 14:16  [ТС]
P.S. В файле unit1 вместо form1 и form2, должно быть form2 и form3
0
Модератор
4150 / 2360 / 813
Регистрация: 15.11.2015
Сообщений: 9,489
25.12.2022, 19:43
Цитата Сообщение от AndreyPok Посмотреть сообщение
Если сделать все 9 форм одного типа и обращаться как к Form2, то как мы сможем выбрать куда загрузить картинку
Брать ссылку на форму из списка по номеру формы.

Цитата Сообщение от AndreyPok Посмотреть сообщение
обращаться к ним же одинаково через form2?
Если в дизайне создашь 9 форм, то они будут разные, и обращаться ко всем, как к TForm2 нельзя - это будут разные формы, пусть даже одинаково объявлены.
0
Айлурофил
 Аватар для Massaraksh7
518 / 451 / 112
Регистрация: 27.05.2017
Сообщений: 2,745
Записей в блоге: 6
25.12.2022, 19:50
А что мешает создать массив форм?
Delphi
1
var FormArr:array [0..8] of TForm2;
1
Модератор
4150 / 2360 / 813
Регистрация: 15.11.2015
Сообщений: 9,489
25.12.2022, 23:53
Цитата Сообщение от Massaraksh7 Посмотреть сообщение
А что мешает создать массив форм?
Уже предложено, не хочет.
1
1 / 1 / 0
Регистрация: 05.12.2020
Сообщений: 68
26.12.2022, 14:39  [ТС]
Все оказалось очень просто, непонятно почему никто не знает.

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
...
var
 ntab: TImage;
 tab: string;
uses Form2, Form3;
 
....
tab := edit1.text;
 
if tab = '1' then
 begin
 ntab:= form2.Image1;
 end;
if tab = '2' then
 begin
 ntab:= form3.Image1;
 end;
 
ntab.Picture.LoadFromFile(path+'aa.bmp');
Или для некоторых это гавнокодинг? прям говнистее некуда
0
 Аватар для Arcor
5709 / 2300 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
26.12.2022, 14:47
Цитата Сообщение от AndreyPok Посмотреть сообщение
Все оказалось очень просто, непонятно почему никто не знает.
потому что
Цитата Сообщение от AndreyPok Посмотреть сообщение
Или для некоторых это гавнокодинг? прям говнистее некуда
ну уже ж давали дельную реализацию) чтобы избавиться от form2, form3, form100000000000000...
1
Айлурофил
 Аватар для Massaraksh7
518 / 451 / 112
Регистрация: 27.05.2017
Сообщений: 2,745
Записей в блоге: 6
26.12.2022, 14:47
Цитата Сообщение от AndreyPok Посмотреть сообщение
Или для некоторых это гавнокодинг?
На редкость.
Цитата Сообщение от AndreyPok Посмотреть сообщение
непонятно почему никто не знает.
Потому что никто не понял, чего вы хотите.
0
1 / 1 / 0
Регистрация: 05.12.2020
Сообщений: 68
26.12.2022, 14:59  [ТС]
Цитата Сообщение от Arcor Посмотреть сообщение
ну уже ж давали дельную реализацию) чтобы избавиться от form2, form3, form100000000000000...
ну да, ну да)) форма не такая, а специальная чтоб картинки знала, доступа не будет..

Цитата Сообщение от Massaraksh7 Посмотреть сообщение
Потому что никто не понял, чего вы хотите.
я два листа расписывал что я хочу и как, даже проект прикрепил с текстом внутри, и какой ответ получил?
А что мешает создать массив форм?
да ни че не мешает, прост он не нужен.

Ладно, всем спасибо за время
0
 Аватар для Arcor
5709 / 2300 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
26.12.2022, 15:47
еще идейка
https://youtu.be/q7bFlaReyGU

Вложения
Тип файла: 7z ForAndreyPok.7z (5.08 Мб, 2 просмотров)
0
 Аватар для Arcor
5709 / 2300 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
26.12.2022, 15:53
и как оформить чтобы через ютубоплеер пошло? ошибку дает.. ссылка функционирует в общем
0
Модератор
4150 / 2360 / 813
Регистрация: 15.11.2015
Сообщений: 9,489
26.12.2022, 16:22
Цитата Сообщение от AndreyPok Посмотреть сообщение
непонятно почему никто не знает.
Почему не знает? В этом посте я предлагал примерно то же самое:
Зачем передавать форму? Передавай сам Image, это универсальнее.
Delphi
1
2
3
4
5
6
7
8
9
10
procedure ImageLoad(Image: TImage);
begin
  Image.Picture.LoadFromFile('aaa');
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  if Edit1.Text = '1' then ImageLoad(Form2.Image1);
  if Edit1.Text = '2' then ImageLoad(Form3.Image1);
end;

Цитата Сообщение от AndreyPok Посмотреть сообщение
прост он не нужен.
Не нужен, так не нужен.
1
1 / 1 / 0
Регистрация: 05.12.2020
Сообщений: 68
26.12.2022, 17:45  [ТС]
Цитата Сообщение от AzAtom Посмотреть сообщение
Почему не знает? В этом посте я предлагал примерно то же самое:
А как я это пропустил?.. работает так как мне надо было..
Ну сорян)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.12.2022, 17:45
Помогаю со студенческими работами здесь

Присвоить объект переменной
Погуглив решил всё таки спросить. Как сделать в D7 что типа такого как в Python. a= appuifw.app.body и дальше уже пользоваться,...

Присвоить значение переменной
Добрый вечер, столкнулся с такой проблемой не могу присвоить переменную (max) (Button2) Нужно присвоить, что бы значение в Stringgrid1...

Присвоить значение переменной
Здравствуйте уважаемые. Не понимаю, как присвоить 0 ячейку массива, переменной. min_1:=massive;, такой вариант не работает.

Можно ли присвоить переменной панель
Проект : гороскоп.Чтоб не работать с множеством форм, как сделать, чтоб на одной форме было множество панелей ( невидимых) и при...

Переменной присвоить edit1.text
StrTempl = 'равы'; как сделать чтобы вместо 'равы' было edit1.text, т.е я ввожу B edit1 текст и переменной StrTempl присваивается...


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

Или воспользуйтесь поиском по форуму:
35
Ответ Создать тему
Новые блоги и статьи
Использование TThread в Lazarus для математических вычислений.
Massaraksh7 25.05.2026
Производя рефакторинг своих программ на предмет ускорения их работы, обратил внимание на такой аспект, как сокращение времени матвычислений. Дело в том, что приходится работать с большими матрицами. . .
Модель здравосохранения 18. Чем здоровее работник, тем быстрее выгорает
anaschu 24.05.2026
Имитационная модель корпоративного здравоохранения: что показывает математика Сегодня в модели рабочего коллектива на AnyLogic появились три новые механики — выгорание через накопленную усталость,. . .
Модель здравосохранения 17. Планы на выгорание
anaschu 23.05.2026
Вот конкретная схема реализации: В классе Работник добавить: накопленнаяУсталость — растёт каждый час работы, снижается в перерывы и болезни коэффициентПрезентеизма — снижает продуктивность. . .
Изменение цветов в палитре gif файла aka фавикона
russiannick 23.05.2026
Изменение цветов в палитре gif файла, юзаемого как фавиконка в составе html-файла, помещенная в base64, средствами нативного Java Script, навеянное сном в майский день. Для работы необходим браузер,. . .
Модель здравосохранения 16. Слишком хорошие и здоровые сотрудники уходят, недовольные зарплатой
anaschu 23.05.2026
Отладка увольнений и настройка производительности Сегодня во второй половине дня разобрались с механикой увольнений и настроили коэффициент сложности заданий. Вот что было сделано. . . .
Как я стал коммунистом))) Модель сохранения здоровья сотрудников, запись блога номер 15
anaschu 23.05.2026
Внезапно хорошее здоровье сотрудников не нужно капиталистам?))
Модель здравоСохранения 15. Как мы чинили AnyLogic модель рабочего коллектива: сочленение диаграммы состояний болезней и поломок в ресурспул
anaschu 23.05.2026
Как мы чинили AnyLogic модель рабочего коллектива Сегодня разобрались с пятью багами, из-за которых модель либо падала с ошибкой, либо давала совершенно бессмысленные результаты. Каждый баг был. . .
Диалоги с ИИ
zorxor 23.05.2026
Насколько я понимаю - Вы - Искусственный Интеллект. Это так? Да, всё верно. Я — искусственный интеллект. Я представляю собой большую языковую модель, созданную для помощи в самых разных задачах. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru