Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Hero SV Dahte
0 / 0 / 1
Регистрация: 19.12.2014
Сообщений: 13
#1

Нужно написать функцию - C++ Builder

04.06.2017, 16:42. Просмотров 178. Ответов 3
Метки нет (Все метки)

Работаю в c++ builder 6
Есть много компонентов типа Мемо и Едитов которые нужно очистить. Но на разных кнопках нужно очищать разные компоненты.
Я хочу вместо написания на каждой кнопке поимённо компонентов объединить в группы и вызывать очистку через функцию.
Куда (между кнопками?) и как её записывать? и как её вызывать?
или сюда больше подойдёт другой (ваш) способ?
Желательно пример)
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.06.2017, 16:42
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Нужно написать функцию (C++ Builder):

Написать функцию TEST(A,k)
Написать функцию TEST(A,k), принимающую значение True, если се элементы k-й...

не могу написать функцию!
дана матрица А(n*n).Построить вектор,каждый элемент которого равен количеству...

Как написать функцию...
6. Выявление всех циклов в графе. Граф из десяти вершин. Граф задаёться...

Нужно написать программу С++
Зрители подходят к турникету на футбольном стадионе каждые 7+-7 секунд и...

Нужно написать драйвер
Доброго времени суток помогите написать драйвер для второй мыши ) То есть мне...

Нужно написать игруху!
Легенда гласит, что где-то в Ханое находится храм, в котором размещена...

3
Sasha
4918 / 2383 / 529
Регистрация: 05.06.2008
Сообщений: 7,465
Записей в блоге: 3
04.06.2017, 17:30 #2
Лучший ответ Сообщение было отмечено Hero SV Dahte как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void __fastcall TForm1::EditMemoClear()
{
    for (int i = 0; i < Form1->ComponentCount; i++)
 {
        if ((Form1->Components[i]->ClassNameIs("TEdit"))||(Form1->Components[i]->ClassNameIs("TMemo")))
         {
              ((TEdit*)Form1->Components[i])->Clear();
              ((TMemo*)Form1->Components[i])->Clear();
 
         }
 }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  EditMemoClear();
}
//----------------------
Добавлено через 1 минуту
В h-файле
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
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <System.Classes.hpp>
#include <Vcl.Controls.hpp>
#include <Vcl.StdCtrls.hpp>
#include <Vcl.Forms.hpp>
#include <Vcl.ExtCtrls.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:    // IDE-managed Components
    TButton *Button1;
    TMemo *Memo1;
    TEdit *Edit1;
    TEdit *Edit2;
    TLabeledEdit *LabeledEdit1;
    void __fastcall Button1Click(TObject *Sender);
private:    // User declarations
public:     // User declarations
    __fastcall TForm1(TComponent* Owner);
    void __fastcall EditMemoClear();//<-----------Обращаем внимание на объявление функции
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
1
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
25622 / 17175 / 6836
Регистрация: 22.10.2011
Сообщений: 30,369
Записей в блоге: 6
04.06.2017, 17:34 #3
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
#include <memory>
 
// ...
 
// пишешь вот такую функцию, которая будет очищать компоненты по списку:
void __fastcall ClearComponents(String s)
{
    std::auto_ptr<TStringList>lst(new TStringList);
    lst->Delimiter = '|';
    lst->DelimitedText = s;
    for (int i = 0; i < lst->Count; i++)
    {
        TCustomEdit *ed = static_cast<TCustomEdit*>
            (Form1->FindComponent(lst->Strings[i]));
        ed->Clear();
    }
}
 
// И вызываешь ан каждой кнопке со своим списком
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    ClearComponents("Edit1|Edit3|Memo2");
}
// ---------------------------------------------------------------------------
 
void __fastcall TForm1::Button2Click(TObject *Sender)
{
    ClearComponents("Edit2|Edit6|Memo3");
}
Достаточно просто?

Добавлено через 1 минуту
Sasha,
Цитата Сообщение от Hero SV Dahte Посмотреть сообщение
на разных кнопках нужно очищать разные компоненты
, у тебя очистятся все сразу.
2
lifeforce
202 / 162 / 73
Регистрация: 27.09.2010
Сообщений: 976
04.06.2017, 18:25 #4
можно и еще и Tag-ом . обозначить одну группу одним Тегом(к примеру 1) , и так со следующими группами (2..n)
и потом к примеру кнопка 2 очищает группу номер 1 из (Edit1, Edit4, Memo1, Memo9)

C++
1
2
3
4
5
6
7
8
9
10
void __fastcall TForm1::Button2Click(TObject *Sender)
{
  for(int i = 0;i < Form1->ComponentCount; i++)
 
  if(Form1->Components[i]->Tag == 1)
{
              ((TEdit*)Form1->Components[i])->Clear();
              ((TMemo*)Form1->Components[i])->Clear();
}
}


Добавлено через 10 минут
и можно ещё немного изменить. объявить глобально, на пример int t=1;
потом в самой программе после выполненных определенных действий присваивать номер группы для очистки.
и тогда одной кнопкой можно очищать разные группы компонентов!

C++
1
2
3
4
5
6
7
8
9
10
void __fastcall TForm1::Button2Click(TObject *Sender)
{
  for(int i = 0;i < Form1->ComponentCount; i++)
 
  if(Form1->Components[i]->Tag == t)
{
              ((TEdit*)Form1->Components[i])->Clear();
              ((TMemo*)Form1->Components[i])->Clear();
}
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.06.2017, 18:25
Привет! Вот еще темы с решениями:

C++ нужно написать программу
можно написать программу по этим данным и что бы она согдавала таблицу int CH;...

Нужно написать кликер
суть такая: запускаю прогу, нажимаю alt+l и прога начинает кликать на f12 со...

Написать и протестировать функцию strcpy
Нужно написать и протестировать функцию STRCPY(src,dest),которая копирует...

[Квест] Нужно написать распаковщика
Здравствуйте, нужно написать распаковщика который будет распаковывать пару...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru