Creare una libreria grafica da zero - pagina 10

 
Aliaksandr Hryshyn:

Nel mio caso, la "giungla" non è più complicata della media: una finestra di visualizzazione (l'area visibile della tabella), una finestra full-size in cui devono entrare tutte le celle, scorrerà all'interno della finestra principale, finestre per le righe e in esse le celle, più lo scorrimento (un cursore delimitato da una barra). I vincoli sul posizionamento relativo sono determinati dalle proprietà. Solo per il cursore è necessario intercettare gli eventi di movimento dell'oggetto e già correggere la posizione della"finestra full size". Tutto questo è fatto da finestre virtuali, abbiamo bisogno di imbullonare la parte visiva ad essa, senza la parte visiva ci saranno finestre per linee e finestre a grandezza naturale. E per una cella modificabile, fate un campo di input (questo è un campo personalizzato), tutte le altre cose saranno gestite dal motore - riceverà gli eventi giusti per ogni cella (eventi del mouse, ridisegno, spostamento)..... Queste sono possibilità, ma ci sono anche un paio di idee per aumentare le prestazioni nel caso in cui ci siano troppe finestre (grandi liste, tabelle, alcune migliaia di finestre).

Fallo tu..... e parleremo. :)))

Se notate, questo thread si è evoluto dal mio thread sulla gui crowdsourced dove stavo dimostrando il linguaggio di markup e l'editor visi. Alcuni utenti del forum pensavano di poter replicare tutto meglio e più bello nella loro libreria. L'argomento si è placato dopo 4 pagine. Ed è ancora lì. Ed eccoti qui, come loro, a parlare di "mille finestre"... insomma, fallo finalmente.)))))

Buona fortuna. ))))
 
Descriverò un po' le tabelle:

1. Una cella è l'elemento più semplice di una tabella e consiste di tre oggetti: un'etichetta, un testo e un'icona.

2. Ci sono diversi tipi di celle: le intestazioni di colonna, le intestazioni di riga e quelle interne. È importante separarli, perché le celle di intestazione portano informazioni sulle righe/colonne (essenzialmente le loro proprietà). Questo rende più facile lavorare con la tabella.

3. Ogni cella ordinaria ha un parametro di cui emette il valore, ma ci sono solo celle di testo, senza un parametro. Questo è un tipo diverso.

3. Le proprietà delle celle dovrebbero essere configurabili selettivamente: per l'intera riga, per una colonna o per l'intera tabella.

4. Le proprietà delle celle di intestazione devono essere configurate separatamente.

5. La tabella deve "essere in grado" di adattare altri elementi, come: caselle di controllo, liste pop-up, ... anche cursori, barre di progresso e pulsanti radio.

6. La tabella deve essere ottimizzata per ridisegnare solo le celle con valori cambiati, e non tutte.

7. La tabella dovrebbe scorrere se collocata in un campo visivo limitato.

8. Il tavolo può avere dei rulli parziali.

9. Le colonne della tabella possono cambiare la loro larghezza.

10. La tabella può essere dinamica, quando il numero di righe non è predeterminato.

11. la tabella dovrebbe essere ordinabile.

12. la tabella dovrebbe poter essere colorata nella sua interezza, o per righe/colonne selezionate.

Dio non voglia che si faccia una tabella su semplici rettangoli e testi, poiché tali "celle" non sono elementi e questa è una strada senza uscita.

Ho implementato queste cose. Anche se non perfetto in tutto.... Ma funzionano e vanno bene.

Un tavolo è sicuramente uno degli elementi più complessi. Il più complesso, che coinvolge molti meccanismi e diverse soluzioni.
 
Questo è il tavolo.))) Ricordo che Anatoly fu il primo a farlo su tela. Ha avuto un momento difficile... Ha realizzato molte cose molto bene, si sarebbe potuto essere gelosi.
 
Реter Konow:
Questo è il tavolo.))) Ricordo che è stato fatto per la prima volta su tela da Anatoly. Ha avuto un momento difficile... Ha realizzato molte cose molto bene, si sarebbe potuto essere gelosi.

Non lo facciamo sembrare bello, lo rendiamo funzionale. Lentamente sto facendo gli oggetti giusti, e l'approccio è diverso dalle altre soluzioni. Qualsiasi oggetto può essere messo nelle celle della tabella. Ho aggiunto al motore il supporto per i kanvas, quindi risulta che vengono utilizzati sia i kanvas che i rettangoli regolari. Una demo è allegata.

Il drag and drop può essere fatto sull'angolo vuoto in alto a sinistra.


File:
Test_v_grid.ex5  517 kb
 
Aliaksandr Hryshyn:

Non lo facciamo sembrare bello, lo rendiamo funzionale. Lentamente sto facendo gli oggetti giusti, e l'approccio è diverso dalle altre soluzioni. Qualsiasi oggetto può essere messo nelle celle della tabella. Ho aggiunto al motore il supporto per i kanvas, quindi risulta che vengono utilizzati sia i kanvas che i rettangoli regolari. Una demo è allegata.

Il drag and drop può essere fatto sull'angolo vuoto in alto a sinistra.


Non male, non male...

La critica prima di tutto:

Concettualmente, si tratta di una grande finestra o di diverse piccole finestre modellate insieme? Sfortunatamente, non c'è la possibilità di spostare la finestra (o le finestre). La meccanica funziona in modo un po' strano, c'è altro a cui pensare. Non ho trovato alcun modo per mettere qualcosa nelle celle, non sono interattive. Finora, non ci sono controlli funzionanti, nemmeno un semplice pulsante o una casella di controllo. Strutturalmente, le finestre non sono elaborate - nessuna cornice, nessun pulsante per ridurre a icona o zoomare, nessuna icona media... Anche senza svolgere le loro funzioni, e per il bene della decorazione, vale la pena metterli, perché altrimenti non è chiaro cosa stiamo guardando. Naturalmente... molto crudo.

Lode:

Nonostante le carenze, vedo molti progressi e potenziale. Naturalmente, se hai abbastanza pazienza e forza, alla fine qualcosa potrebbe funzionare. Beh, il talento c'è senza dubbio).


P.S. soddisfatto dello scorrimento (anche se zoppo) e del davanzale della finestra, anche se limitato, ma "gommoso". :)))

P.S.S. Scusate, le sottofinestre possono essere spostate! Non l'ho capito all'inizio. Certo, lo spazio per muoversi è severamente limitato, ma comunque...
 
Un altro vantaggio: l'etichetta "A" (chissà perché) è interattiva! Questa è già una buona cosa.
 

Purtroppo, le mie finestre non sono posizionate come dovrebbero dopo il caricamento:


Cercare di metterli al centro non ha successo.
 
Реter Konow:

Non male, non male...

La critica prima di tutto:

Concettualmente, si tratta di una grande finestra o di diverse piccole finestre modellate insieme? Sfortunatamente, non c'è mobilità della/e finestra/e. La meccanica funziona in modo un po' strano, c'è altro a cui pensare. Non ho trovato alcun modo per mettere qualcosa nelle celle, non sono interattive. Finora, non ci sono controlli funzionanti, nemmeno un semplice pulsante o una casella di controllo. Strutturalmente, le finestre non sono elaborate - nessuna cornice, nessun pulsante per ridurre a icona o zoomare, nessuna icona media... Anche senza svolgere le loro funzioni, e per il bene della decorazione, vale la pena metterli, perché altrimenti non è chiaro cosa stiamo guardando. Naturalmente... molto crudo.

Lode:

Nonostante le carenze, vedo molti progressi e potenziale. Naturalmente, se hai abbastanza pazienza e forza, alla fine qualcosa potrebbe funzionare. Beh, il talento c'è senza dubbio).


P.S. soddisfatto dello scorrimento (anche se zoppo) e del davanzale della finestra, anche se limitato, ma "gommoso". :)))

P.S.S. Scusate, le sottofinestre possono essere spostate! Non l'ho capito all'inizio. Certo, lo spazio per muoversi è severamente limitato, ma comunque...

Qui tutte le finestre (generale, celle, scorrimento, cursore per lo scorrimento....) hanno lo stesso principio di lavoro, solo proprietà diverse, differiscono solo nella rappresentazione visiva, ci sono anche finestre invisibili, quindi la visualizzazione del vetro può essere messa in qualsiasi finestra, anche nel cursore o nel quadratino rosso, non c'è differenza.

I vetri nelle celle sono interattivi come nell'indicatore (movimento del vetro stesso sul grafico in tick e sull'intestazione, movimento verticale del prezzo), solo gli eventi di scorrimento della ruota sono gestiti dallo scorrimento destro della tabella.

Questa tabella servirà come elemento visivo di base per la creazione di diversi elenchi e tabelle, non importa cosa è posto all'interno della cella, si possono avere diversi oggetti o anche la stessa tabella

 
Реter Konow:
Un altro vantaggio: l'etichetta "A" (chissà perché) è interattiva! Questa è già una buona cosa.

Avete testato l'indicatore del tumbler? Questo è un interruttore on/off per lo scorrimento automatico dei prezzi

 
Aliaksandr Hryshyn:

Avete testato l'indicatore del tumbler? È un interruttore on/off per lo scorrimento automatico dei prezzi

Sì, il tumbler stesso e l'indicatore di tick sono ben fatti. Hanno il minor numero di reclami. L'hai scritta tu o l'hai presa in prestito da qualche altro posto?

Motivazione: