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