Jak przesłać text z funkcji poza klasą w której jest pole tekstowe do niego

Odpowiedz Nowy wątek
2015-01-09 19:51
0

Wpisuje w metodzie obiektu (button):

textBox1->AppendText("test");

i wypisuje mi tekst test.

Mam funkcje poza tą klasą z której chciałbym przekazać jakąś zmienną tekstową bezpośrednio do textBox1 i wyświetlić jakiś tekst, nie wiem jak to zrobić.

Wstawienie w podanej funkcji tego nie działa:

MySqlProject::MyForm form2;
        form2.textBox1->AppendText("123456");

Funkcja ta nie znajduje się w żadnej klasie itp...

edytowany 2x, ostatnio: alien1983, 2015-01-09 19:53

Pozostało 580 znaków

2015-01-09 20:29
0

Więc musisz do niej przekazać poprzez parametr referencje/wskaźnik do właściwego obiektu MyForm


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

2015-01-11 11:18
0

Nie wiem jak to zrobić poniższy kod nie działa:

 MySqlProject::MyForm ^ p_MySqlProject = gcnew MySqlProject::MyForm;
        p_MySqlProject->textBox1->AppendText("test");

edytor widzi obiekty ale kompilator wywala błędy:

c:\users\alien1983\documents\visual studio 2013\projects\mysql project\mysql project\sqlpo.h(86): error C2653: 'MySqlProject' : is not a class or namespace name
c:\users\alien1983\documents\visual studio 2013\projects\mysql project\mysql project\sqlpo.h(86): error C2065: 'MyForm' : undeclared identifier
c:\users\alien1983\documents\visual studio 2013\projects\mysql project\mysql project\sqlpo.h(86): error C2065: 'p_MySqlProject' : undeclared identifier
c:\users\alien1983\documents\visual studio 2013\projects\mysql project\mysql project\sqlpo.h(86): error C2061: syntax error : identifier 'MyForm'
c:\users\alien1983\documents\visual studio 2013\projects\mysql project\mysql project\sqlpo.h(87): error C2065: 'p_MySqlProject' : undeclared identifier
c:\users\alien1983\documents\visual studio 2013\projects\mysql project\mysql project\sqlpo.h(87): error C2227: left of '->textBox1' must point to class/struct/union/generic type

Gdzieś wyczytałem aby zrobić uchwyt do obiektu.

Funkcje visualne znajdują się w pliku: MyForm.h

Natomiast funkcja w której chcę zrobić uchwyt w pliku sqlpo.h

plik MyForm.h:

#pragma once
#include "sqlpo.h"

namespace MySqlProject {

    using namespace System;
    using namespace System::ComponentModel;
    using namespace System::Collections;
    using namespace System::Windows::Forms;
    using namespace System::Data;
    using namespace System::Drawing;

    /// <summary>
    /// Summary for MyForm
    /// </summary>
    public ref class MyForm : public System::Windows::Forms::Form
    {
    public:
        MyForm(void)
        {
            InitializeComponent();
            //
            //TODO: Add the constructor code here
            //
        }

    protected:
        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        ~MyForm()
        {
            if (components)
            {
                delete components;
            }
        }
    private: System::Windows::Forms::Button^  SQLbtn;
    public: System::Windows::Forms::TextBox^  textBox1;
    private: System::Windows::Forms::Button^  button2;
    protected:

    protected:

    private:
        /// <summary>
        /// Required designer variable.
        /// </summary>
        System::ComponentModel::Container ^components;

#pragma region Windows Form Designer generated code
        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        void InitializeComponent(void)
        {
            this->SQLbtn = (gcnew System::Windows::Forms::Button());
            this->textBox1 = (gcnew System::Windows::Forms::TextBox());
            this->button2 = (gcnew System::Windows::Forms::Button());
            this->SuspendLayout();
            // 
            // SQLbtn
            // 
            this->SQLbtn->Location = System::Drawing::Point(197, 12);
            this->SQLbtn->Name = L"SQLbtn";
            this->SQLbtn->Size = System::Drawing::Size(75, 23);
            this->SQLbtn->TabIndex = 0;
            this->SQLbtn->Text = L"button1";
            this->SQLbtn->UseVisualStyleBackColor = true;
            this->SQLbtn->Click += gcnew System::EventHandler(this, &MyForm::SQLbtn_Click);
            // 
            // textBox1
            // 
            this->textBox1->Location = System::Drawing::Point(-1, 119);
            this->textBox1->Multiline = true;
            this->textBox1->Name = L"textBox1";
            this->textBox1->Size = System::Drawing::Size(286, 147);
            this->textBox1->TabIndex = 1;
            // 
            // button2
            // 
            this->button2->Location = System::Drawing::Point(197, 90);
            this->button2->Name = L"button2";
            this->button2->Size = System::Drawing::Size(75, 23);
            this->button2->TabIndex = 2;
            this->button2->Text = L"button2";
            this->button2->UseVisualStyleBackColor = true;
            this->button2->Click += gcnew System::EventHandler(this, &MyForm::button2_Click);
            // 
            // MyForm
            // 
            this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
            this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
            this->ClientSize = System::Drawing::Size(284, 261);
            this->Controls->Add(this->button2);
            this->Controls->Add(this->textBox1);
            this->Controls->Add(this->SQLbtn);
            this->Name = L"MyForm";
            this->Text = L"MyForm";
            this->ResumeLayout(false);
            this->PerformLayout();

        }
#pragma endregion
    private: System::Void SQLbtn_Click(System::Object^  sender, System::EventArgs^  e) {
        textBox1->AppendText("Hello Word! \n");
        //setlocale(LC_ALL, "Polish_Poland.OCP");
        //string q1 = maino();
        //textBox1->AppendText(gcnew String(q1.c_str()));
        //char ^q1 = maino();
        string w = sqlQuery();
        //textBox1->AppendText(gcnew String(w));
        textBox1->AppendText(gcnew String(w.c_str()));

    }
    private: System::Void button2_Click(System::Object^  sender, System::EventArgs^  e) {
        ST element_0;
        ST element_1;
        ST element_2;
        element_0.nik = "alien0";
        element_0.haslo = "0";
        element_1.nik = "alien1";
        element_1.haslo = "1";
        element_2.nik = "alien2";
        element_2.haslo = "2";

        element_0.push_back(&element_1);
        element_1.push_back(&element_2);
        ST * node = &element_0;
        while (node = node->next) {
            textBox1->AppendText(gcnew String(node->haslo.c_str()));
        }
        while (node = node->prev) {
            textBox1->AppendText(gcnew String(node->haslo.c_str()));
        }
        //textBox1->AppendText(gcnew String(POS1[0].nik.c_str()));

    }
    };
}

Pozostało 580 znaków

2015-01-11 12:10
0
void FunkcjaSqlPo(MySqlProject::MyForm ^p_MySqlProject)
{
    p_MySqlProject->textBox1->AppendText("test");
}

Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

2015-01-11 13:31
1

Nie powinieneś tak bezpośrednio grzebać po kontrolkach innej formy. Stwórz publiczną metodę w formie 2 i ją wywołuj.

Pozostało 580 znaków

2015-01-11 18:49
0

Dzięki z podpowiedzi;)

 void FunkcjaSqlPo(MySqlProject::MyForm ^p_MySqlProject)
        {
            p_MySqlProject->textBox1->AppendText("test");
            p_MySqlProject->button2->Click;
        }

Dlaczego ta linia nie działa?

p_MySqlProject->button2->Click;

Pozostało 580 znaków

2015-01-11 18:50

Ponieważ Click jest metodą.


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

2015-01-12 04:46
0

Teraz mam inny problemik, mam 3 pliki : sqlpo.h i MyForm.h + Source.cpp

funkcje i metody w plikach : sqlpo.h i MyForm.h odwołują się wzajemnie do siebie i problem jest w tym że odwołują się jeszcze do niezdeklarowanych zasobów.

Ogólnie zdeklarowanie nagłówków powinno pomóc w tej sytuacji (chyba). ??

MyForm.h - funkcje wizualne (obsługa okienek, c++/cli)
sqlpo.h - funkcje natywne (c++, obsługa bazy)

Problem , że "tymczasowo" potrzebny mi jest na bieżąco podgląd danych w różnych miejscach funkcji w tym pliku"sqlpo.h", aby się zorientować co gdzie jest (np.wartości zmiennych);

Ale na razie nie mogę podpiąć metod to wykonujących z powodów podanych powyżej...

W Delphi wrzucałem w takiej sytuacji ShowMessage; W celu sprawdzenia zmiennych w danym momencie.

Chyba, że visual studio ma jakąś opcje podglądu zmiennych na bieżąco itp.

#pragma once
include "sqlpo.h"

includuje funkcje

void FunkcjaSqlPo(MySqlProject::MyForm  ^p_MySqlProject, System::Object^  sender, System::EventArgs^  e)
{
   p_MySqlProject->textBox1->AppendText("test");
    p_MySqlProject->SQLbtn_Click(sender, e);
/* W tym miejscu jeszcze visualne kontrolki nie są załadowane */
}

Ewentualnie może da się ładować do jakiegoś bufora wartości z natywnego c++ a potem odczytywać przez kontrolki c++/cli?

edytowany 5x, ostatnio: alien1983, 2015-01-12 04:58

Pozostało 580 znaków

2015-01-12 09:17
0

http://msdn.microsoft.com/pl-[...]mp;cs-lang=cpp#code-snippet-1


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0