PDA

View Full Version : [Delphi] Interfaccia grafica


Traxsung
26-09-2005, 00:28
Mi sono sempre chiesto come sia possibile modificare l'interfaccia grafica di un programma scritto in delphi... andando fuori quelli che sono i componenti standard (form,button ecc). E' possibile realizzare delle interfaccia grafiche con appositi programmi quali photoshop ad esempio per poi farli diventare parte integrante di un programma??

71104
26-09-2005, 00:42
mi sembra di aver capito che hai fatto due domande diverse... :mbe:
1) come modificare l'interfaccia di un programma fatto in Delphi (del quale suppongo non hai i sorgenti o i DFM)
2) come creare un'interfaccia che non usa i controlli standard di Windows wrappati nella VCL, ma dei controlli disegnati con programmi grafici (ad esempio bottoni belli e futuristici pieni di sfumature e tutta quella roba lì).
risposte:
1) devi usare apposite funzioni API come SetWindowPos e MoveWindow (se ben ricordo), accessibili anche da Delphi;
2) un'interfaccia grafica simile va gestita manualmente: dopo aver disegnato i controlli (o le varie parti che li compongono) con un programma di grafica, devi riprodurre le immagini realizzate nel DC della tua finestra (in termini VCL: nel canvas della tua form) e gestirli in maniera completamente manuale.

Traxsung
26-09-2005, 01:16
un'interfaccia grafica simile va gestita manualmente: dopo aver disegnato i controlli (o le varie parti che li compongono) con un programma di grafica, devi riprodurre le immagini realizzate nel DC della tua finestra (in termini VCL: nel canvas della tua form) e gestirli in maniera completamente manuale.

Puoi spiegarti meglio??
Supponiamo che io abbia realizzato il mio bel bottoncino tutto futuristico col photoshop.... come faccio a farlo diventare parte integrante del mio programma??

71104
26-09-2005, 01:24
non ricordo affatto i nomi delle procedure e funzioni da usare (sono anni che non uso Delphi), ma devi semplicemente caricare l'immagine dal file in un TBitmap e disegnarla sul canvas... il focus, gli eventi del mouse e quelli della tastiera vanno gestiti manualmente: nell'handler di OnMouseMove della form devi controllare le coordinate correnti e vedere se ti trovi sul bottone; se ti ci trovi sopra puoi ad esempio dargli l'illuminazione; poi se l'utente clicca devi ridisegnarlo abbassato, e quando rialza devi ridisegnalo normale. insomma, devi creare da zero un motore per l'interfaccia grafica...
inoltre siccome gli oggetti grafici della VCL (tipo TBitmap) consumano parecchie risorse di sistema (ogni TBitmap occupa un DC, una pen, un brush e naturalmente una DIB section :)) ti consiglio di creare in tutto solo 3 immagini: nella prima metti tutte le componenti della tua interfaccia in stato normal, nella seconda tutte in stato "mouse over", e nella terza tutte "mouse down" :)
naturalmente ad ogni componente assegni delle coordinate fisse all'interno delle immagini, fai un puzzle insomma :p