• Regolamento Macrocategoria DEV
    Prima di aprire un topic nella Macrocategoria DEV, è bene leggerne il suo regolamento. Sei un'azienda o un hosting/provider? Qui sono anche contenute informazioni per collaborare con Sciax2 ed ottenere l'accredito nella nostra community!

Problema risolto Passare stringa da un Form ad un altro

gedamial

Utente Senior
Autore del topic
9 Giugno 2010
1.937
69
Miglior risposta
0
Salve.

Sento il bisogno di dover trasferire una stringa di una mia finestra ad un altra. Come suggerito dal prof. fcamuso, ho creato una classe c++ come "intermediario", "messaggero" tra le due Form. Quello che non riesco a fare è passare il valore di una textBox della Form2 ad una funzione della classe che ho chiamato GetT (Get Text).
La sintassi della classe dovrebbe essere:

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

Non riesco a muovermi in nessuna direzione. Ogni cosa un errore! Datemi qualche dritta :S

Grazie in anticipo!
 
ma le due form sono già classi.. comunque dato che la textbox ha come specificatore d'accesso public. Basta fare nel form1

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!
@HabboFanNumero1

Si ma a me serve fare:

Dal form1 si apre form2 (fatto)
Nel form2 ci sono un button e una textbox. Al premere del button, il valore della textbox viene salvato su una variabile dentro Form1.h e non Form2.h
 
dichiara una variabile public nel form1 (dato di tipo stringa) poi una volta cliccato il button fai
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!
tra l'altro potevi anche fare che la var stringa fosse presente nel form2 , e poi accedervi dal form1. @HabboFanNumero1
 
dichiara una variabile public nel form1 (dato di tipo stringa) poi una volta cliccato il button fai
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!
tra l'altro potevi anche fare che la var stringa fosse presente nel form2 , e poi accedervi dal form1. @HabboFanNumero1

Mi da degli errori

Evento click del button (form2):
Perfavore, Entra oppure Registrati per vedere i Link!

Dichiarazione variabile string pubblica (form1):
Perfavore, Entra oppure Registrati per vedere i Link!


Errori:
Perfavore, Entra oppure Registrati per vedere i Link!


N.B: Il Form3 sarebbe il nostro ipotetico Form2
 
@HabboFanNumero1 infatti nel file stdafx.h (che si occupa di tutti i rifermenti necessari) devi includere Form1.h. Dopo nel form2(tuo form3) fai Form1::s="valore" . S sarà un tipo string static.

Inoltre non ripetere public mille volte


public :

//metodi
// attributi pubblici

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!


sono tutti pubblici inutile ripetere Public: ... tra l'altro fa ribrezzo vedere gcnew :asg:
 
Ultima modifica:
@HabboFanNumero1 infatti nel file stdafx.h (che si occupa di tutti i rifermenti necessari) devi includere Form1.h. Dopo nel form2(tuo form3) fai Form1::s="valore" . S sarà un tipo string static.

Inoltre non ripetere public mille volte


public :

//metodi
// attributi pubblici

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!


sono tutti pubblici inutile ripetere Public: ...

Fatto, gli errori sono diminuiti:
Perfavore, Entra oppure Registrati per vedere i Link!

Form3
Perfavore, Entra oppure Registrati per vedere i Link!

stdafx.h
Perfavore, Entra oppure Registrati per vedere i Link!

Form1
Perfavore, Entra oppure Registrati per vedere i Link!


tra l'altro fa ribrezzo vedere gcnew :asg:

In C++ è new che diventa poi gcnew in C++.NET
gcnew infatti sta proprio per Garbage Collector New. Al contrario di new, gcnew non ha bisogno di un distruttore. Infatti fa tutto in automatico, eliminando oggetti che nel corso del programma non verranno più utilizzati. Tutti gli oggetti istanziati con gcnew faranno parte di classi gestite (managed)
Forse non sarà bello da vedere, ma è un grande vantaggio soprattutto per chi non sa gestire la memoria (ehm ehm :emoji_relieved:)
 
@HabboFanNumero1 mi riferivo al fatto che negli altri linguaggi che usano il net , basta new ma dato che nel c++.net hanno fatto un misto tra standard e net ne è uscito un mezzo pasticcio. Dato che secondo lo standard c++ 11 i namespace che stai utilizzando non esistono,inoltre "questo" c++ è legato a windows.

Comunque dagli screen non noto errori :| verifica che l'header sia scritto correttamente e metti la PhraseToHighlight dopo il costruttore
 
Metti un #include "NomeForm.h" sotto #pragma once e risolverai tutto.

Dove? Io ho:

Form1.h
Form3.h (che deve inviare la stringa al metodo nella classe)
transfString.h (prototipi delle funzioni)
transfString.cpp (funzioni: la prima riceve la stringa da Form3.h e la mette in una variabile, la seconda returna la variabile in questione al Form1.h che chiama suddetta funzione)
 
Devi inserire l'include nel file in cui dovrai accedere ad un oggetto contenuto in un altro file quindi se dal Form1 devi accedere ad un oggetto contenuto nel Form2 l'include dovrai inserirlo nel Form1.
 
Devi inserire l'include nel file in cui dovrai accedere ad un oggetto contenuto in un altro file quindi se dal Form1 devi accedere ad un oggetto contenuto nel Form2 l'include dovrai inserirlo nel Form1.

Ma questo lo avevo già fatto!

Ora che ci penso è troppo complicato... in pratica nella Form3 dovrei scrivere qualcosa e alla pressione del bottone, nel Form1 vengono evidenziate tutte quelle parole corrispondenti al testo immesso... vabbeh
 
Ma questo lo avevo già fatto!

Ora che ci penso è troppo complicato... in pratica nella Form3 dovrei scrivere qualcosa e alla pressione del bottone, nel Form1 vengono evidenziate tutte quelle parole corrispondenti al testo immesso... vabbeh

Hai mai provato a documentarti bene prima di fare qualcosa ? La gestione dei windows form in C++ è un po' particolare, anche a livello di sintassi, non puoi andare a tentativi. Studia.
 
Hai mai provato a documentarti bene prima di fare qualcosa ? La gestione dei windows form in C++ è un po' particolare, anche a livello di sintassi, non puoi andare a tentativi. Studia.

Senti, sto da una settimana 24h su 24h. Non dirmi studia e studia perché già sto incasinato di mio, non ci voleva quel verbo scritto in grassetto a farmi capire. Cosa che, tra l'altro, ho già fatto!

E allora cos'è che non capisco?
Non riesco a spiegarti il problema per bene qui da una tastiera, altrimenti avresti capito meglio.

Thank you.
@TBH risolto