Posizionare oggetto in base a quote contenute in una tabella

di il
16 risposte

16 Risposte - Pagina 2

  • Re: Posizionare oggetto in base a quote contenute in una tabella

    Wbd,
    se interpreto correttamente l'esigenza, vorresti presentare, per ogni prodotto (sulla sua immagine) delle linee che rappresentino la misura da verificare.
    In tal caso, devi considerare che i valori di posizionamento, nella grafica, sono espressi in "twips".
    Ove un twip (TWentieth of an Imperial Point) è 1/20 di un Punto di 1/72 di pollice (inch) per cui vi sono 1440 twips per un inch (all'incirca 567 twips per un centimetro).



    Di conseguenza per posizionare un oggetto (come una linea) in base alle quote contenute in una tabella dovrai convertire le dimensioni dei centimetri (rispetto al fattore di scala della foto del prodotto) impostando ad esempio nel metodo Move della Line i valori di Left, Top, Width, Height espressi in twips:
    https://docs.microsoft.com/en-us/office/vba/api/access.line.move

    Per ulteriori informazioni puoi vedere i seguenti link:
    http://www.mendipdatasystems.co.uk/move-forms-controls/4594549378
    https://www.tek-tips.com/viewthread.cfm?qid=62578
  • Re: Posizionare oggetto in base a quote contenute in una tabella

    1. Puoi fare 2-3 esempi di mattoni diversi, di come compileresti quella maschera/sottomaschera che hai allegato in immagine?
    la cosa è un po' lunga e complessa da chiarire ma in breve posso dire che per rilevare le dimensioni in maniera univoca il sistema è questo:

    - posizionare il blocco in posizione di estrusione
    - le dimensioni (spessore, lunghezza, altezza) sono intese con il mattone "in opera" (come va posizionato sul muro)
    - seguire un sistema di precedenze per rilevare le misure: primo estruso --> destra --> alto

    come si può intuire il sistema richiede abbastanza concentrazione, quindi ho deciso di costruire questa maschera per guidare l'operatore e risparmiargli tutti i ragionamenti.
    Vediamo se ho capito. La sottomaschera [quote_misure] mostra la foto del mattone con SOLO UNA LINEA ROSSA. Tale linea rossa è ciò che può bastare a rappresentare univocamente il mattone in termini di "misure" legate alle "quote" (sempre relativamente alla linea). Tale linea rossa ha una serie di "valori-parametri" (inclinazione, altezza, larghezza, da margine superiore, sinistra) che la descrivono. Giusto? Ho capito bene?
    esatto, solo una linea che si sposta in base alla textBox attiva nella maschera, pescando le quote da una tabella.
    In tal caso, devi considerare che i valori di posizionamento, nella grafica, sono espressi in "twips".
    Ove un twip (TWentieth of an Imperial Point) è 1/20 di un Punto di 1/72 di pollice (inch) per cui vi sono 1440 twips per un inch (all'incirca 567 twips per un centimetro).
    intanto grazie Willy55 per i link, sui twip c'ho sbattuto il naso ieri, ho messo la conversione nel codice perchè le quote delle linee le prendo dalla finestra proprietà quindi le gestisco in cm..
    Di conseguenza per posizionare un oggetto (come una linea) in base alle quote contenute in una tabella dovrai convertire le dimensioni dei centimetri (rispetto al fattore di scala della foto del prodotto) impostando ad esempio nel metodo Move della Line i valori di Left, Top, Width, Height espressi in twips:
    ottimo, non avevo pensato al metodo move, per ora ho fatto la versione con DlookUp() e quindi ho settato una proprietà alla volta ma ora sto preparando quella utilizzando un recordset, allora il metodo .move sarà molto utile

    ecco il codice, versione DlookUp(), che andrà richiamato con l'evento Click delle textBox
    Private Sub MostraEsempioMisura()
    
    
    Dim tipoProd As Integer
    Dim nomeCampoMisura As String
    
    
    tipoProd = Me!prodotto.Column(3)
    
    nomeCampoMisura = Me.ActiveControl.Name & "Slant"
    
    Me.linea1.LineSlant = DLookup(nomeCampoMisura, "[db_quote_layout_dimensioni]", "[db_quote_layout_dimensioni].[tipo] = " & tipoProd)
    
    nomeCampoMisura = Me.ActiveControl.Name & "Width"
    
    Me.linea1.Width = DLookup(nomeCampoMisura, "[db_quote_layout_dimensioni]", "[db_quote_layout_dimensioni].[tipo] = " & tipoProd) * 567
    
    nomeCampoMisura = Me.ActiveControl.Name & "Height"
    
    Me.linea1.Height = DLookup(nomeCampoMisura, "[db_quote_layout_dimensioni]", "[db_quote_layout_dimensioni].[tipo] = " & tipoProd) * 567
    
    nomeCampoMisura = Me.ActiveControl.Name & "Top"
    
    Me.linea1.Top = (DLookup(nomeCampoMisura, "[db_quote_layout_dimensioni]", "[db_quote_layout_dimensioni].[tipo] = " & tipoProd) * 567) + Me.Immagine1.Top
    
    
    nomeCampoMisura = Me.ActiveControl.Name & "Left"
    
    Me.linea1.Left = (DLookup(nomeCampoMisura, "[db_quote_layout_dimensioni]", "[db_quote_layout_dimensioni].[tipo] = " & tipoProd) * 567) + Me.Immagine1.Left
    appena ho realizzato la versione con recordset posterò il codice, intanto grazie a tutti
Devi accedere o registrarti per scrivere nel forum
16 risposte