Newsgroup: it.comp.lang.delphi
Titolo: Altezza dei form e sistemi operativi

Buongiorno;
Ho realizzato un'applicazione (di cui vado molto fiero) in Turbodelphi
Explorer, ma provandola su macchine diverse per essere sicuro che non ci
siano bugs importanti mi sono accorto di una cosa alquanto fastidiosa:
Se la faccio girare su win Xp tutto ok (d'altronde i vari forms che
compongono l'applicazione sono stati generati e dimensionati per quel
S.O.), se invece la faccio girare su win 2000 compare uno "zoccolo",
ovvero sembra che l'altezza dei form sia maggiore, e me ne accorgo perche'
ci sono panel o stringgrid che sono dimensionati poco meno alti del form
che li contengono.
Se invece faccio girare l'applicazione con Vista, orrore !!! addirittura
mi compare la scrollbar verticale laterale (form + basso del dovuto).
A cosa e' dovuto ? Forse alla differente altezza della barra superiore del
form (non conosco il termine tecnico), quella generalmente colorata di blu
(ed in Vista opaco-trasparente) dove compare icona e nome del programma ?
Se si, come calcolo la sua altezza per i vari S.O. ?
Un immenso grazie a chi mi rispondera' e la mia eterna gratitudine
(elezione a "guru" della settimana) a chi mi riuscira ad aiutare ;-))
Saluti.
Paolo.
--- posted by geoForum on 
http://www.delphiedintorni.it

form (non conosco il termine tecnico)... [cut]
"Barra del titolo"; e' cosi' che si chiama; aiutatemi a trovarne le
dimensioni in delphi....il problema credo sia questo.
Grazie


 (ed in Vista opaco-trasparente) dove compare icona e nome del programma ?
1) come sono impostate le proprietà BorderStyle delle form della tua 
applicazione?
2) se le tue form sono resizabili, ti consiglio *vivamente* di usare le 
proprietà Align con vari pannelli annidati e non affidarti completamente 
agli Anchors. Sono meno flessibili e molto meno comode, ma almeno non 
hai questo tipo di problemi.
Comunque sì, Delphi (almeno la 7) ha dei problemi sia con la dimensione 
della title bar che con la dimensione in dpi dei caratteri di sistema.
Questa è una prova che avevo fatto tempo fa... 
http://www.giopa.net/delphidpi
Sulla seconda immagine noterai che il ClientHeight, inizialmente 
impostato a 333, mettendo il tema di XP diventa 320, mentre l'height 
rimane uguale. Secondo me è un bug, dato che ClientHeight dovrebbe 
restare uguale indipendentemente dal tema, e Height (che comprende la 
titlebar e i margini) dovrebbe variare.
 > Se si, come calcolo la sua altezza per i vari S.O. ?
Credo che ci sia una API per reperirlo, se non ricordo male è 
GetSystemMetrics, parametro SM_CYCaption, ma non so dirti se funziona 
anche con Vista.
-- 
Jax

anche con Vista.
Era lui !!!! E funziona alla grande (in realta' restituisce una unita' in
piu', ma non stiamo a sottilizzare) sotto 2K ed Xp; lo provero' anche in
Vista appena posso.
Che dirti, grazie infinite; non sapevo piu' dove cercare e google finora
non mi aveva aiutato granche' (ma magari a cercare in Inglese....)


 non mi aveva aiutato granche
Il Jax è sempre il Jax... poche parole ma tanta concretezza! :-D
Un saluto!
-- 
Morde

 Un saluto!
Eccerto, Google mi paga anche per questo :D
Ciao Morde!
-- 
Jax


:) allora, ho modificato il programma aggiungendo (o togliendo)
dall'altezza dei forms la funzione che gentilissimamente mi ha indicato
Jax, e devo dire che sotto win 2k l'aspetto non e' malaccio; Vista ancora
non l'ho provato.
Approfittando ancora dell'occasione per salutare entrambi (Jax e Morde) e
ringraziare di nuovo, volevo (visto che siete preparatissimi :)))
formulare un'altro ostico quesito (ma qui la programmazione poco c'entra).
Dicevo prima che la mia applicazione e' stata scritta in TurboDelphi
Explorer, e quindi tale applicazione non sara' soggetta a licenza (cosi'
dice Borland, ed io mi fido).
Pero'(purtroppo) TD Explorer non ha il componente TChart, e per me tale
componente era necessario per visualizzare i miei grafici.
Leggendo su vari NG dedicati (incluso questo) ho letto che era possibile
gestire a "run-time" tutto cio' che non era incluso (componenti esterni);
e cosi' ho fatto.
A "manina" ho quindi incluso il Tchart e tutto funziona, grafici compresi
(magia !) anche se ho TD explorer.
Domanda: (grazie se siete arrivati a leggere fin qui) - A gestire Tchart
in questo modo ci saranno problemi di licenza (con il proprietario di
Tchart, che credo non sia Borland) se (ad es.) un domani volessi vendere
tale programma ?
Grazie.
Ancora saluti.


>anche con Vista.
Se ti interessa l'ho provato con Vista; qui sorge un'altro problema; le
finestre di Vista hanno un bordo piu' spesso degli  altri sistemi
operativi, quindi tutti i calcoli sul dimensionamento delle finestre
lasciano il tempo che trovano.
Inutile controllare con GetSystemMetrics il parametro Sm_CxSizeFrame (o
Cy...) che restituisce lo spessore del "bordo della finestra", perche'
Vista usa un nuovo parametro "Riempimento Bordo" che gli altri S.O. non
hanno. Si trova in pannello di controllo - personalizzazioni - proprieta'
finestra (se non ricordo male...).
Non credo che la funzione GetSystemMetrics contempli questo nuovo
parametro (pero' non ne sono sicuro in quanto non ho macchine con Vista...)
Saluti.
Paolo.
P.S. Per quanto riguarda la questione "Tchart" ho risolto.


 P.S. Per quanto riguarda la questione "Tchart" ho risolto.
Sono contento per te, ma sarebbe bello che dicessi *come* hai risolto :)
-- 
Jax

 Sono contento per te, ma sarebbe bello che dicessi *come* hai risolto :)
Ho interpellato una persona che reputo molto competente in diversi
campi (tra cui l'informatica) che mi ha spiegato che la limitazione
della versione Explorer è che ha solo la palette dei componenti
visuali bloccata con dei componenti di default, ma la VCL con il
componente TChart c'è e si trova in: C:\Programmi\Borland\BDS\4.0\lib
\Chart.dcu.
Qualche mese fa ho scoperto che per usarla ci sono 2 strade: o
gestirla a run-time, o in alternativa creare tutto con una versione di
delphi pro e poi far compilare a TDE.
Questa persona mi ha spiegato che in realta' sto usando qualcosa gia'
presente in TDE, e quindi regolamentato con la stessa licenza di TDE.
Saluti.
Paolo.

 presente in TDE, e quindi regolamentato con la stessa licenza di TDE.
Assolutamente d'accordo...
-- 
Jax