Domanda

questo articolo c'è una spiegazione di come utilizzare TFrames come alternativa alla TTabSheets in un Delphi PageControl.

ho riflettuto un esercizio simile, che quanto sopra non sembra fornire la soluzione per, e per la quale la mia soluzione sembra essere eccessivamente complicato.

Il requisito è per un'interfaccia a schede, in cui ogni scheda può essere uno di una serie di disegni diversi. Ogni disegno è implementato come un TFrame.

A causa della natura dell'applicazione essendo progettata, si può avere più copie di qualsiasi struttura aperta in qualsiasi momento particolare (con il contenuto di ogni scheda diversa, ma non il disegno) in modo che l'utente può confrontare i dettagli di 2 / 3 diversi elementi contemporaneamente.

Per esempio, in una sessione che può avere 3 schede aperte, tutti i frame di progettazione A. In un'altra occasione, potremmo avere 3 schede aperte ciascuna di Frame A, B e C.

Il design deve essere abbastanza flessibile che possiamo aggiungere fotogrammi al disegno su richiesta.

Al momento la soluzione che ho è di avere TLists separati gestiscono ogni tipo di frame che abbiamo aperto, con forse un maestro TList per tenere traccia delle schede aperte. Come ho detto, nel corso complicata.

Qualcuno ha un suggerimento di come questo potrebbe essere gestita più semplicemente?

È stato utile?

Soluzione

probabilmente sarei lasciare fuori la TList maestro di istanze del telaio.

Se ne avete bisogno sarete in grado di farli interrogando direttamente o attraverso ciascuno dei vostri TLists individuali per ogni tipo di frame il TPageControl.

A parte che il tuo approccio sembra ragionevole.

Altri suggerimenti

Ho un'applicazione che gestisce fotogrammi su un singolo pannello con il mio controllo menu per controllare quale fotogramma è visibile. Quando ho bisogno di fare impostare un telaio visibile I semplice visibile: = false per ogni fotogramma del pannello ad eccezione di quello che voglio. Io sono in controllo di ciò che accade sul pannello quindi so che per lo meno ogni controllo è un tframe e posso arrivare a ogni frame per l'iterazione sulla proprietà Controls del pannello. Ho quindi utilizzare le interfacce per la comunicazione tra la mia forma principale e le mie cornici.

Ora, se si desidera utilizzare una finestra standard di interfaccia a schede si potrebbe ancora utilizzare il controllo pagina come avete suggerito, è sapere che ogni TtabSheet ha un solo tframe su di esso e si può controllare il suo tipo e lavorare con esso, come richiesto. Non vedo il motivo per cui avresti bisogno di un Tlist perché se si ha realmente bisogno per arrivare alla "lista di Tframes" si potrebbe costruire lo dyamically comunque da scorrere il TtabSheets nel controllo pagina.

Un'alternativa che funziona in modo simile al mio primo approccio, ma si ottiene belle schede di Windows, sarebbe quella di utilizzare un TtabControl invece di un TpageControl. Con la TtabControl è fondamentalmente solo ottiene un'istanza TStrings (nella proprietà Tabs), che rappresenta tutte le schede. Dal momento che è un TStrings è possibile associare un oggetto (cioè il vostro tframe) con ogni elemento e quindi ogni scheda. Quando si fa clic su una scheda di nascondere tutto e mostrare il corretto tframe. Hai anche la vostra lista perché è attaccato alla TtabControl tramite la proprietà Tabs. Non vi resta che gestire la visibilità delle cornici te.

Usiamo un TPageControl e creare un runtime TTabSheet discendente, che ha una nuova proprietà per il nostro TFrame (non abbiamo bisogno di eseguire la scansione attraverso .Controls o .Components per cercare la nostra struttura ogni volta).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top