Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
JuriS
0 / 0 / 0
Регистрация: 02.02.2010
Сообщений: 11
#1

Получение из другой формы ТStringList - C++

08.06.2011, 13:22. Просмотров 815. Ответов 6
Метки нет (Все метки)

Не знаю куда это больше подходит, но появилась необходимость из Form2 получить доступ к
ТStringList *myList = new ТStringList(); находящемуся в Form1.
Есть ли какая то простая возможность это сделать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.06.2011, 13:22
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Получение из другой формы ТStringList (C++):

Получение вывода другой программы - C++
Требуется запустить консольное приложение и получить текст, который оно вывело в stdout и stderr. Скажите, пожалуйста, как это можно...

Доступ к массиву из другой формы - C++
Есть Form1 и Form2. На Form2 объявлен и заполнен массив float m. Как обратиться к элементам данного массива с Form1. На текущий...

Получение и изменение свойств элемента формы из другой формы - C#
Существует MDI-форма Form1. Форма имеет элемент MainMenu1. Один из пунктов MainMenu1 вызывает подчиненную (MDI-child) форму Form2. При...

.NET 3.x Получение свойств компонентов другой формы - C#
У меня есть две формы, значение textbox1.Text (Form1) должно передавать в WebBrowser.Navigated (Form2) как это реализовать?

Получение записи другой таблицы из формы данной - MS Access
В общем есть таблица и форма "Фильмы". В форме выводится информация о годе, бюджете, режиссере и прочем. Надо, например, создать кнопку,...

Получение значения текстового поля из другой формы - C#
Создал две формы в одном пространстве имен. В главной форме по нажатию кнопки надо получить значение текстовых полей из другой. ...

6
np_msn
0 / 0 / 0
Регистрация: 07.12.2010
Сообщений: 46
08.06.2011, 13:39 #2
Привет.
Если Form1 в файле unit1.cpp
а Form2 в файле unit2.cpp, то
в unit2.cpp прописываешь #include 'unit1.h',
либо тоже самое можно сделать через меню File->Include Unit Hdr...
Все компоненты, находящиеся на Form1 становятся доступными в Form2.
Удачи.
0
JuriS
0 / 0 / 0
Регистрация: 02.02.2010
Сообщений: 11
08.06.2011, 14:40  [ТС] #3
Про include я знаю, но таким образом кажется можно на элементы другой формы доступ получить, а не на TStringList?
Если на TStringList можно, то как это сделать?
0
np_msn
0 / 0 / 0
Регистрация: 07.12.2010
Сообщений: 46
08.06.2011, 17:35 #4
Привет.
А в каком месте инициализируется myList?
Может стоит сделать его глобальным?
Например:
в unit1.h:
C++
1
ТStringList *myList;
в unit1.cpp:
C++
1
2
3
4
5
6
7
8
void __fastcall TForm1::FormCreate(TObject *Sender)
{
    myList = new TStringList;
}
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
    delete myList;
}
в unit2.cpp:
C++
1
2
3
4
5
#include 'Unit1.h'
void __fastcall TForm2::FormCreate(TObject *Sender)
{
    myList->Add('Ерунда');
}
0
JuriS
0 / 0 / 0
Регистрация: 02.02.2010
Сообщений: 11
08.06.2011, 20:15  [ТС] #5
Здрасти.
Всё сделал как вы сказали, но глобально TStringList не продекларировался, из формы Form2 myLst не находится......
0
np_msn
0 / 0 / 0
Регистрация: 07.12.2010
Сообщений: 46
09.06.2011, 16:46 #6
Привет.
Вот текст файлов работающей программы:

unit1.h:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#ifndef Unit1H
#define Unit1H
 
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
 
class TForm1 : public TForm
{
__published:    // IDE-managed Components
    void __fastcall FormCreate(TObject *Sender);
    void __fastcall FormClose(TObject *Sender, TCloseAction &Action);
private:    // User declarations
public:     // User declarations
    __fastcall TForm1(TComponent* Owner);
};
 
extern PACKAGE TForm1 *Form1;
extern TStringList* myList;
 
#endif
unit1.cpp:
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
#include <vcl.h>
#pragma hdrstop
 
#include 'Unit1.h'
 
#pragma package(smart_init)
#pragma resource '*.dfm'
 
TForm1 *Form1;
TStringList* myList;
 
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
 
void __fastcall TForm1::FormCreate(TObject *Sender)
{
    myList = new TStringList;
}
 
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
    delete myList;
}
unit2.h:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#ifndef Unit2H
#define Unit2H
 
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
 
class TForm2 : public TForm
{
__published:    // IDE-managed Components
    void __fastcall FormCreate(TObject *Sender);
private:    // User declarations
public:     // User declarations
    __fastcall TForm2(TComponent* Owner);
};
 
extern PACKAGE TForm2 *Form2;
 
#endif
unit2.cpp
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
#include <vcl.h>
 
#pragma hdrstop
 
#include 'Unit2.h'
#include 'Unit1.h'
 
#pragma package(smart_init)
#pragma resource '*.dfm'
 
TForm2 *Form2;
 
__fastcall TForm2::TForm2(TComponent* Owner)
    : TForm(Owner)
{
}
 
void __fastcall TForm2::FormCreate(TObject *Sender)
{
    myList->Add('String1');
    myList->Add('String2');
    String s = myList->Strings[0] + '' + myList->Strings[1];
    MessageBox(0, s.c_str(), 'It’s myList', MB_OK);
}
Удачи.
0
JuriS
0 / 0 / 0
Регистрация: 02.02.2010
Сообщений: 11
10.06.2011, 18:52  [ТС] #7
Спасибо, теперь заработало!
0
10.06.2011, 18:52
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.06.2011, 18:52
Привет! Вот еще темы с ответами:

Добавление новой строки в richTextBox и получение расчетов из другой формы - C#
Здравствуйте. У меня появилась пара вопросов, на которые я прошу ВАС ответить. - У меня есть форма, на которой расположена пара-тройка...

Как перенести значения из одного компонента одной формы в другой компонент другой формы? - PHP
В общем ситуация смешная для профи,делаю программу для редактирования и печати вкладышей для дипломов на PHP,сделал две формы,нужнго...

Добавление записи в DBGrid и получение записи в DBGrid Другой формы - C++ Builder БД
К проекту подключена Access .mdb БД. Имеется 2 формы. На обоих формах есть DBGrid. Как сделать, что бы при добавлении записи в таблицу из...

Как удалить одну из процедур формы из другой процедуры той же формы - MS Access
Еще раз доброго здравия... Слышал, что подобное можно делать... То есть вообще можно так сказать реформировать код самим же кодом... Но мне...


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

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

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