Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 15.04.2016
Сообщений: 21

Как обращаться к компонентам формы?

24.01.2017, 22:14. Показов 3288. Ответов 19
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
я начал изучать С++ (до этого python3.x)
в учебнике только консольные приложения.
я книжку дочитал, инфу хорошо усвоил, теперь пробую писать в форме но не могу понять как к этим самым компонентам обратиться .
{
еще не очень понял с переводами inttostr, strtoint.....и тд)
}
RAD studio С++ XE7
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.01.2017, 22:14
Ответы с готовыми решениями:

Как обращаться к компонентам Shape в цикле?
Помогите пожалуйста решить следующую задачу: мне нужно чтоб на форме отображались 100 кружочков (или квадратиков) в форме сетки (10 на...

Как обратиться к компонентам фрейма из формы-владельца не по имени, а как к членам массива?
Всем здравствуйте. Есть форма и принадлежащий ей фрейм. #include <vcl.h> #pragma hdrstop #include "Unit1.h" #include...

Как обращаться к компонентам формы в классе, не прописывая везде имя формы
Добрый вечер. Имеем одну форму (Class Form2), ну или две как у меня, было принято решение раскидать часть ее кода в четыре новых модуля. ...

19
1408 / 572 / 127
Регистрация: 31.10.2011
Сообщений: 1,960
24.01.2017, 22:53
Цитата Сообщение от LemonTheBich Посмотреть сообщение
я книжку дочитал, инфу хорошо усвоил
видно не очень хорошо

IntToStr, щелкнул два раза по кнопке, открылся редактор кода, пишешь
C++
1
2
int x=5;
ShowMessage(IntToStr(x));
Как обращаться к компонентам формы?
по имени, например, лежит на форме компонент TEdit с именем Edit1; меняем ему ширину на 200px
C++
1
Edit1->Width=200;
Добавлено через 4 минуты
если функция не член класса формы, тогда
C++
1
Form1->Edit1->Width=200;
остальное ищи в книгах, это элементарные основы
1
0 / 0 / 0
Регистрация: 15.04.2016
Сообщений: 21
25.01.2017, 12:54  [ТС]
Спасибо, я уже разобрался(почти).
что с этим не так?
C++
1
2
3
4
5
6
7
8
9
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
income mon;
 mon.money = 1;
 mon.moneyplus = Edit1->Text.ToDouble();
 mon.moneyplus = StrToFloat(Edit1->Text);
 mon.moneyplus+=1370;
 Edit1->Text=StrToFloat(mon.money)+mon.moneyplus;
}
0
 Аватар для gumi250
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
25.01.2017, 13:07
чего это?
C++
1
Edit1->Text=StrToFloat(mon.money)+mon.moneyplus;
Добавлено через 1 минуту
Может так
Edit1->Text=FloatToStr(mon.money+mon.moneyplus );
1
0 / 0 / 0
Регистрация: 15.04.2016
Сообщений: 21
25.01.2017, 17:37  [ТС]
повесил на таймер это...
C++
1
2
3
4
5
6
7
8
9
10
ObnAES obas;
   obas.kwt = 5000;
 obas.kwt *= 1.3;
  obas.moneyplus = Edit1->Text.ToInt();
 obas.moneyplus = StrToInt(Edit1->Text);
obas.moneyplus+=obas.kwt  ;
Edit2->Text=StrToInt(obas.kwt);
  obas.money = 100;
 Edit1->Text=FloatToStr(obas.money)+obas.moneyplus;
}
все компилируеться превосходно, но потом (с интервалом 1 секунда как сказано в таймере)
вылезают обычные виндовские сообщения типа:
is not a valid integer value-не является допустимым целым значением.
а почему ХЗ
(в обычной ВСЛ форм апликайшн работает хорошо ,а в мульти девайс апликейшн вот такая херня)пробовал искать в гугле ничего там нету...
переключался с Андроида на виндовс... ничего не дало.
заранее спасибо!
0
1408 / 572 / 127
Регистрация: 31.10.2011
Сообщений: 1,960
25.01.2017, 21:13
для начала, видно пост gumi250 ты не смотрел, так как опять
Цитата Сообщение от LemonTheBich Посмотреть сообщение
Edit1->Text=FloatToStr(obas.money)+obas.moneyp lus;
Добавлено через 1 минуту
и на какой строке ошибка и что такое ObnAES и его свойства
0
 Аватар для gumi250
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
25.01.2017, 23:47
В в поле Edit не целое число. Вот и ругается.
0
1408 / 572 / 127
Регистрация: 31.10.2011
Сообщений: 1,960
26.01.2017, 00:03
C++
1
2
3
4
5
6
ObnAES obas;
obas.kwt = 5000*1.3;
obas.moneyplus = StrToFloat(Edit1->Text)+obas.kwt;
obas.money = 100;
Edit1->Text=FloatToStr(obas.money+obas.moneyplus);
Edit2->Text=String(obas.kwt);
Добавлено через 44 секунды
так чуть короче

Добавлено через 6 минут
Цитата Сообщение от gumi250 Посмотреть сообщение
В в поле Edit не целое число. Вот и ругается.
или float число, введено через точку, вместо запятой,
или вообще ничего нет + таймер
0
 Аватар для Fulcrum_013
2083 / 1574 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
26.01.2017, 00:04
Лучший ответ Сообщение было отмечено LemonTheBich как решение

Решение

Цитата Сообщение от LemonTheBich Посмотреть сообщение
is not a valid integer value
Это потому что введенное в эдит значение не является валидным интом и при попытке конверсии StrToInt, который живет у Edit1->Text.ToInt() под капотом, выбрасывает соответствующее исключение. Либо ловить исключения из всего блока конверсии и делать соответствующий вывод в общем, либо пользовать TryStrToInt TryStrToFloat которые не экскепшины выбрасывают а возвращают статус успешно ли произошла конверсия и делать опять же соответствующие выводы. Первое удобное если проверить на отсутствие ошибок нужно сразу набор значений и сделать выводы при отсутствии/наличии ошибок сразу во всем наборе. Второе удобнее если нужно делать отдельные выводы по каждому элементу.
1
1408 / 572 / 127
Регистрация: 31.10.2011
Сообщений: 1,960
26.01.2017, 00:24
Fulcrum_013, тут лучше проверять TryStrToInt/TryStrToFloat,
так как код работает в таймере и в момент ввода может произойти ошибка

C++
1
2
3
4
5
6
7
8
9
10
float x = 0;
if (TryStrToFloat(Edit1->Text, x))
{ 
 ObnAES obas;
 obas.kwt = 5000*1.3;
 obas.moneyplus = x + obas.kwt;
 obas.money = 100;
 Edit1->Text=FloatToStr(obas.money+obas.moneyplus);
 Edit2->Text=String(obas.kwt);
}
0
 Аватар для Fulcrum_013
2083 / 1574 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
26.01.2017, 00:33
Цитата Сообщение от _Dimon_ Посмотреть сообщение
так как код работает в таймере
Да кстати он действительно на таймере нужен или его таки лучше перевесить на OnChange едитов?
0
1408 / 572 / 127
Регистрация: 31.10.2011
Сообщений: 1,960
26.01.2017, 01:17
Fulcrum_013, а кто ж его знает?
int или float?
Подождем пока ТС откликнется

Добавлено через 41 минуту
кстати, только что доперло, что читаем с Edit1 и пишем в Edit1
и эта штука
C++
1
Edit1->Text=FloatToStr(obas.money+obas.moneyplus);
будет меняться каждую секунду.

Надеюсь, это опечатка
0
0 / 0 / 0
Регистрация: 15.04.2016
Сообщений: 21
26.01.2017, 20:03  [ТС]
obas.xxxxx - это класс и у него только переменные (он публичный)
надо считать значение с едита сделать над ним пределенные действия и обратно вывести полученый результат
0
 Аватар для Fulcrum_013
2083 / 1574 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
26.01.2017, 20:24
Цитата Сообщение от LemonTheBich Посмотреть сообщение
надо считать значение с едита сделать над ним пределенные действия и обратно вывести полученый результат
Начнем по порядку. По какому событию? Я так понимаю пересчитывать нужно по вводу данных пользователем в оный эдит?
0
0 / 0 / 0
Регистрация: 15.04.2016
Сообщений: 21
27.01.2017, 00:30  [ТС]
вот код, я не пойму что с ним делать....
и кароче тут.... торможу я..
всем заранее спасибо)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
//---------------------------------------------------------------------------
 
#include <fmx.h>
#include <System.UITypes.hpp>
#pragma hdrstop
#include "TabbedTemplate.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.fmx"
TTabbedForm *TabbedForm;
class obninAES{
public:
int money, moneyplus, kwt;
 
};
//---------------------------------------------------------------------------
__fastcall TTabbedForm::TTabbedForm(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TTabbedForm::FormCreate(TObject *Sender)
{
    // This defines the default active tab at runtime
    TabControl1->ActiveTab = TabItem1;
}
//---------------------------------------------------------------------------
 
 
void __fastcall TTabbedForm::Timer1Timer(TObject *Sender)
{
 ObnAES obas;
obas.kwt = 5000*1.3;
obas.moneyplus = StrToFloat(Edit1->Text)+obas.kwt;
obas.money = 100;
Edit1->Text=FloatToStr(obas.money+obas.moneyplus);
Edit2->Text=String(obas.kwt);
}
//---------------------------------------------------------------------------
0
1408 / 572 / 127
Регистрация: 31.10.2011
Сообщений: 1,960
27.01.2017, 00:43
Цитата Сообщение от LemonTheBich Посмотреть сообщение
надо считать значение с едита сделать над ним пределенные действия и обратно вывести полученый результат
с таймером или OnChange здесь не получится, так как невозможно будет ввести изначальное значение

Может лучше сделать так: вводишь значение, нажимаешь enter или клацаешь button и значение пересчитывается.
Или выводить в другой Edit
0
0 / 0 / 0
Регистрация: 15.04.2016
Сообщений: 21
27.01.2017, 08:09  [ТС]
та нет в том и штука что оно должно с интервалом само все выводиться
например за 1секунду значение будет увеличиваться на 5000(наприме)
ЧТо дословно означает Edit1->text ?

Добавлено через 54 секунды
можна значение с литбокса считывать?

Добавлено через 10 минут
исходное значение: исзнач = 100;
заносим его в Едит1 (+пер);
Берем значение из Едит1 и кидаем его в переменную пер+;
но в процесе передачи значения ИЗ эдита в переменную происходит хурма!!

Добавлено через 7 часов 0 минут
я сделал как надо. но теперь значение поначалу идет в верх правильно а потом типа так:
5000
10000
15000
20000
23445232344
16931442
0
и останавливается какие либо действия над числами
!!!после каждой компиляции ведет себя по разному!!!
иногда сразу такое число дает иногда до 20000 доходит и аж потом вообщем суть надеюсь поняли
я уже думал что из за типа данных. влепил туда лонгинт. но оно до одного места
просто не дает ошибку про переполнение(это с обычным интом постоянно)
может компилятор дурачок?
что то не так делает
я сегодня 10.1 Берлин поставлю посмотрю что и как
может так все будет нормас)
всем спасибо за заботу)
0
 Аватар для Fulcrum_013
2083 / 1574 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
27.01.2017, 16:42
Цитата Сообщение от _Dimon_ Посмотреть сообщение
Может лучше сделать так: вводишь значение, нажимаешь enter или клацаешь button и значение пересчитывается.
Или выводить в другой Edit
Или повесить на OnExit как обычно все такие интерактивные пересчеты делаются если эдитов несколько. Хотя можно и на OnChange, только тогда перед записью результата нужно сам OnChange отключать а после записи обратно включать.

Добавлено через 2 минуты
Цитата Сообщение от LemonTheBich Посмотреть сообщение
может компилятор дурачок?
что то не так делает
я сегодня 10.1 Берлин поставлю посмотрю что и как
может так все будет нормас)
всем спасибо за заботу)
Компилятор тут не причем. Тут главное определится когда это надо пересчитывать. А реализовывается это одинаково что в С++ Builder 1.0 1996-го года что в С++ Builder XE 10.1 Berlin
0
0 / 0 / 0
Регистрация: 15.04.2016
Сообщений: 21
28.01.2017, 23:51  [ТС]
В Berlin этот код правильно сработал
0
0 / 0 / 0
Регистрация: 15.04.2016
Сообщений: 21
06.02.2017, 17:26  [ТС]
как встроить XML документ в приложение на с++
я так понимаю что нада сделать типа маленького браузера?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.02.2017, 17:26
Помогаю со студенческими работами здесь

Как в Android Studio обращаться к компонентам (кнопкам, полям, и т.д.)?
как например делать что бы при клике на кнопку(в андроид студио)всплывало сообщение или переменная одного поля присваивалась другому. ...

Как обращаться к компонентам ".ui" файла созданном в QT Designer
Имеется код .ui файла созданном в QT Designer: &lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt; &lt;ui version=&quot;4.0&quot;&gt; ...

Обращаться к форме и ее компонентам из другого класса
Здравствуйте. Как можно обращаться к форме и ее компонентам из другого класа или есть другой способ уменьшения кода в классе форме?

Как из одной формы обращаться к переменным другой формы
Мне надо с Form1 на Form2 &quot;перекинуть&quot; переменную, которая считается на Form1 и выводится нa Label на Form2. помогите с кодом.

Ошибка 2227, как получить доступ к компонентам другой формы?
В Form2.h прописан следующий код String^ text; Form1^ f=gcnew Form1(); text=f-&gt;textBox1-&gt;Text; Выводит...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru