Mistero grafico

di il
12 risposte

Mistero grafico

Buongiorno a tutte/i,

ho preso in mano un codice scritto da altri  in VB2014 per fare piccole modifiche ma mi succede una cosa stranissima.

Ho un form che non prevede linee grafiche verticali e in fase di design non ve ne sono ma in esecuzione compare una misteriosa linea che non riesco a trovare.
Nel codice ho ceercato draw, line  ecc… ma non esiste alcun riferimento. Cosa potrebbe essere?

Grazie

12 Risposte

  • Re: Mistero grafico

    Pensi che nel forum ci sono dei maghi o magari mostri il codice?

  • Re: Mistero grafico

    Scusa Oregon,hai ragione. Dato che la linea appare appena caricato il form posto l'evento load

       Private Sub frmcarterzista_Load(sender As Object, e As EventArgs) Handles Me.Load
          Me.Show()
          chkscarico.Enabled = True
          chkscarico.Checked = True
          chkscarico.Visible = False
          cmd_applica.Visible = False
          txtbarcode.Enabled = False
          dat = DateTime.Now
          data = dat.ToString("dd/MM/yyyy")
          data2 = dat.ToString("dd/MM/yyyy")
          mese = Nothing
          anno = Nothing
          chiedipeso = Nothing
          txtconto.Text = Nothing
          conto = Nothing
          cliente = Nothing
          txtqta.Text = "1"
          txtarticolo.Text = Nothing
          articolo = Nothing
          txtprezzo.Text = Nothing
          prezzo = Nothing
          prezzot = Nothing
          costo = Nothing
          costot = Nothing
          txtpeso.Text = Nothing
          txtpeso.Enabled = False
          lblcliente.Text = Nothing
          txtdescr.Text = Nothing
          txtbarcode.Text = Nothing
          txtnota.Text = Nothing
          generico = ""
          esci = ""
          qta = 1
          nota = ""
          ' DateTimePicker1.Value = Now
          DateTimePicker1.Focus()
          sqlstring = "select ar_descr from artico"
          txtdescr.AutoCompleteCustomSource.Clear()
          Me.Refresh()
          Try
              con.ConnectionString = constring
              con.Open()
              cmd.Connection = con
              cmd.CommandText = sqlstring
              Dim lrd As SqlDataReader = cmd.ExecuteReader()
              While lrd.Read()
                  txtdescr.AutoCompleteCustomSource.Add(lrd(0))
              End While
              Me.Refresh()
          Catch ex As Exception
              MessageBox.Show("Errore di connessione a SQL Server. " & ex.Message)
          Finally
              con.Close() 'Chiude la connessione.
          End Try
          'alimenta datagrid
          datagrid_refresh()
      End Sub
  • Re: Mistero grafico

    L'evento Load non ha molta importanza… la questione sta altrove.

    Dove colori di verde lo sfondo?

    È lo sfondo delform o c'è un altro oggetto?

    Riesci a postare uno zip del progetto da scaricare in modo che il problema si possa vedere?  

  • Re: Mistero grafico

    Lo sfondo è una proprietà del form.

    L'unica sub richiamata dal load è il refresh del datagrid che posto sotto ma anche qui non vedo codice strano.

    La linea compare sicuramente dentro il load e prima della sub datagrid_refresh (messo punto di arresto sulla prima riga dt.row.clear)

    Non capisco proprio da dove arrivi.

    Provo a chiedere se posso girare il progetto.

    Sub datagrid_refresh()
       dt.Rows.Clear()
       Try
           con.ConnectionString = constring
           con.Open()
           cmd.Connection = con
           cmd.CommandText = "SELECT mv_print, mv_marcatura, mv_conto, mv_codart, mv_descr, mv_prezzo, mv_qta, mv_costo, mv_datae, mv_datac, mv_datau, mv_anno, mv_mese, mv_nota, ID  FROM movimenti where mv_datau = '" & data & "'order by ID desc"
           cmd.CommandType = CommandType.Text
           Dim builder As SqlCommandBuilder = New SqlCommandBuilder(sda)
           sda.Fill(dt)
           DGV.DataSource = dt
           DGV.Columns(0).HeaderText = "Stampa"
           DGV.Columns(1).HeaderText = "Marcatura"
           DGV.Columns(2).HeaderText = "Conto"
           DGV.Columns(3).HeaderText = "Articolo"
           DGV.Columns(4).HeaderText = "Descrizione"
           DGV.Columns(5).HeaderText = "Prezzo"
           DGV.Columns(6).HeaderText = "Qta"
           DGV.Columns(7).HeaderText = "Costo"
           DGV.Columns(8).HeaderText = "Datae"
           DGV.Columns(9).HeaderText = "Datac"
           DGV.Columns(10).HeaderText = "Datau"
           DGV.Columns(11).HeaderText = "Anno"
           DGV.Columns(12).HeaderText = "Mese"
           DGV.Columns(13).HeaderText = "Note"
           DGV.Columns(14).HeaderText = "ID"
           For c = 0 To 14
               DGV.Columns(c).HeaderCell.Style.Alignment = DataGridViewContentAlignment.BottomCenter
           Next c
           DGV.Columns(0).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
           DGV.Columns(1).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft
           DGV.Columns(2).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft
           DGV.Columns(3).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft
           DGV.Columns(4).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft
           DGV.Columns(5).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
           DGV.Columns(6).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft
           DGV.Columns(7).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
           DGV.Columns(8).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft
           DGV.Columns(0).Width = 50
           DGV.Columns(1).Width = 70
           DGV.Columns(2).Width = 50
           DGV.Columns(3).Width = 50
           DGV.Columns(4).Width = 140
           DGV.Columns(5).Width = 70
           DGV.Columns(6).Width = 40
           DGV.Columns(7).Width = 70
           DGV.Columns(8).Width = 75
           DGV.Columns(9).Width = 75
           DGV.Columns(10).Width = 75
           DGV.Columns(11).Width = 40
           DGV.Columns(12).Width = 30
           DGV.Columns(13).Width = 220
           DGV.Columns(14).Width = 40
           sda.Update(dt)
       Catch ex As Exception
           MessageBox.Show("Errore di connessione a SQL Server. " & ex.Message)
       Finally
           con.Close() 'Chiude la connessione.
       End Try
    End Sub
  • Re: Mistero grafico

    Probabilmente ho trovato l'inghippo ma non so come rimuoverlo.

    Nell'elenco degli oggetti del form ci sono 2 righe  LineShape1 e ShapeContainer1 ma quando le seleziono e premo Canc non succede nulla e neppure le vedo selezionate sul form.

    Come le elimino?

    Grazie

  • Re: Mistero grafico

    01/10/2024 - Dummy ha scritto:


    Come le elimino?

    Rimuovile dal file con estensione “.designer.cs” associato al Form. Cercale all'interno di quel codice.

    Fai un backup prima di modificare, per sicurezza.

  • Re: Mistero grafico

    Grazie Alka, ho eliminato i gruppi delle 2 entità ma nel progetto restano elencate. 

    Poco male visto che a run time non compare pù la famigerata linea.

    Grazie a tutti per l'aiuto e buona giornata

  • Re: Mistero grafico

    02/10/2024 - Dummy ha scritto:


    Grazie Alka, ho eliminato i gruppi delle 2 entità ma nel progetto restano elencate. 

    Cosa vuol dire che “restano elencate”? Cosa hai eliminato?

    Se sapessi che qualcosa rimane all'interno di un progetto ed è inutilizzato, o errato, pensando ai potenziali problemi che può crearmi, io non ci dormirei la notte. :D

  • Re: Mistero grafico

    Ho aperto frmcarterzista.Designer.vb (non c'è l'estensione cs)

    Ho trovato 2 righe in InitializeComponent che ho dovuto lasciare e ho eliminato due blocchi di righe che si riferivano a LineShape1 e ShapeContainer1 con i dati di posizione ecc…

    Ho cercato nel codice del frm e in Designer ma non ho altri riferimenti a questi 2 oggetti ma se commento le 2 righe mi dà errore.

     Private Sub InitializeComponent()
        Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmcarterzista))
        Me.lblbarcode = New System.Windows.Forms.Label()
        Me.txtbarcode = New System.Windows.Forms.TextBox()
        Me.lblconto = New System.Windows.Forms.Label()
        Me.txtconto = New System.Windows.Forms.TextBox()
        Me.lblqta = New System.Windows.Forms.Label()
        Me.txtqta = New System.Windows.Forms.TextBox()
        Me.DGV = New System.Windows.Forms.DataGridView()
        Me.LineShape1 = New Microsoft.VisualBasic.PowerPacks.LineShape()
        Me.ShapeContainer1 = New Microsoft.VisualBasic.PowerPacks.ShapeContainer()
        Me.lblprezzo = New System.Windows.Forms.Label()
        Me.txtprezzo = New System.Windows.Forms.TextBox()
        Me.lblcliente = New System.Windows.Forms.Label()
        Me.lblarticolo = New System.Windows.Forms.Label()
        Me.txtarticolo = New System.Windows.Forms.TextBox()
        .....
        Me.SuspendLayout()

    Quando apro la form e vado sull'elenco dei componenti trovo ancora le 2 voci esattamente come nell'immagine postata ieri ma in esecuzione non viene generata la linea.

  • Re: Mistero grafico

    02/10/2024 - Dummy ha scritto:


    Ho aperto frmcarterzista.Designer.vb (non c'è l'estensione cs)

    Sì, ho sbagliato io l'estensione, perché sono abituato al linguaggio C#, ma non cambia nulla di fatto.

    02/10/2024 - Dummy ha scritto:


    Ho trovato 2 righe in InitializeComponent che ho dovuto lasciare

    Perché le hai “dovute lasciare”? Se si tratta di righe riferite a controlli o componenti che vuoi rimuovere, devi toglierle.

    02/10/2024 - Dummy ha scritto:


    Ho cercato nel codice del frm e in Designer ma non ho altri riferimenti a questi 2 oggetti ma se commento le 2 righe mi dà errore.

    Dipende dall'errore: se da qualche parte hai fatto riferimento agli elementi che hai tolto, è normale che ti dia errore, ma bisogna capire a cosa è dovuto. Se hai codice che inizializza gli elementi rimossi, anche quella parte di codice va eliminata congruentemente.

    In definitiva, non va rimossa solo la dichiarazione, ma tutte le righe che fanno riferimento agli elementi da togliere, altrimenti continuerai a vederle.

    Se invece l'errore è dovuto al fallimento di codice che fa riferimento a questi elementi, ed è codice che per qualche motivo deve essere conservato perché fa qualcosa di “utile al business”, allora significa che quegli elementi ti servono necessariamente, pertanto non devi rimuoverli ma rivedere la logica per non utilizzarli, o configurarli adeguatamente.

    Devi comunque capire cosa fa quel codice, non andare a tentoni provando a togliere e lasciare senza ragionarci, altrimenti è normale che quanto poi ti viene presentato sia diverso da quello che ti aspetti, se non sai nel dettaglio quello che stai facendo. :)

  • Re: Mistero grafico

    Effettivamente lo stesso componente era utilizzato in altre parti. 

    Eliminato del tutto 

    Grazie mille a tutti

  • Re: Mistero grafico

    01/10/2024 - oregon ha scritto:


    È lo sfondo delform o c'è un altro oggetto?

    Era una delle mie prime domande… meglio così

Devi accedere o registrarti per scrivere nel forum
12 risposte