Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it L'avatar di colde
    Registrato dal
    Feb 2001
    Messaggi
    1,802

    [delphi] Allineare più oggetti su un form

    Ciao a tutti,
    dovrei creare una maschera con parecchi campi edit e inizialmente la finestra si apre con una dimensione predefinita, espandibile poi dall'utente, fino a farla arrivare a pieno schermo. Avendo questa caratteristica, durante la fase di sviluppo posiziono manualmente gli oggetti nella posizione corretta ma espandendo la finestra questi rimangono fissi. Dando una posizione al client invece mi occupano tutta la finestra sovrapponendosi ad altri oggetti e non allineandosi ad essi. Ad ogni campo edit viene associata anche una label in modo da sapere a cosa si riferisce quel determinato campo e il tutto è incluso in un TPanel.
    Sapete darmi una mano? So che la domanda non è altamente tecnica ma sono ancora nella prima fase di studio, quindi abbiate panzienza.

    Grazie


    P.S.
    se non è chiara la richiesta fatemi un fischio che la riformulo.
    www.beppegrillo.it
    Il blog di Beppe!!

  2. #2
    dai un'occhiata alla proprietà Anchors di ogni componente visuale. Serve ad ancorare un componente a una parte del form (sx,dx,alto o basso)

  3. #3
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301
    Generalmente, si utilizza la proprietà Align dei controlli per ancorarli ad un bordo del form o all'area che occupano al suo interno.

    La proprietà Anchors, invece, permette di rendere i controlli ancorati al form attraverso gli angoli selezionati e identificati dalla proprietà stessa; in questo modo, modificando la dimensione del form, il controllo si ridimensiona di conseguenza.

    Quando si voglio invece ottenere allineamenti multipli e complessi, è possibile sfruttare un TPanel per raggruppare i controlli e allineare il pannello (o ancorarlo) per ottenere gli effetti più disparati.

    L'uso di un controllo TSplitter posizionato tra controlli con lo stesso allineamento permette all'utente di ridimensionare i controlli a piacimento durante l'esecuzione del programma.

    Per verificare il funzionamento delle proprietà citate, basta fare qualche prova in un progetto vuoto, nel form principale, e vedere gli effetti che si verificano prima di impiegare tali procedimenti in produzione all'interno di un progetto esistente.

    C'è da dire anche che Delphi 2006 introduce novità interessantissime in questo frangente: è possibile disporre di TGridPanel e TFlowPanel per disporre controlli secondo una griglia oppure uno di seguito all'altro; inoltre, è possibile definire margini impostabili che forzino una determinata distanza tra i controlli allineati e adiacenti.

    Insomma, ce n'è per qualsiasi tipo di esigenza...

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

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

  4. #4
    Utente di HTML.it L'avatar di colde
    Registrato dal
    Feb 2001
    Messaggi
    1,802
    Grazie come sempre. Sto provando ad allineare i vari oggetti come vorrei ma sono ancora in alto mare, decide ancora delphi e non io. Con gli allineamenti e anchor ho qualche difficoltà, probabilmente perchè devo ancora capire bene il loro utilizzo e significato.
    www.beppegrillo.it
    Il blog di Beppe!!

  5. #5
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301
    Originariamente inviato da colde
    Sto provando ad allineare i vari oggetti come vorrei ma sono ancora in alto mare, decide ancora delphi e non io.
    Delphi non gode di una propria intelligenza: fa quel che dici tu.

    Originariamente inviato da colde
    Con gli allineamenti e anchor ho qualche difficoltà, probabilmente perchè devo ancora capire bene il loro utilizzo e significato.
    Probabile.

    Diciamo che non posso fornirti un ulteriore aiuto in merito alla questione; mi spiego: se mi chiedi come si ottengono genericamente allineamenti ed ancoraggi, la spiegazione te l'ho data; se non riesci ad ottenere l'effetto desiderato, allora devi essere molto molto specifico sul layout che vuoi ottenere, magari con un disegno, affinchè possa darti suggerimenti diretti e mirati.

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

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

  6. #6
    Utente di HTML.it L'avatar di colde
    Registrato dal
    Feb 2001
    Messaggi
    1,802
    Originariamente inviato da alka
    Delphi non gode di una propria intelligenza: fa quel che dici tu.
    Nel mio caso possiede vita propria, pensa ed agisce come vuole. A volte lo prendo a frustate e riesco a domarlo per fargli fare le cose che voglio ma spesse volte rimane un animale selvaggio accecato dalla libertà di pensiero.

    Probabile.

    Diciamo che non posso fornirti un ulteriore aiuto in merito alla questione; mi spiego: se mi chiedi come si ottengono genericamente allineamenti ed ancoraggi, la spiegazione te l'ho data; se non riesci ad ottenere l'effetto desiderato, allora devi essere molto molto specifico sul layout che vuoi ottenere, magari con un disegno, affinchè possa darti suggerimenti diretti e mirati.

    Ciao!
    Non ti preoccupare, domani ti fornirò il necessario per darmi una manina.
    www.beppegrillo.it
    Il blog di Beppe!!

  7. #7
    Utente di HTML.it L'avatar di colde
    Registrato dal
    Feb 2001
    Messaggi
    1,802
    Eccomi qui:

    In allegato trovi il layout del form che voglio creare con la disposizione degli oggetti che dovrò inserire. Ovviamente si tratterà anche campi checkbox e radio o gruppi di essi ma nel jpg ho creato tutto come campi edit per velocità. Inoltre ho inserito una griglia che conterrà dei dati da DB che sarà posizionata in fondo pagina. Mi sapresti dire come posso fare per allineare questi oggetti in quel modo? Ho provato ieri ma non ho ricavato nulla, ho fatto un piccolo passo avanti usando il TGridPanel ma la disposizione all'interno di ogni riquadro non sono ancora riuscito a farla.

    Grazie mille dell'aiuto.
    Immagini allegate Immagini allegate
    • Tipo di file: jpg a.jpg‎ (20.2 KB, 36 visualizzazioni)
    www.beppegrillo.it
    Il blog di Beppe!!

  8. #8
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301
    Se osservi la disposizione dei controlli sul form, noterai che l'area dell'applicazione è divisa in due aree principali: una superiore con i controlli TLabel e TEdit ed una inferiore con la griglia TDBGrid (o sostituto).

    Pensando alla parte superiore, sembra proprio una missione per il controllo TGridPanel: ti basta prenderlo dalla Toolbox, appoggiarlo sul form e impostare la proprietà Align ad "alTop" per ancorare il controllo alla parte superiore, appunto, della finestra.

    In questo modo, il controllo si adatterà automaticamente al ridimensionamento del form mantenendo il proprio ancoraggio.

    Successivamente, devi disporre nella parte inferiore del form la griglia. Ti basta trascinare un controllo TDBGrid, TStringGrid o altro (a seconda delle funzionalità che ti servono) nella parte inferiore del form (non occupata dal TGridPanel); a questo punto, è necessario fare in modo che questo controllo occupi lo spazio rimanente del form ancorandosi automaticamente a tale area: è sufficiente impostare la proprietà Align ad "alClient" per ottenere questo effetto.

    Il gioco è fatto: avrai un TGridPanel che occupa la parte alta del form ed è prioritario rispetto ai restanti controlli allineati (essi occupano quanto viene lasciato libero dal pannello) e una Grid che si adegua allo spazio disponibile.

    Per layout più complessi, è necessario ricorrere ad un sistema di "scatole cinesi", allineando opportunamente pannelli TPanel e, al loro interno, allineando i controlli figli di conseguenza (rispetto al pannello contenitore).

    Fai qualche prova tecnica per comprendere il funzionamento di quanto descritto.

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

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

  9. #9
    Utente di HTML.it L'avatar di colde
    Registrato dal
    Feb 2001
    Messaggi
    1,802
    Ciao Alka, quella parte che hai descritto sono in grado di farlo, il mio problema è posizionare le label e gli edit nel modo in cui vedi sul jpg. In pratica ho inserito il TGridPanel e all'interno ho inserito in ogni cella un secondo TPanel con al suo interno label + edit. Vorrei mantenerle al centro del TPanel genitore anche quando quest'ultimo viene allargato per il ridimensionamento della finestra ed è questo che non riesco a fare.
    www.beppegrillo.it
    Il blog di Beppe!!

  10. #10
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301
    Ti basta impostare la proprietà Align di ciascun pannello singolo ad "alClient" per fare in modo che si adatti alla cella, poi internamente - per fare un esempio - "alLeft" sulla TLabel per allineare il controllo a sinistra e il controllo TEdit ad "alClient" affinchè occupi lo spazio restante.
    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.