pitch6969
Messages postés57Date d'inscriptionvendredi 24 mars 2006StatutMembreDernière intervention 2 août 2007
-
13 mai 2006 à 15:04
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 2022
-
7 nov. 2006 à 13:43
Bonjour,
Je voudrais créer un fichier de ressources (images BMP) pour un projet .Net
J'ai utiliser le tutorial n°120 qui est vraiment très bien fait. J'ai
téléchargé le source pourvoir comment cela fonctionne (application
win32). J'ai effectuer la même chose pour mon application .Net et cela
ne fonctionne pas.
J'ai créé un fichier client.rc. J'ai ensuite utilisé l'interprétateur
de commande pour générer le fichier .res via la commande brcc32.
Il y a cela d'écrit dans mon fichier .rc :
BITMAP001 BITMAP c:\\image.bmp
Après génération du fichier client.res, je rajoute le fichier
client.res à mon répertoire de projet; j'ajoute la référence dans
mon code. Ensuite quand je veux charger mon image je fais :
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 13 mai 2006 à 15:31
tu n'as pas besoin de déclarer hinstance
hinstance est le Handle de l'instance en cours
en claire si la ressource est dans ton application, hinstance te fournis le handle correspondant
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 13 mai 2006 à 15:58
il faut aussi, après avoir changer le fichier ressource, faire "Construire le Projet"
une compilation seule ne prend pas toujours en comptes les modifications dans le fichier ressource
pour hinstance il ne doit pas être disponible sous .NET (enfin je pense) je vois que cela
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 13 mai 2006 à 16:17
Pour essayer de voir un peut plus loin il faudrait un bout de code et même si c'est possible le code complet
et si toute fois il est trop long tu peux toujours réécrir un code qui ne fait que charger l'image comme ça tu pourras le poster ici.
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 13 mai 2006 à 16:36
Bon c'est ce que craignais : c'est du .NET
je ne me suis pas encore essayer au .NET mais je vais quand même voir si je peu résoudre ton problème.
Par contre il faudra avoir un peut de patience je dois m'absenter pour le reste de l'après midi
mais dès que .. je tiens au courant (positif où négatif)
type TForm1 = class (TForm)
Image1: TImage;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormShow(Sender: TObject);
private { Déclarations privées}
public { Déclarations publiques}
end;
var Form1: TForm1;
RessHandle : THandle = 0;
implementation
{$R *.nfm}
{$R Images.res}
procedure TForm1.FormShow(Sender: TObject);
begin RessHandle := LoadLibrary('Project1.exe');
If RessHandle <> 0 Then Image1.Picture.Bitmap.LoadFromResourceName(RessHandle, 'XpImg');
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
If RessHandle <> 0 Then FreeLibrary(RessHandle);
end;
end.
Bon j'ai fait ça rapidement mais il serait préférable de mettre le code dans un bloc Try Finally
<HR>
n'oubliez pas de cliquer sur Réponse Acceptée
si elle vous convient
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 14 mai 2006 à 00:40
Le code en delphi .Net est quasi identique à celui écrit en Delphi pour Win 32 tant que l'on utilise la VCL .Net.
Son problème ? tout simplement, il avait oublié d'inclure la ressource contenant le bitmap. En effet, la ligne contenant {$R *.res} ne signifie pas "inclure tous les fichiers .res" comme on peut le supposer. Il faut déclarer explicitement l'inclusion d'une ressource et c'est ce qu'a fait Cirec dans son code.
A titre d'information, j'ai découvert récemment qu'en ajoutant le fichier .rc au projet, Delphi (pour Win 32) le compilait tout seul sans avoir besoin de passer par brcc32 !
May Delphi be with you !
<HR color=#008000>
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
var RES : TResourceStream;
begin
RES := TResourceStream.Create;
RES := FindResource(Application.Handle, 'BMP1000');
Bitmap.LoadFromStream(RES);
RES.Free;
end;
éventuellement
bitmap.LoadFromResourceName(Application.Handle, 'BMP1000'); // Mais ça ne fonctionne pas
ou encore :
begin
RES := TResourceStream.Create;
RES := FindResource(Application.Handle, 'BMP1000');
Bitmap.LoadFromStream(RES);
RES.Free;
end;
[Erreur] Unit1.pas(33): E2250 Aucune version surchargée de 'FindResource' ne peut être appelée avec ces arguments
Voila et d'ailleurs si quelqu'un sait pourquoi où comment on accède au ressource de l'application en .NET ?
La seule méthode qui fonctionne c'est celle que j'ai donné dans mon précédant post
moi ce qui m'eclate le plus dans ce topic c'est ça :
BITMAP001 BITMAP c:\\image.bmp
Si tu avais lu la suite tu aurais lu ceci :
"Après génération du fichier client.res, je rajoute le fichier client.res à mon répertoire de projet; j'ajoute la référence dans mon code."
Ce qui veut dire que la ressource a été compilé donc soit c'est une erreur de copie où BRCC32 l'accèpte tel quel
En tous cas c'est la première fois que je vois une réponse en vert qui ne fonctionne pas