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] TabControl e colore di background

    Ciao Alka,
    sto provando ad utilizzare i TabControl per la prima volta e stavo notando che non esiste la proprietà color per il background. Sapresti dirmi se è possibile cambiare lo sfondo? Anche da codice, basta che si possa fare senza diventare matto.

    Altra cosa, ho creato le varie schede e allargato il TabControl al Client, poi ho inserito un bottone di prova e quando ho lanciato l'eseguibile mi sono trovato lo stesso bottone su tutte le schede che cliccavo. Presumo che ci sia qualcosa di sbagliato e mi sta venendo il dubbio di dover usare un TPageControl ma non saprei come usarlo e come assegnarne uno ad ogni scheda.

    Mi sapresti dare una mano?
    Grazie mille


    P.S.
    il post è rivolto a te perchè tanto rispondi solo tu, diciamo che mi sono portato avanti col "lavoro".
    www.beppegrillo.it
    Il blog di Beppe!!

  2. #2
    Utente di HTML.it L'avatar di colde
    Registrato dal
    Feb 2001
    Messaggi
    1,802
    Dimenticavo:
    come posso espandere le schede in modo che occupino tutta la larghezza del panel (ora ho 5 schede ma rimane uno spazio vuoto perchè la loro larghezza non copre tutta la larghezza del panel)?

    Grazie
    www.beppegrillo.it
    Il blog di Beppe!!

  3. #3
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301

    Re: [Delphi] TabControl e colore di background

    Originariamente inviato da colde
    sto provando ad utilizzare i TabControl per la prima volta e stavo notando che non esiste la proprietà color per il background. Sapresti dirmi se è possibile cambiare lo sfondo?
    Occorre intercettare l'evento OnDrawTab e utilizzare i metodi e le proprietà dell'oggetto Canvas del controllo per disegnare ciò che si vuole.

    Originariamente inviato da colde
    Altra cosa, ho creato le varie schede e allargato il TabControl al Client, poi ho inserito un bottone di prova e quando ho lanciato l'eseguibile mi sono trovato lo stesso bottone su tutte le schede che cliccavo. Presumo che ci sia qualcosa di sbagliato e mi sta venendo il dubbio di dover usare un TPageControl ma non saprei come usarlo e come assegnarne uno ad ogni scheda.
    Confermo il dubbio.

    Il TTabControl fornisce un'unica area client che contiene una sola interfaccia utente da utilizzare per qualsiasi tab selezionato (i cui contenuti variano in base, appunto, alla scheda selezionata).

    Il TPageControl, invece, permette di definire (con il tasto destro o da Object Inspector) nuove pagine distinte e selezionabili singolarmente, con interfaccia utente differenziata.

    come posso espandere le schede in modo che occupino tutta la larghezza del panel (ora ho 5 schede ma rimane uno spazio vuoto perchè la loro larghezza non copre tutta la larghezza del panel)?
    E' sufficiente allargare il controllo contenitore, TTabControl o TPageControl che sia, impostandone la proprietà Align ad "alClient"; le schede sono sempre allineate in modo automatico al contenitore e ne occupano tutto lo spazio disponibile (salvo quello riservato al tab di selezione).

    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

    Re: Re: [Delphi] TabControl e colore di background

    Originariamente inviato da alka
    Occorre intercettare l'evento OnDrawTab e utilizzare i metodi e le proprietà dell'oggetto Canvas del controllo per disegnare ciò che si vuole.
    In che senso? Io vorrei solo dare un colore di sfondo sia alle schede che alla pagina.

    Il TTabControl fornisce un'unica area client che contiene una sola interfaccia utente da utilizzare per qualsiasi tab selezionato (i cui contenuti variano in base, appunto, alla scheda selezionata).
    Fammi capire: questo oggetto contiene le schede e una parte "contenitore" per l'interfaccia (in cui inserire campi edit, checkbox ecc.). Il contenitore rimane sempre lo stesso ma cambiano le proprietà di visualizzazione dei vari oggetti a seconda della scheda cliccata? Per utilizzare questo oggetto quindi bisogna agire da codice per gestire la relazione "scheda aperta/oggeti da visualizzare". Giusto?

    Il TPageControl, invece, permette di definire (con il tasto destro o da Object Inspector) nuove pagine distinte e selezionabili singolarmente, con interfaccia utente differenziata.
    Questo sarebbe esclusivamente il "contenitore" dei vari oggetti (checkbox, edit, image ecc.) e deve essere accoppiato al TTabControl per poter essere utilizzato. Giusto?

    E' sufficiente allargare il controllo contenitore, TTabControl o TPageControl che sia, impostandone la proprietà Align ad "alClient"; le schede sono sempre allineate in modo automatico al contenitore e ne occupano tutto lo spazio disponibile (salvo quello riservato al tab di selezione).

    Ciao!
    Mmmm non ho capito. Io il TTabControl l'ho già allineato alClient ma le schede rimangono fisse, non si allargano per occupare tutta la larghezza del form e anzi la dimensione viene assegnata per default in base alla lunghezza del testo inserito nelle tabs. Sono proprio le tabs che vorrei espandere per tutta la larghezza del contenitore, non l'oggetto TTabControl in sè.
    www.beppegrillo.it
    Il blog di Beppe!!

  5. #5
    Utente di HTML.it L'avatar di colde
    Registrato dal
    Feb 2001
    Messaggi
    1,802
    Già che ci sono, in un form ho creato alcuni Panel annidati e uno mi da problemi col bordo, non è allineato con gli altri. Le proprietà del bordo sono identiche alle altre ma non c'è modo di allinearlo con gli altri. In allegato trovi l'immagine particolareggiata dell'errore, magari sai dirmi da cosa può dipendere. Tieni presente che le due aree segnate (corretta e sbagliata) sono figlie di due TGridPanel separati ma anche loro con le medesime caratteristiche, l'unica cosa che cambia è l'allineamento rispetto al form principale. Il primo TGridPanel (quello con il problema) è allineato al top mentre il secondo (quello corretto) è alClient.

    Sai dirmi da cosa può dipendere? Potrebbe andare bene anche così ma sono pignolo.

    Scusa se ti inondo di domande ma sai com'è...
    Immagini allegate Immagini allegate
    www.beppegrillo.it
    Il blog di Beppe!!

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301
    Originariamente inviato da colde
    In che senso? Io vorrei solo dare un colore di sfondo sia alle schede che alla pagina.
    Non mi risulta sia possibile colorare automaticamente lo sfondo di una scheda. A mio giudizio, è una cosa molto fuorviante e destinata unicamente ad un'interfaccia utente molto particolare.

    Ti basta comunque inserire un pannello in ciascuna pagina e dotarlo del colore che vuoi per ottenere l'effetto, almeno per quanto riguarda l'area client dei controlli.

    Originariamente inviato da colde
    Fammi capire: questo oggetto contiene le schede e una parte "contenitore" per l'interfaccia (in cui inserire campi edit, checkbox ecc.). Il contenitore rimane sempre lo stesso ma cambiano le proprietà di visualizzazione dei vari oggetti a seconda della scheda cliccata? Per utilizzare questo oggetto quindi bisogna agire da codice per gestire la relazione "scheda aperta/oggeti da visualizzare". Giusto?
    Il TabControl fornisce un'area unica per i controlli; il contenuto dei controlli (e non i controlli stessi) vanno aggiornati rispondendo alla selezione di una specifica scheda.

    Ad esempio, supponendo che tu abbia una rubrica e che ciascuna scheda corrisponda ad una iniziale, nel controllo che elenca i contatti ti basta ricaricare i dati filtrati per l'iniziale ogni volta che una lettera viene scelta.

    In questo caso, non ha senso replicare il controllo che raffigura l'elenco in ogni pagina: basta averne uno, il cui contenuto cambia in base alla scheda.

    Originariamente inviato da colde
    Questo sarebbe esclusivamente il "contenitore" dei vari oggetti (checkbox, edit, image ecc.) e deve essere accoppiato al TTabControl per poter essere utilizzato. Giusto?
    No. Sono controlli distinti. Il TabControl funziona come precedentemente descritto.
    Il PageControl invece consente di aggiungere al suo interno vari TTabSheet ciascuno dei quali corrisponde ad una scheda e può quindi contenere interfacce utente differenti.

    Originariamente inviato da colde
    Mmmm non ho capito. Io il TTabControl l'ho già allineato alClient ma le schede rimangono fisse, non si allargano per occupare tutta la larghezza del form e anzi la dimensione viene assegnata per default in base alla lunghezza del testo inserito nelle tabs. Sono proprio le tabs che vorrei espandere per tutta la larghezza del contenitore, non l'oggetto TTabControl in sè.
    Sono io a non aver capito.

    Se per "tabs" ti riferisci solo alle "linguette" che selezionano le singole pagine, allora ciò non è possibile (by design), forse nell'evento OnDrawTab è possibile intervenire su questo aspetto ma non ho controllato.

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

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

  7. #7
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301
    Originariamente inviato da colde
    Già che ci sono, in un form ho creato alcuni Panel annidati e uno mi da problemi col bordo, non è allineato con gli altri.
    Probabilmente, il pannello ha un Border o un Bevel di troppo che l'altro pannello non ha.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  8. #8
    Utente di HTML.it L'avatar di colde
    Registrato dal
    Feb 2001
    Messaggi
    1,802
    Originariamente inviato da alka
    Probabilmente, il pannello ha un Border o un Bevel di troppo che l'altro pannello non ha.
    Guarda, ho controllato apposta i Bevel e Border ma ti assicuro che sono identici. E' per questo che non capisco cosa possa essere successo. Rifarò i controlli ma dubito che l'errore derivi da quelle proprietà (anche se teoricamente parlando sono queste proprietà che diversificano lo stile dei bordi).


    Grazie per la spiegazione dei TabControl e PageControl, ora faccio un po di prove e vediamo se riesco a tirare fuori qualcosa di buono. Al limite ti rompo ancora un po le palline
    www.beppegrillo.it
    Il blog di Beppe!!

  9. #9
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301
    Originariamente inviato da colde
    Guarda, ho controllato apposta i Bevel e Border ma ti assicuro che sono identici. E' per questo che non capisco cosa possa essere successo. Rifarò i controlli ma dubito che l'errore derivi da quelle proprietà (anche se teoricamente parlando sono queste proprietà che diversificano lo stile dei bordi).
    Se fai un controllo e non individui il problema, l'unica cosa da fare è...ricontrollare, poichè Delphi non inventa nulla.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  10. #10
    Utente di HTML.it L'avatar di colde
    Registrato dal
    Feb 2001
    Messaggi
    1,802
    Ciao Alka,
    ho cercato di modificare il testo della linguetta (ho usato il TPageControl) visto che per default viene visualizzato di colore nero senza bold o altri stili. Io vorrei che il testo contenuto nella linguetta sia senza stile quando non è attiva, mentre in bold e blu quando è attiva. Ho provato così:

    TTabSheet.Font.Color := clHotLight;

    Ma mi da errore. Idem quando ho tentato di inserire il bold.
    Sai dirmi cosa è sbagliato? Io ho inserito quel codice all'interno della procedura PageControlChange, è giusto?

    Grazie
    www.beppegrillo.it
    Il blog di Beppe!!

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.