Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    247

    [DELPHI] Listbox con colonne

    Salve,

    ho creato una "ListBox" con delle colonne (ho impostato il parametro "Columns" a 4), ma non riesco a capire come fare ad inserire un nuovo elemento nella "ListBox" diviso per colonne.

    Ho cercato su Google e trovato solo questa pagina, ma la soluzione proposta funziona maluccio...

    Qual è la strada "ufficiale" ? :master:

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301
    Hai impostato la proprietà TabWidth?

    Il codice che mi hai segnalato, benchè io sia abituato ad utilizzare il carattere di tabulazione nella sua espressione ASCII (#9), funziona correttamente.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    247
    Grazie... Mi ero dimenticato di impostare quel parametro
    Nella guida non c'è scritto niente o quasi

    Ora il problema è un altro, però... Le colonne non sono allineate! Mi spiego meglio:

    18/12/2005Scritta normale367.43
    21/12/2005Scritta un po' più lunga del normale125.54

    Credo proprio di non essere tagliato per la programmazione :rollo:

    Chi mi sa dare una soluzione? Grazie in anticipo!

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301
    Originariamente inviato da firefox88
    Grazie... Mi ero dimenticato di impostare quel parametro
    Nella guida non c'è scritto niente o quasi
    In effetti è un po' scarsa in merito a quell'argomento specifico.

    Originariamente inviato da firefox88
    Ora il problema è un altro, però... Le colonne non sono allineate! Mi spiego meglio [...]
    Benchè il controllo ListBox possa essere suddiviso in colonne, non credo che sia il controllo più adatto alla visualizzazione di dati tabulari per i quali direi che una sana griglia sia la soluzione più indicata.

    Soprattutto se i dati provengono da un database, accedi alla pagina "Data Controls" della Palette dei Componenti e utilizza i controlli contenuti all'interno, tra cui è presente un controllo DBGrid che ti consente di associare una griglia ai dati, decisamente leggera e performante, per visualizzarli nel modo adeguato.

    In alternativa, puoi sempre valutare l'uso di un controllo TListView per mostrare un elenco di dati "a la Windows Explorer", anche se in genere - soprattutto nell'ambito dell'accesso ai dati - le performance di questo controllo degradano notevolmente le prestazioni.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    247
    Sì, in realtà volevo evitare la DBGrid...

    Mi sa che mi dovrò rassegnare

    Grazie dell'aiuto!

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301
    Originariamente inviato da firefox88
    Sì, in realtà volevo evitare la DBGrid...
    Capisco, ma non so quali buoni motivi tu abbia per farlo...
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    247
    Hai ragione, ora ti spiego brevemente qual è il problema.

    Il programma richiama una tabella da un database MSAccess. L'utente deve avere la possibilità di modificare le righe di questa tabella, rimuoverle, o aggiungerne altre.

    La DBGrid è piuttosto difficile da usare per l'utente finale. E' tutt'altro che intuitiva. Ad esempio, non è chiaro come si faccia a rendere effettive le modifiche apportate a una determinata riga, e quando si crea una nuova riga, è necessario aggiungerne un'altra vuota in fondo altrimenti quella precedente non viene salvata. Provare per credere.

    Perciò ho pensato di fare una ListBox: l'utente seleziona una riga, e quindi cliccando su un pulsante "Modifica", ha la possibilità, mediante una comoda form, di apportare modifiche alla riga in questione. Cliccando su un pulsante "Aggiungi", può inserire una riga (sempre mediante una form), cliccando sul pulsante "Rimuovi" la cancella completamente. Molto più semplice dell'inserimento direttamente sulla griglia


    Grazie ancora per il prezioso aiuto

  8. #8
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301
    Originariamente inviato da firefox88
    La DBGrid è piuttosto difficile da usare per l'utente finale. E' tutt'altro che intuitiva.
    Sicuramente, è molto più intuitiva di una ListBox che, al contrario, non è adatto allo scopo, non visualizza nomi per le colonne, non supporta la loro riorganizzazione, non permette di fornire una scelta di valori "in place", non permette in sostanza di fare nulla di quanto invece implementa il controllo TDBGrid.

    Originariamente inviato da firefox88
    Ad esempio, non è chiaro come si faccia a rendere effettive le modifiche apportate a una determinata riga, e quando si crea una nuova riga, è necessario aggiungerne un'altra vuota in fondo altrimenti quella precedente non viene salvata. Provare per credere.
    Perciò ho pensato di fare una ListBox [...]
    Molto più semplice dell'inserimento direttamente sulla griglia
    Parti dall'errato concetto che la griglia, responsabile della visualizzazione tabulare dei dati, debba fornire TUTTE le funzionalità e i comandi che consentono di aggiungere, modificare, eliminare, salvare e annullare i record, cosa che non fa, ma che per inciso non fa nemmeno la ListBox.

    Infatti, tu stesso ammetti che hai l'intenzione di aggiungere pulsanti e altri elementi che consentano di fare queste operazioni in modo più intuitivo; allora, dico io, perchè non farle per la DBGrid piuttosto che per la ListBox?

    La cosa magnifica è che utilizzando un TDBNavigator e associandolo allo stesso DataSource, puoi tranquillamente fornire una comoda interfaccia per svolgere tutte le operazioni che desideri sui record senza costringere l'utente a fare tutto dal controllo TDBGrid ricordandosi le opportune combinazioni di tasti.

    Se non ti soddisfano le funzionalità o l'aspetto del DBNavigator, puoi sempre ricorrere al componente TActionList e introdurre al suo interno le "Standard Actions" che consentono di eseguire operazioni su un generico TDataSet e associare tali azioni ai tasti personalizzati dell'interfaccia utente.

    Insomma, qualsiasi soluzione tu voglia adottare per l'accesso ai dati, Delphi ti fornisce una valida e funzionale soluzione che spesso non richiede di scrivere nemmeno una sola riga di codice.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.