Gambas-it

Gambas3 => Programmazione => Topic aperto da: Gratisweb - 10 Maggio 2023, 16:57:20

Titolo: Contenuto picture da un form ad un' altro
Inserito da: Gratisweb - 10 Maggio 2023, 16:57:20
Salvbe, ho 2 form chiamati
Form1
Form2

Sia nel form1 che nel form 2 ho inserito una picturebox

Nella picturebox.picture ho messo una foto, quando passo al form2 come faccio che il contenuto della picturebox1 del form 2 passa alla picturebox1.picture del form1 ?
Titolo: Re:Contenuto picture da un form ad un altro
Inserito da: vuott - 10 Maggio 2023, 23:52:35
Si potrebbe fare come segue.

Nel Form principale inserire il seguente codice:
Codice: [Seleziona]
Public Sub Form_Open()

  Dim PictureBox1 As PictureBox

  With Me
    .Center
    .Arrangement = Arrange.Fill
  End With

  With PictureBox1 = New PictureBox(Me)
    .Picture = Picture.Load("/percorso/del/file/immagine")
  End With
 
  With Form1
    .PictureBox1.Picture = PictureBox1.Picture
    .Show
  End With

End

e in quello secondario (Form1) questo codice:
Codice: [Seleziona]
Public PictureBox1 As PictureBox

Public Sub _new()
 
  PictureBox1 = New PictureBox(Form1)
 
End


Public Sub Form_Open()

  PictureBox1.Move(Form1.PictureBox1.ClientX, Form1.PictureBox1.ClientY, Form1.PictureBox1.Picture.W, Form1.PictureBox1.Picture.H)
 
End
Titolo: Re:Contenuto picture da un form ad un' altro
Inserito da: Gianluigi - 11 Maggio 2023, 12:05:06
Ci possono essere anche alti modi:
1) Imposti la proprietà di picturebox1 di form1 a Public = True
2) Dopo aver importato la "foto" nella PicturBox1 di Form2 fai click su un bottonr con il cadice:
Codice: [Seleziona]
form1.PictureBox1.Picture = PictureBox1.Picture

Se non si vuole rendere pubblico il PictureBox del form1 si puo creare, sempre sul form1, un metodo pubblico a cui passare la picture con:
Codice: [Seleziona]
Public Sub myPictureRun(hPicture As Picture)
 
  PictureBox1.Picture = hPicture
 
End

Titolo: Re:Contenuto picture da un form ad un altro
Inserito da: vuott - 11 Maggio 2023, 15:45:51
... un metodo pubblico a cui passare la picture con:
Sì, decisamente migliore.
Avrei dunque modificato i miei codici come segue.

Per il Form principale (FMain):
Codice: [Seleziona]
Public Sub Form_Open()

  Dim PictureBox1 As PictureBox

  With Me
    .Center
    .Arrangement = Arrange.Fill
  End With

  With PictureBox1 = New PictureBox(Me)
    .Picture = Picture.Load("/percorso/del/file/immagine")
  End With
 
  With Form1
    .Show
    .PassaPic(PictureBox1.Picture)
  End With

End

Mentre per il Form secondario (Form1):
Codice: [Seleziona]
Public Sub PassaPic(pic As Picture)

  Dim PictureBox1 As PictureBox

  With PictureBox1 = New PictureBox(Form1)
    .Picture = pic
    .Move(0, 0, pic.W, pic.H)
  End With
 
End