+ Rispondi al Thread
Pagina 2 di 2 primaprima 12
Visualizzazione dei risultati da 11 a 15 su 15

Discussione: [MsAccess] TreeView VBA

  1. #11
    L'avatar di @Alex
    @Alex non è in linea Very Important Person
    Post
    16,143
    Successivamente al Collapse di un Nodo, come avviene nelle Form in modalità continua in seguito ad Insert o Delete di un Record, anche se si riporta il Bookmark sul record precedente al Requery, la ScrollBar, e di conseguenza la posizione del Record, vengono modificate, di solito vengono riposizionati al TOP oppure al BOTTOM a seconda della posizione relativa del Record dopo il Riposizionamento.
    Non che questo sia un problema, ma sicuramente richiede che l'utente presti attenzione a dove è finito il NODO su cui aveva operato.
    L'intento è di riportare il posizionamento del Nodo alla medesima posizione, ovviamente se possibile in base ai Nodi prima e dopo...!
    Il codice usato è semplificato, ovviamente nessuna API, legge la posizione Relativa ed Assoluta prima del Requery, quindi ricalcola la nuova posizione dopo il Requery e muove il Record affinchè sia ripristinata la posizione relativa precedente.

    Inserita la gestione di Menù Contestuale costruito Runtime in LateBinding con RightClick sul singolo Nodo.
    Sfrutto la creazione RUNTIME di una CommandBar(popup) sensibile al contesto, i menù quindi risultano dinamici in base alle condizioni del Nodo e del TreeView.
    Il codice usa l'associazione Tardiva(LateBinding) per evitare che l'utilizzatore debba inserire i Riferimenti alle LIB di OFFICE.
    Predisposta una Public Property per Abilitarlo:
    codice:
    Public Property Get AllowFastMenu() As Boolean
        AllowFastMenu = mAllowFastMenu
    End Property
    Public Property Let AllowFastMenu(Value As Boolean)
        mAllowFastMenu = Value
    End Property
    Ora l'edit del Nodo avviene sia per Doppio Click, Evento Subclassato dalla Maschera Parent, ma anche se si Mantiene premuto [Shift+LeftButton per 500msec.], ovviamente se la proprietà di consenso all'edit è TRUE:
    codice:
    Public Property Get AllowEditOnLine() As Boolean
        AllowEditOnLine = mAllowEdit
    End Property
    Public Property Let AllowEditOnLine(Value As Boolean)
        mAllowEdit = Value
    End Property
    Il manuale non è ancora aggiornato.
    Ultima modifica di @Alex; 27-06-2017 12:58 
    @Alex
    Il CROSSPOST è VIETATO
    Mirror al vecchio sito WEB(salvare i Demo riassegnando l'estensione (.Zip/.Rar/.Exe in base all'icona...):
    http://mirror.masterdrive.it/alessandrobaraldi/
    Leggi il
    Regolamento del Forum e nel comprenderne la filosofia rispettalo.

  2. #12
    L'avatar di @Alex
    @Alex non è in linea Very Important Person
    Post
    16,143
    Modifica sostanziale nella Tabella principale del TreeView.
    Riposizionata la CheckBox in linea al TreeView.
    Sono stati apportati alleggerimenti del codice, in particolare nella Funzione di Ricalcolo [RefreshTree].
    Pulito un po il codice.

    Aggiungo un commento TECNICO di riflessione:
    A chi avesse uno spirito critico per condividere se l'opportunità di gestire i Nodi in modo "gerarchico"... potrebbe dare risultati migliori...
    Premesso che il sistema, basato su Form Continue non può essere gerarchico, ma l'idea di strutturare la Classe Nodo come oggetto gerarchico è pur sempre attuabile.
    Questo sostituirebbe l'uso delle Query di aggiornamento e ricalcolo a vantaggio di una logica ad Oggetti, ma a svantaggio probabilmente della velocità...(forse).

    Con la logica gerarchica ad oggetti(Classi nodo) si potrebbe attuare la modifica solo agli oggetti interessati, anzi solo all'oggetto interessato che poi in modo gerarchico trasmetterebbe la Variazione ai figli...! senza scrivere altro codice in quanto la classe stessa sarebbe autoreferenziante.
    Vabbè... per i puristi del codice...
    Ultima modifica di @Alex; 03-07-2017 20:06 
    @Alex
    Il CROSSPOST è VIETATO
    Mirror al vecchio sito WEB(salvare i Demo riassegnando l'estensione (.Zip/.Rar/.Exe in base all'icona...):
    http://mirror.masterdrive.it/alessandrobaraldi/
    Leggi il
    Regolamento del Forum e nel comprenderne la filosofia rispettalo.

  3. #13
    L'avatar di @Alex
    @Alex non è in linea Very Important Person
    Post
    16,143
    Ho fatto vari tentativi per migliorare le prestazioni in visualizzazione:
    1) Tentativo di gestire in modo OOP i NODI.
    Risultati:
    Rallentamento nel caricamento massivo, ovviamente rimane il fatto che si lavora su un RS in Tabella in Maschere continue.
    2) Tentativo di usare una Form(SubForm) come UserContro(Nodo) ed utilizzo della stessa in MultiIstanza in una FormContainer.
    Risultati:
    Oltre alla limitazione degli ITEMS visualizzabili in modo continuo(nel mio caso ho fatto 40 Items in verticale usando 40 Cloni dell'istanza della UserForm) e quindi ad una logica di SCROLL più complessa e nell'insieme meno pratica, le prestazioni sono decisamente rallentate proprio in fase di SCROLL, eliminato il FLIKER, ma la latenza rimane un problema...

    Ad oggi il miglior risultato sembra questo, ovvero Campi Numerici per l'indice di Immagine da caricare ed OggettiOle associati(ma calcolati) a Runtime.

    Purtroppo i vari tentativi di migliorie non danno grandissimi risultati.
    Il TreeView ha invece prestazioni ottime se, si eliminano le IMMAGINI, quindi se si gestisce solo con gli SPECIAL-CHAR iniziale, e si rimuovono NODE/ICON/ROOTLINE per nodo e ICON(CheckBox) sempre sostituibile con una CheckBox reale.

    Ovviamente se qualcuno avesse qualche illiminante idea...
    @Alex
    Il CROSSPOST è VIETATO
    Mirror al vecchio sito WEB(salvare i Demo riassegnando l'estensione (.Zip/.Rar/.Exe in base all'icona...):
    http://mirror.masterdrive.it/alessandrobaraldi/
    Leggi il
    Regolamento del Forum e nel comprenderne la filosofia rispettalo.

  4. #14
    L'avatar di @Alex
    @Alex non è in linea Very Important Person
    Post
    16,143
    Pubblico una versione Light, che ho portato avanti parallelamente alla standard, priva di gestioni IMMAGINI.
    Ovviamente l'aspetto estetico risulta penalizzato, ma le prestazioni sono estremamente soddisfacenti.
    @Alex
    Il CROSSPOST è VIETATO
    Mirror al vecchio sito WEB(salvare i Demo riassegnando l'estensione (.Zip/.Rar/.Exe in base all'icona...):
    http://mirror.masterdrive.it/alessandrobaraldi/
    Leggi il
    Regolamento del Forum e nel comprenderne la filosofia rispettalo.

  5. #15
    L'avatar di @Alex
    @Alex non è in linea Very Important Person
    Post
    16,143
    Qualche aggiustamento, inserita la possibilità di definire il Char della CheckBox... e migliorie di visualizzazione.
    @Alex
    Il CROSSPOST è VIETATO
    Mirror al vecchio sito WEB(salvare i Demo riassegnando l'estensione (.Zip/.Rar/.Exe in base all'icona...):
    http://mirror.masterdrive.it/alessandrobaraldi/
    Leggi il
    Regolamento del Forum e nel comprenderne la filosofia rispettalo.

+ Rispondi al Thread
Pagina 2 di 2 primaprima 12

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi