Newsgroup: it.comp.appl.access
Titolo: Come fare per riposizionare oggetti su una form e poi salvare la form?

Su una form ho diversi button e label
Ho anche una routine che li ridimensiona e posiziona uno rispetto 
all'altro con precisione teutonica, anzi austriaca
Bon, come fare per salvare permanentemente la posizione e dimensioni dei 
vari controlli cosi' come sono stati modificati dal codice?
Ho provato con un semplice
DoCmd.Close acForm, Me.name, acSave
ma la prima volta che riapro la form mi ritrovo coi controlli come in 
origine, prima del ridimensionamento e posizionamento
Come fare per salvare tutto come dopo la modifica?


una tabella con nome controllo e i valori altezza larghezza posx posy da caricare all'apertura della form?
 

Il giorno giovedì 20 ottobre 2022 alle 17:18:25 UTC+2 RobertoA ha scritto:

Se lo fai in modalità struttura viene salvata la posizione, se lo fai Runtime ovviamente no e mi chiedo come potrebbe essere...
Di conseguenza devi salvare le posizioni di TUTTO, sei sicuro sia una bella idea...?
Ogni volta che apri una maschera sposti tutto...?
Boh
 
Ma la vecchia soluzione di fare X Client per X Risoluzioni...? (Per me è sempre la migliore con Access)
 
@Alex

 caricare all'apertura della form?
 
con questo codice dal sito comune:
 
Sito Comune - it.comp.appl.access
http://web.mclink.it/MC5884/
 
 
3.108 Posizionare automaticamente i bottoni in una maschera
 
 
Function POSIZIONA(X As Access.Control, Y As String)
    ' FUNZIONE PER POSIZIONARE I BOTTONI NELLA MASCHERA
    ' Le posizioni vanno da 0 a infinito
    ' X = nome controllo
    ' Y = posizione
    ' L = larghezza bottone
        L = 1500
            With X
                .Visible = True
                .Top = 200
                .Left = (300 + Y * L)
                .Height = 500
                .Width = L
            End With
End Function
 
-- 
/-\ /\/\ /\/\ /-\ /\/\ /\/\ /-\ T /-\
-=- -=- -=- -=- -=- -=- -=- -=- - -=-
........... [ al lavoro ] ...........


Ah ok, io lanciavo tutto a run-time, e non andava
Lanciando a programma fermo, da finestra 'immediata', ha modificato, poi 
ho salvato a manina e quindi ho risolto quel che volevo fare
 
Non capisco il tuo "..devi salvare le posizioni di tutto.."
E' proprio questo che NON vorrei fare, non vorrei dimensionare e 
riposizionare ad ogni apertura form, dimensiono e posiziono una volta, 
poi salvo e stop chi s'e' visto s'e' visto
 
"..Ma la vecchia soluzione di fare X Client per X Risoluzioni...? .."
Che sarebbe esattamente?

 
 
Si ho capito, ma la domanda non e' come posizionare i vari controlli
La domanda era come salvare la form una volta modificate dimensioni e 
posizioni controlli
E si puo' fare basta essere a bocce ferme, lanciare procedura 
posiziona_ridimensiona a mano da finestra immediata, e poi salvare la form


La posizione / dimensione dei vari controlli NON e' variabile
E quindi tenere memoria sul db e riposizionare/ridimensionare ad ogni 
apertura e' operazione inutile
Vorrei farlo una volta per tutte, memorizzare la form, e basta
Pare che farlo a run-time non sia possibile, vedi sotto

Roberto per farlo dovresti avere una routine che cicla tutte le maschere le apre in modalità acDesign sposta salva e cchiude.
Basta farla ONESHOT e probabilmente memorizzato l'avvenuta salatura.
La cosa in se risulta banale se non che con il RUNTIME non funzionerebbe e nemmeno con Accde.
Da qui il mio suggerimento sopra di realizzare 2 o 3 client con risoluzioni differenti che otterraiduplicandoli w facendo girare il codice dinscalatura in ACCDB, quindi compili i 2/3 client e fine.
 
Io avevo realizzato un exe in VB6, che usavo cole Launcher, leggeva la risoluzione.w lanciato il client specifico.
Ovviamente distribuito 3 client con 3 risoluzioni...
 
Questo metodo garantiva di evitare tempi morti di scalatura e possibili errori di codice.
Io mi ero fatto un tool esterno che passando la risoluzione di salatura mangiava il client selezionato e lo sputava scalato così da non mettere codice inutile nel prodotto.
 
Saluti
@Alex


Si certo, nel mio caso basta un colpetto di sposta/dimensiona e poi 
salvo e sono a posto
Interessante invece ritengo sia il caso che descrivi della modifica 
maschera aperta in acDesign
Effettivamente renderebbe modificabile da codice la struttura di una o 
piu' form, poi sempre da codice si salva e si chiude
 
 

Il 22/10/2022 08:09, @Alex ha scritto:

ma quindi ogni modifica al front end dovevi farla in tutti i possibili 
client?
 
una rottura di scatole mi sembra
BFS
 

 BAS 
 
In realtà io ho solo 1FE poi con il mio tool gli do in pasto il fe e genera le 3/N versioni con maschere scalate.
Apre le form in modalità struttura scala tutto, salva e chiude.
Impiega 30÷40 secondi a risoluzione... ovviamente dipende dal mumero di forms e dalla complessità.
 
Io quindi faccio solo 1 modifica non mi preoccupo di nulla.
La salatura Runtime che ho realizzato funziona bene ma la trovo con Access un punto debole.
 
Ciao
@Alex


interessante
ma questa "scalatura" in cosa consiste al lato pratico?
 
un mero ri-dimensionamento di altezza e larghezza di ogni controllo? che 
avrebbe ripercussioni grafiche. (immagino stringhe in bottoni tagliate)
o qualcosa di più fine?
 
BFS
 
 

 BFS
 
Tieni sempre presente che sono 10 anni che non faccio più nulla di concretamente serio...
 
In ogni caso ho trovato questo stralcio di esempio:
 
https://1drv.ms/u/s!Are2sGzrs4WCoxTlJDsHrtEUGMyw?e=UbDPra
 
 
E' abbastanza semplice da intuire, questo demo consente il RESIZE a RUNTIME, ma nella sostanza è quello che uso per il RESIZE a DESIGN-TIME
La scalatura scala TUTTO... FONT/DIMENSIONI/COLONNE... è completa e consente di passare alla chiamata la risoluzione di destinazione partendo dalla risoluzione di progetto.
 
Le 2 Classi partono da un demo di Gets/Letwin famosi pionieri di Access.
 
Non ho mai fatto il passaggio al 64Bit e nemmeno credo lo farò mai, in ogni caso lo metto a disposizione servisse a qualcuno.
 
Saluti
@Alex


"..in ogni caso lo metto a disposizione servisse a qualcuno.."
Molte grassie


fenomenale questo esempio, grazie per la segnalazione!