2009-02-04 4 views
6

Il mio obiettivo è aggiornare l'aspetto della GUI nella mia app. Attualmente la mia GUI contiene un sacco di listbox che sono usati per modificare alcuni oggetti in un modo antiquato, cioè, l'utente fa doppio clic su un elemento e viene mostrata una finestra di dialogo per modificare l'oggetto corrispondente.Controllo Delphi che potrebbe simulare "Add-on | Elenco di estensioni" di Firefox?

Penso che un buon approccio moderno sia come Firefox visualizza le estensioni installate (un'istantanea di seguito).

La mia domanda è su come costruire una tale interfaccia grafica in Delphi (win32) facilmente? Ci sono dei componenti che si usano mimando un simile comportamento o dovrò semplicemente codificare questo da stratch usando i pannelli? (IMO un lavoro molto ingombrante vorrei evitare - la logica di selezione, ridimensioni, ecc ...)

alt text http://i41.tinypic.com/16k6gd5.png

risposta

9

Si può fare qualcosa di simile (non esattamente) con componenti standard; TDBCtrlGrid, TSpeedButton, ...

alt text http://img8.imageshack.us/img8/9585/imagen29ox3.png

+0

Wow!grazie mille Neftali! :) –

+0

L'immagine sembra non essere più disponibile! –

+0

Siamo spiacenti. Era in un server gratuito ed è scaduto. Prendo nota per la prossima volta. :-( –

3

Utilizzando un TFrame per ogni elemento della lista e metterli tutti allineati superiore su una TScrollBox potrebbe lavoro. Vedi anche TDBCtrlGrid che fa qualcosa di simile in combinazione con i set di dati.

+0

Grazie Lars, sono andato una direzione simile Neftali suggerito. –

2

Può essere eseguito con i controlli Delphi esistenti.

Ad esempio, nel controllo diTCustomListBox è possibile creare il proprio evento OnDrawItem attirare la vostra voce propria lista. È inoltre necessario creare il proprio OnMeasureItem per modificare l'altezza dell'elemento.

In alcuni casi è molto limitato, quindi se vuoi più libertà dovrai farlo da zero.

+0

Questo è esattamente quello che stavo evitando :-) Grazie però! –

7

Se si utilizza Delphi 2007 o Delphi 2009, è possibile eseguire un'operazione simile utilizzando TCategoryButtons (dalla pagina della tavolozza componenti "Aggiuntivo"). Rilasciare un modulo e fare clic con il tasto destro per visualizzare il menu popup, quindi fare clic su "Editor categorie ...". Aggiungi una categoria con la finestra di dialogo risultante, impostala come didascalia e, facoltativamente, imposta gli elementi che contiene. Non esattamente la stessa cosa, ma potrebbe fare ciò che ti serve.

È anche possibile utilizzare una finestra di dialogo con una TTreeView (se si dispone di categorie di oggetti) o TListView per emulare la finestra di dialogo Progetti di Delphi 2007 -> Opzioni. Facendo clic su un oggetto in TreeView o ListView viene visualizzata la pagina corretta di un TPageControl per configurare l'oggetto.

+0

TCategoryButton era la mia risposta, quindi hai ottenuto il mio voto. –

+0

Grazie, Cesar. Alla fine sono riuscito a creare un OpenID in modo da poter rispondere alle domande qui. Sono stato in agguato occasionalmente, ma solo per brevi periodi. –

+0

Questa sembra la scelta praticabile in D2007 e versioni successive. Anche se sfortunatamente non ce l'ho. Grazie. –

2

Sono per lo più d'accordo con Lars, ma vorrei usare una cornice per ogni oggetto invece di un pannello. Questo si separerebbe nel suo stesso file e otterresti un facile supporto per la progettazione per questo.

+0

Bel suggerimento. Ho aggiornato la mia risposta. –

Problemi correlati