EASY OPENGL: DE L'OPENGL DANS LA VCL

cs_Forman Messages postés 600 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 6 avril 2010 - 4 mai 2006 à 01:08
cs_mounjetado Messages postés 66 Date d'inscription lundi 13 mars 2006 Statut Membre Dernière intervention 4 août 2008 - 19 juil. 2007 à 12:46
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/37422-easy-opengl-de-l-opengl-dans-la-vcl

cs_Forman Messages postés 600 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 6 avril 2010 1
4 mai 2006 à 01:08
J'ai oublié de préciser: les TGlKnob sont entièrements dessinés en OpenGl!
cs_shining Messages postés 304 Date d'inscription lundi 30 décembre 2002 Statut Membre Dernière intervention 10 mars 2012
8 mai 2006 à 21:21
Salut,
plutôt sympas ce composant néanmoins ça ne marche pas sous D6, car la propriété "ParentBackground" n'existe pas dans TWinControl !!! or ce serait dommage de penaliser les utilisateurs d'une version antérieur de Delphi7 juste à cause d'une propriété

il faudra donc créer une liste des directives de Delphi et mettre par exemple :

dans TGlWinControl en Published
{$IFDEF DELPHI7UP}
property ParentBackground;
{$ENDIF}

et dans le code il faudra remplacer

procedure TGlWinControl.WMPaint(var Message: TWMPaint);
begin
....
if not ParentBackground then
begin
with ColorToGlColor(Color) do
glClearColor(R,G,B,A);
glClear(GL_COLOR_BUFFER_BIT);
end;

par
{$IFDEF DELPHI7UP}
if not ParentBackground then
{$ENDIF}
begin
with ColorToGlColor(Color) do
glClearColor(R,G,B,A);
glClear(GL_COLOR_BUFFER_BIT);
end;

ainsi les utilisateurs de Delphi5 & 6(voir même D4) pourront aussi profiter du composant

autre chose.. il est préférable d'inclure les fichiers resources soit dans le fichier dpk(juste en dessous de {$R *.res}) soit dans le fichier xx.reg(encore plus simple) c'est plus propre que de les mettres dans les unités !!!
bon courage pour la suite !!
@+
cs_Forman Messages postés 600 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 6 avril 2010 1
9 mai 2006 à 11:16
Merci pour l'info pour D6, je modifierai dés que j'ai le temps.
Pour la resource du composant, c'est effectivement plus "propre" de la mettre dans ce qui n'est que lié au package, mais en même temps la rattacher à l'unité du composant permet une plus grande facilité de maintenance lorsqu'on fait passer l'unité dans un autre package, ça évite d'avoir à éditer la resource pour extraire le bitmap, et le mettre dans la resource du nouveau package. Ceci dit, un bitmap 24x24 en 16 couleurs, ça ne devrait pas trop surcharger les resources des applications!

La solution optimale serait peut-être de rajoutter une directive de compilation pour enlever la ligne si l'unité n'est pas compilée dans un package. Connais-tu une directive pour le faire? J'ai cherché sans succès jusque là...
cs_shining Messages postés 304 Date d'inscription lundi 30 décembre 2002 Statut Membre Dernière intervention 10 mars 2012
9 mai 2006 à 20:15
Salut,
je ne pense pas qu'il existe une telle directive néanmoins il est toujours possible de desactivé la ligne..., il suffit d'inclure un fichier *.inc et mettre par exemple:

fichier MonCompoDirective.inc
...
{$DEFINE ISPACKAGE} tout en sachant que la désactivation se fait avec juste un "."(point) avant le mot reservé "$"
{.$DEFINE ISPACKAGE} <== directive désactivé
...

et dans ton fichier pas

unit MonCompo.pas

{$I MonCompoDirective.inc}

....

{$IFNDEF ISPACKAGE}
{$R MonCompoResource.res}
{$ENDIF}

implementation

où sinon il faut avec la directive {$IFOPT ..}
@+
cs_mounjetado Messages postés 66 Date d'inscription lundi 13 mars 2006 Statut Membre Dernière intervention 4 août 2008
29 août 2006 à 15:58
>>Forman,
ton package m'intéresse au plus haut point, mais peut-il s'utiliser sous Delphi 2005?
et si oui... comment on installe cette bébête?
chaque fois que j'ai voulu installer un package, j'ai eu des soucis!
merci d'avance