Avatar billede maagefinke Nybegynder
29. december 2002 - 20:15 Der er 21 kommentarer og
2 løsninger

Overføre data fra form1 til form2

Ved hjælp af denne kode vil jeg gerne have overført data fra form1 til form2. Det lykkes i første omgang, men når jeg gentager processen, "hænger" de gamle data fra form1 stadig på form2.
Hvordan overfører jeg - og nulstiller?
form1
Private Sub Check1_Click()
If Check1.Value = 1 Then
Form2.Show 1
Form2.Text5.Visible = True
Form2.Text4 = Form1.Text4
Check1.Value = 0
End If
End Sub

form2
Private Sub Command1_Click()
Unload Me
Text4.Text = ""
End Sub
Avatar billede tubber Juniormester
29. december 2002 - 20:43 #1
når du kalder data fra form2 så kalder du dem sådan her:

Hvis du skal hente fra et TextFelt så: Form1.Text1.Text

/Tubber
Avatar billede maagefinke Nybegynder
29. december 2002 - 21:02 #2
Der må lidt mere kød på, tubber. Jeg skal hente fra text4.text i form1 til text4.text i form2. Hvor skal jeg skrive din kode? I form load eller hvor?
Avatar billede tubber Juniormester
29. december 2002 - 21:10 #3
Hvis du er i form2 så så skriver du :

Text4.Text = Form1.Text4.Text

eller

Form2.Text4.Text = Form1.Text4.Text

Den sidste virker uanset hvor i dit program du er, om du så er i form3.....
Avatar billede maagefinke Nybegynder
29. december 2002 - 21:19 #4
Samme negative resultat. Første gang jeg overfører, er det måske tallet 23, der skal overføres, og det går fint. Når jeg vender tilbage til form1 og arbejder videre, er det måske tallet 37, der skal overføres. Men så "hænger" tallet 23 fra 1. overførsel stadig i text4.text i form2. Der må altså en eller anden clear funktion til, når jeg forlader form2?
Avatar billede tubber Juniormester
29. december 2002 - 21:31 #5
Text1.Clear

Eller

Text1.Text = ""
Avatar billede maagefinke Nybegynder
29. december 2002 - 21:44 #6
Det hele virker - som i min oprindelige kode - men jeg skal gå fra form1 til form2 gange for at få overført de nye data.
Jeg fremkalder ved en handling i form1 en tekst i text4.text. Denne tekst skal jeg arbejde videre med på form2. Fra før: tallet 23 overføres fint til form2. Når jeg vender tilbage til form1 og får fremkaldt tallet 37 i text4.text og skal overføre dette til form2, står der stadig 23 (den tidligere overførsel). Går jeg så tilbage til form1 endnu engang overføres tallet 37 når jeg næste gang går til form2. Men det er ikke meningen. Tallet skal overføres for hver gang. Er det til at forstå hvad jeg mener? 
Text4.Text = Form1.Text4.Text

eller

Form2.Text4.Text = Form1.Text4.Text

har jeg skrevet i formload er det i orden?
Avatar billede tubber Juniormester
29. december 2002 - 21:45 #7
Kan du ikke paste den handling du laver som skal overføre de data ?
Avatar billede tubber Juniormester
29. december 2002 - 21:48 #8
Du kan evt. tilføje et modul (.bas) til dit projekt og lave en variabel i den som er global, den dimmes sådan her:

Global varText4 AS Integer

Så sætter du din varText4 når du laver din handling....

varText4 = Form1.Text4.Text

og så kalder du den i din formload på den anden....

Form2.Text4.Text = varText4
Avatar billede maagefinke Nybegynder
29. december 2002 - 22:08 #9
Næh, for problemet er, så vidt jeg kan se, at ved skift til form2 bliver text4.text i form 1 ikke overført til text4.text i form2.  Tallet i text4.text i form2 (det overførte), skal nemlig udløse en ny handling, text5 change og den indtræder ikke. Der mangler altså en kobling eller et klik.
Avatar billede tubber Juniormester
29. december 2002 - 22:11 #10
aaaah nu ved jeg hvad der er galt :O)

Det er fordi du ikke loader din form2 når du bruger den, men sætter den bare vissible.....

Prøv at lave det med:
Private Sub Form2_GotFocus()
eller
Private Sub Form1_LostFocus()
Avatar billede tubber Juniormester
29. december 2002 - 22:12 #11
ellers skal du hver gang du går i form1 lave en Unload Form2....
Så loades den igen når du går ind i den.....
Avatar billede tubber Juniormester
29. december 2002 - 22:20 #12
du kan også prøve at kalde form 2 med Form2.Load......
ved ikke om du skal ha en Form2.Vissible = True først eller bagefter
Avatar billede tubber Juniormester
29. december 2002 - 22:23 #13
der er også den mulighed du sætter den med:

Private Sub Text4_LostFocus()
Form2.Text4.Text = Form1.Text4.Text
End Sub
Avatar billede maagefinke Nybegynder
29. december 2002 - 22:36 #14
Det hjælper desværre ikke. I øvrigt troede jeg at "1" i (Form2.Show 1)bevirkede at form2 blev aktiveret.
Avatar billede tubber Juniormester
29. december 2002 - 22:49 #15
Jo den bliver vist, men ikke loadet, hvis den skal ligge i form load, så skal form2 unloades hver gang du forlader den og loades når du går ind i den.......
Avatar billede sjh Nybegynder
29. december 2002 - 22:51 #16
'Prøv at gøre det omvendt

'Form1
Private Sub Check1_Click()
  If Check1.Value = 1 Then
    Form2.Text5.Visible = True
    Form2.Text4 = Form1.Text4
    Check1.Value = 0
    Form2.Show 1
  End If
End Sub

'Form2
Private Sub Command1_Click()
  Text4.Text = ""
  Unload Me
End Sub
Avatar billede maagefinke Nybegynder
29. december 2002 - 23:11 #17
>sjh Fint. Nu hænger tallet ikke længere. Men så det sidste problem:
når jeg så kommer over på form2 med tallet 8, jf. nedenfor, skal der gerne ske dette:
Private Sub Text5_Change()
If Text4.Text = "8" Then
Text5.Text = "§ 1."
Else
Text5.Text = "Ingen forbindelse"
End If
End Sub
men der sker ingenting. Form2 har altså ikke opdaget, at der står "8" i form2.text4.text? eller er min kode forkert.
Avatar billede maagefinke Nybegynder
29. december 2002 - 23:17 #18
Eller er det mon egentlig et nyt spørgsmål?
Avatar billede tubber Juniormester
29. december 2002 - 23:23 #19
Du sætter 8 i "" så bliver det en streng, prøv med Text4.Text = 8
Avatar billede maagefinke Nybegynder
29. december 2002 - 23:29 #20
>tubber Der skal stå 8 uden "". Det var bare for at tydeliggøre.
Men det er måske forkert at anvende Private Sub Text5_Change()?
Er det derfor der intet sker?
Avatar billede sjh Nybegynder
29. december 2002 - 23:49 #21
(Text5_Change = Text4_Change) da det er (Form2.Text4 = Form1.Text4) du insætter i :)

Private Sub Text4_Change()
  If CStr(Text4.Text) = "8" Then
    Text5.Text = "§ 1."
      Else
    Text5.Text = "Ingen forbindelse"
  End If
End Sub
Avatar billede maagefinke Nybegynder
30. december 2002 - 10:13 #22
>sjh Mange tak!
>tubber Mange tak! Det var vist sjh, der kom med løsningen, så jeg håber du kan leve med dette.
Avatar billede tubber Juniormester
30. december 2002 - 10:59 #23
Takker :O)
Og jo sagtens :O) Jeg fik vist mere ud af det end sjh ehhehe både points og lidt viden hehehhe
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester