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

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

24.01.2017, 22:14. Показов 3395. Ответов 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 / 1575 / 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 / 1575 / 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 / 1575 / 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 / 1575 / 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
Ответ Создать тему
Новые блоги и статьи
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru