COMPOSANT WEBMEMO

sylvunix Messages postés 93 Date d'inscription mardi 11 avril 2006 Statut Membre Dernière intervention 4 mars 2009 - 11 avril 2006 à 20:04
cs_shining Messages postés 304 Date d'inscription lundi 30 décembre 2002 Statut Membre Dernière intervention 10 mars 2012 - 19 déc. 2012 à 21:01
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/36907-composant-webmemo

cs_shining Messages postés 304 Date d'inscription lundi 30 décembre 2002 Statut Membre Dernière intervention 10 mars 2012
19 déc. 2012 à 21:01
Salut,
je prends note de vos commentaires et dès que possible une mise à jour sera disponible !!!
Nota: en attendant veuillez tenir compte de ceci, la version Pro de Delphi contient déjà une unité contenant la classe TWebBrowser, donc avant toute compilation du projet veuillez suivre ces étapes:

1) si votre version est une version Pro, veuillez éditer le fichier "SfcWebMemo.inc" et procéder au remplacement de cette ligne
{.$DEFINE WebMemoDelphiPro} par
{$DEFINE WebMemoDelphiPro}

concernant la version Perso de Delphi, le fichier "WebBrowserPackage.zip" devrait en principe résoudre le problème mais effectivement comme vient de le faire remarqué Kofina, merci à lui !!!, le fichier "WebBrowserPack.dpk" contient des liens incorrects(du moins pour certaines personnes parmi vous)

en attendant la mise à jour, veuillez éditer le fichier "WebBrowserPack.dpk" et tout simplement remplacer ces lignes

contains
SHDocVw_TLB in '..\..\..\Imports\SHDocVw_TLB.pas',
MSHTML_TLB in '..\..\..\Imports\MSHTML_TLB.pas';

par

contains
SHDocVw_TLB in 'SHDocVw_TLB.pas',
MSHTML_TLB in 'MSHTML_TLB.pas';

en principe avec cette mise au point, vous ne devrez pas avoir de problème d'installation.

veuillez m'excuser pour tout le retard !!!, je n'avais plus eu de connexion internet depuis un bon moment, et j'ai mis de côté Delphi pour l'apprentissage du c++ !!!, de plus je vois qu'il y a de nouvelles version de Delphi lol j'ai du pain sur la planche :)
@++
kofina Messages postés 1 Date d'inscription jeudi 29 mars 2007 Statut Membre Dernière intervention 19 décembre 2012
19 déc. 2012 à 12:57
Salut,
votre composant m'a été très utile.

Merci beaucoup.

Note: pour l'install sous Delphi, j'ai dû retirer puis ajouter à nouveau les unités qui marquait des erreurs. C'était juste les chemin d'accès qui n'étaient pas bon.

Merci encore.

Jean-Paul Koffi
assemple Messages postés 65 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 16 décembre 2011
30 avril 2011 à 18:01
Impossible d'installer WebMemoPackD7.dpk dans Delphi 7 Pro
Erreur de compilation, unités non trouvé (xxx_TLB)

Quelqu'un peut-il m'aider ?
devjd Messages postés 3 Date d'inscription jeudi 23 février 2006 Statut Membre Dernière intervention 21 décembre 2009
21 déc. 2009 à 12:21
J'avais oublié un message d'erreur qui apparait souvent :
"Défaillance irrémédiable" !
devjd Messages postés 3 Date d'inscription jeudi 23 février 2006 Statut Membre Dernière intervention 21 décembre 2009
21 déc. 2009 à 11:42
Salut,
A l'occasion d'un nouveau projet je reviens sur ce composant super interressant.
MAIS !
Après installation/compilation de la démo sous Delphi 2005 la démo ne me permet pas d'enregistrer les modifications ! le fichier reste vide !
Est-ce lié au blocage de l'édition du DHTML sous IE8 ?
J'ai fais des tests sous XP et Vista (tous les 2 avec IE8) et rien n'y fait.
Parfois il y a un message faisant référence à MSHTML.DLL mais ce n'est pas systématique.
Autre info : si je charge un fichier HTML complet, le mode édition est impossible.

Help !
cs_shining Messages postés 304 Date d'inscription lundi 30 décembre 2002 Statut Membre Dernière intervention 10 mars 2012
14 sept. 2008 à 19:43
Salut à vous,

Désolé pour le retard c'est que j'ai eu des soucis avec mon pc (Disques durs h.s ect), du coup de nombreux composants qui était déjà mises à jour sont partis en fumée, dont WebMemo qui en était à la version bêta 2.0, mais c'est pas bien grave car il me reste un backup de la version beta 1.6 qui elle supporte la gestion des CSS via un composant TSfcCSSManager, Image Background, Border Style , une petite gestion pour l'insertion des tableaux(en beta test), de nombreux événements on été ajoutés , OnDocChanged(par crc32), OnKeyPress(permet également d'interdire une action, par ex: interdire les chiffres, retour chariot ect(vk_return) .. ), OnKeyDown , OnKeyUp , OnBeforeActicate(permet d'interdire la selection tout en autorisant l'usage du menu-contextuel, le seul hic c'est que c'est irréversible car cette évènement se déclenche avant l'initialisation du composant, une fois le composant est initialisé en mode "selection interdite" il semblerait qu'on ne puisse plus revenir en arrière, bon ya surement une solution j'ai pas cherché !!!), ya aussi une gestion de la transparance des fichiers png mais pour le moment ça coince quelque part ... sinon j'ai cherché si il y avait un truc sur le net comparable à TWebBrower et je suis tombé sur http://terrainformatica.com/htmengine/screenshots.whtm à peine 624k la dll , elle consomme beaucoup moins de resource qu'internet explorer, ell gère parfaitement bien la transparence des fichiers png mais là encore problème car elle ne prend pas en charge les fichiers css, le projet à été abandonné bien que la dll et la doc circule encore sur le net mais il n'existe pas de wrapper en delphi, et il doit y avoir de nombreuses interfaces com.

Tukkkko:le zip n'est pas corrompu re-vérifie !!!

b20n00:ça me rappel que j'au oublié de rendre public la propriété Enabled, essaie donc WebMemo.Enabled := False en runtime, sinon comme cité plus haut il est possible d'interdire la selection lors de l'initialisation du composant(pour un mode loggeur par exemple)
voilà reste plus qu'à attendre un peu la mise la jour

Bonne prog à vous @+
b20n00 Messages postés 19 Date d'inscription vendredi 31 août 2007 Statut Membre Dernière intervention 12 août 2009
13 sept. 2008 à 13:50
Salut,
Je te propose d'ajouter trois options:
- est-ce qu'on peut permettre et empecher la copie du texte à partir du composant en fonction de l'état ReadOnly de votre composant? si readonly est false pas de copier/coller mermi.
car j'ai remarqué que votre composant permet la copie par ctrl+c et ctrl+Ins malré que j'ai désactivé la copie par menu alors que le composant WebBrowser ne le permet pas.
- Pour le texte n'est-il pas possible de le justifié?
- Intégrer les tableau.
Tukkkko Messages postés 29 Date d'inscription lundi 22 mars 2004 Statut Membre Dernière intervention 29 janvier 2007
16 juin 2008 à 09:47
Salut à toi!

Je suis intéressé par ton projet!
Ceci dit, il semble que le zip soit corrompu :-(
T'es-il possible de le mettre à jour, STP?

Bonne journée!

Tukkkko
cs_shining Messages postés 304 Date d'inscription lundi 30 décembre 2002 Statut Membre Dernière intervention 10 mars 2012
16 mars 2007 à 14:47
Salut sylvunix,

décidemment j'ai trop abusé du capuccino ;)
tu as tout à fait raison pour le CRC, je pense qu'on peut pas faire autrement pour l'instant !!!.

bon j'avais effectué quelques tests

property Modified : Boolean read GetDocModified;

function TCustomWebMemo.GetDocModified: Boolean;
begin
result :not(FDocSize GetDocSize);
end;

avec bien entendu des routines pour mettre a jour FDocSize, et là il ne reste plus qu'a changer FDocSize par FDocHash

il reste aussi l'optimisation de l'algo Crc32 en asm, car le but c'est d'avoir la signature très rapidement

donc @+ pour l'update !
sylvunix Messages postés 93 Date d'inscription mardi 11 avril 2006 Statut Membre Dernière intervention 4 mars 2009
16 mars 2007 à 07:18
Salut Shining,

Désolé de mettre laissé aller et d'avoir sorti la grosse artillerie ! Mais une bonne scéance de psychanalyse me permettra peut-être de te faire comprendre les raisons de cette dérive !

En fait, contrôler la longueur du texte n'était pas suffisant car il fallait pouvoir détecter les changements de texte du type 'delphi' par 'azerty'. Un simple balayage du type somme n'était pas non plus suffisant car il fallait également détecter les changements du type 'bonjour' par 'jourbon'. C'est pourquoi j'ai fini par sortir le crc32.

Il est vrai que cela consomme des ressources. Mais en introduisant une variable booléenne privée FDocChanged qui mémoriserait si le document a été déjà modifié, on pourrait éviter de dérouler l'argorithme inutilement.

function TCustomWebMemo.GetDocChanged: Boolean;
var
Crc32: LongInt;
begin
Result := FDocChanged;

// Réalise un Crc32 sur le texte complet uniquement si le document n'a pas déjà été modifié
if not(FDocChanged) then
begin
Crc32 := GetDocCrc32;
Result :not(Crc32 FDocCrc32);
FDocCrc32 := Crc32;
end;
end;

procedure TCustomWebMemo.ResetDocChanged;
begin
FDocChanged := false;
FDocCrc32 := GetDocCrc32;
end;

Il y a également dans mon subconcient un besoin refoulé que j'arrive maintenant à exprimer clairement. Mais je pense que cela relève plutôt du fantasme que de la réalité car je ne vois pas techniquement comment on pourra le coder. L'idée serait d'avoir un évènement OnDocChanged ...

@+
cs_shining Messages postés 304 Date d'inscription lundi 30 décembre 2002 Statut Membre Dernière intervention 10 mars 2012
15 mars 2007 à 13:58
Salut Sylvunix,
Wow tout ça ?? lol, bah mon idée c'était a peut près ça, sauf que la méthode du crc devrait être le dernier recourt !!!, ça prend pas mal de resources !!!, et bien en faite je crois qu'il ya plus simple, je viens de testé la méthode qui utilise un StreamAdapter qui permet l'accès au flux du WebBrowser(via MemoryStream), et ça permet donc d'avoir la taille du document ensuite même système que toi on compare la taille initiale et celle en cours !!!, il est maintenant possible d'avoir des infos sur le client web, AppName, UserAgent, Java is Enabled ?, Cookie, Vitesse de Connection ect..., et pour plus tard.. une gestion des tableaux, enfin bref ya quelques modifications et la mise a jour sera dispo dans 2/3 jours.

@+
sylvunix Messages postés 93 Date d'inscription mardi 11 avril 2006 Statut Membre Dernière intervention 4 mars 2009
14 mars 2007 à 17:38
Salut Shining,

Pour revenir à notre dernier sujet, j'ai testé les ajouts suivants. Pourrais-tu me donner ton avis d'expert.

sylvunix

P.S. : La propriété DocChanged est en écriture car dans mon application, j'ai besoin d'y accéder.

Dans la partie private de la définition de la classe TCustomWebMemo :

FDocCrc32 : LongInt;
function GetDocChanged: Boolean;

Dans la partie protected de la définition de la classe TCustomWebMemo :

property DocChanged : Boolean read GetDocChanged;


Dans l'implémentation :

const TableCrc32:array[0..255] of longint=(
$00000000, $77073096, $ee0e612c, $990951ba, $076dc419, $706af48f,
$e963a535, $9e6495a3, $0edb8832, $79dcb8a4, $e0d5e91e, $97d2d988,
$09b64c2b, $7eb17cbd, $e7b82d07, $90bf1d91, $1db71064, $6ab020f2,
$f3b97148, $84be41de, $1adad47d, $6ddde4eb, $f4d4b551, $83d385c7,
$136c9856, $646ba8c0, $fd62f97a, $8a65c9ec, $14015c4f, $63066cd9,
$fa0f3d63, $8d080df5, $3b6e20c8, $4c69105e, $d56041e4, $a2677172,
$3c03e4d1, $4b04d447, $d20d85fd, $a50ab56b, $35b5a8fa, $42b2986c,
$dbbbc9d6, $acbcf940, $32d86ce3, $45df5c75, $dcd60dcf, $abd13d59,
$26d930ac, $51de003a, $c8d75180, $bfd06116, $21b4f4b5, $56b3c423,
$cfba9599, $b8bda50f, $2802b89e, $5f058808, $c60cd9b2, $b10be924,
$2f6f7c87, $58684c11, $c1611dab, $b6662d3d, $76dc4190, $01db7106,
$98d220bc, $efd5102a, $71b18589, $06b6b51f, $9fbfe4a5, $e8b8d433,
$7807c9a2, $0f00f934, $9609a88e, $e10e9818, $7f6a0dbb, $086d3d2d,
$91646c97, $e6635c01, $6b6b51f4, $1c6c6162, $856530d8, $f262004e,
$6c0695ed, $1b01a57b, $8208f4c1, $f50fc457, $65b0d9c6, $12b7e950,
$8bbeb8ea, $fcb9887c, $62dd1ddf, $15da2d49, $8cd37cf3, $fbd44c65,
$4db26158, $3ab551ce, $a3bc0074, $d4bb30e2, $4adfa541, $3dd895d7,
$a4d1c46d, $d3d6f4fb, $4369e96a, $346ed9fc, $ad678846, $da60b8d0,
$44042d73, $33031de5, $aa0a4c5f, $dd0d7cc9, $5005713c, $270241aa,
$be0b1010, $c90c2086, $5768b525, $206f85b3, $b966d409, $ce61e49f,
$5edef90e, $29d9c998, $b0d09822, $c7d7a8b4, $59b33d17, $2eb40d81,
$b7bd5c3b, $c0ba6cad, $edb88320, $9abfb3b6, $03b6e20c, $74b1d29a,
$ead54739, $9dd277af, $04db2615, $73dc1683, $e3630b12, $94643b84,
$0d6d6a3e, $7a6a5aa8, $e40ecf0b, $9309ff9d, $0a00ae27, $7d079eb1,
$f00f9344, $8708a3d2, $1e01f268, $6906c2fe, $f762575d, $806567cb,
$196c3671, $6e6b06e7, $fed41b76, $89d32be0, $10da7a5a, $67dd4acc,
$f9b9df6f, $8ebeeff9, $17b7be43, $60b08ed5, $d6d6a3e8, $a1d1937e,
$38d8c2c4, $4fdff252, $d1bb67f1, $a6bc5767, $3fb506dd, $48b2364b,
$d80d2bda, $af0a1b4c, $36034af6, $41047a60, $df60efc3, $a867df55,
$316e8eef, $4669be79, $cb61b38c, $bc66831a, $256fd2a0, $5268e236,
$cc0c7795, $bb0b4703, $220216b9, $5505262f, $c5ba3bbe, $b2bd0b28,
$2bb45a92, $5cb36a04, $c2d7ffa7, $b5d0cf31, $2cd99e8b, $5bdeae1d,
$9b64c2b0, $ec63f226, $756aa39c, $026d930a, $9c0906a9, $eb0e363f,
$72076785, $05005713, $95bf4a82, $e2b87a14, $7bb12bae, $0cb61b38,
$92d28e9b, $e5d5be0d, $7cdcefb7, $0bdbdf21, $86d3d2d4, $f1d4e242,
$68ddb3f8, $1fda836e, $81be16cd, $f6b9265b, $6fb077e1, $18b74777,
$88085ae6, $ff0f6a70, $66063bca, $11010b5c, $8f659eff, $f862ae69,
$616bffd3, $166ccf45, $a00ae278, $d70dd2ee, $4e048354, $3903b3c2,
$a7672661, $d06016f7, $4969474d, $3e6e77db, $aed16a4a, $d9d65adc,
$40df0b66, $37d83bf0, $a9bcae53, $debb9ec5, $47b2cf7f, $30b5ffe9,
$bdbdf21c, $cabac28a, $53b39330, $24b4a3a6, $bad03605, $cdd70693,
$54de5729, $23d967bf, $b3667a2e, $c4614ab8, $5d681b02, $2a6f2b94,
$b40bbe37, $c30c8ea1, $5a05df1b, $2d02ef8d);

function CalculCrc32(Octet: Byte; Crc: LongInt): LongInt;
begin
CalculCrc32 := TableCrc32[byte(Crc xor LongInt(Octet))] xor ((Crc shr 8) and $00ffffff);
end;

Dans la partie implémentation, ajout des lignes suivantes :

function TCustomWebMemo.GetDocCrc32: LongInt;
var
Index: Word;
Crc32: LongInt;
begin
// Calcule le crc32 dur les données au format HTML
Crc32 := $ffffffff;
for Index := 0 to length(Document.Body.innerHTML)-1 do
Crc32 := CalculCrc32(Ord(Document.Body.innerHTML[Index]), Crc32);
Result := Crc32;
end;

function TCustomWebMemo.GetDocChanged: Boolean;
var
Crc32: LongInt;
begin
// Réalise un Crc32 sur le texte colmplet
Crc32 := GetDocCrc32;
Result :not(Crc32 FDocCrc32);
FDocCrc32 := Crc32;
end;

procedure TCustomWebMemo.ResetDocChanged;
begin
FDocCrc32 := GetDocCrc32;
end;

Dans la partie implementation, ajout de ResetDocChanged dans les méthodes suivantes.

procedure TCustomWebMemo.Clear;
begin
if ReadOnly = False then
begin
Document.Body.innerHTML := '';
ResetDocChanged;
end
else
ClearWebCtrl;
FLines.Clear;

end;

procedure TCustomWebMemo.LoadFromFile(const FileName: String);
begin
Clear;
FLines.LoadFromFile(FileName);
WebCtrl.OleObject.Document.WriteLn(FLines.Text);
ResetDocChanged;
end;

procedure TCustomWebMemo.SaveAs(const DefaultFileName: String);
begin
if CanDo then
begin
Document.ExecCommand('SaveAs' , False , DefaultFileName);
ResetDocChanged;
end;
end;
cs_shining Messages postés 304 Date d'inscription lundi 30 décembre 2002 Statut Membre Dernière intervention 10 mars 2012
4 mars 2007 à 11:41
Salut,
Arf oui c'est vrai que la solution du LignesChange n'est valable que lorsque on utiliser Lines.Add() logique :/, ceci dit je ne vois aucune propriété dans la MSDN concernant la modification du document !!!, bon y aura toujours un moyen, par exemple mettre une propriété Modified a false lors de l'ouverture d'un document, ou lors d'un "Clear", et changer l'événement OnKeyDown par OnKeyUp, quitte même a mettre un mini crc, et de comparer a la fin le crc initial et celui en cours car l'accès du flux interne du contrôle WebBrowser est assez simple !!!, je vais voir si y'a pas plus simple !!!
@+
sylvunix Messages postés 93 Date d'inscription mardi 11 avril 2006 Statut Membre Dernière intervention 4 mars 2009
2 mars 2007 à 09:30
Salut Shining,

J'ai testé tes solutions 2 et 3, la première ne me semblant pas appropriée.

La troisième, celle qui me semble la plus adaptée, me pose un petit problème : la méthode LinesChange n'est jamais appelée.

Pour la seconde, c'est un peu la galère car on récupère vraiment toutes les actions du clavier. Ce qui est un peu normal. Par contre comment faire le tri ? Existe-t-il des fonctions comme en c qui permettent de savoir si un caractère peut être affiché ?

P.S. : Concernant le problème ShowFindDialog, c'est mon I.E. qui a totalement explosé sur l'une de mes machines (plus d'impression ni la possibilité d'ouvrir dans une nouvelle fenêtre) !

Merci

a+
cs_shining Messages postés 304 Date d'inscription lundi 30 décembre 2002 Statut Membre Dernière intervention 10 mars 2012
23 févr. 2007 à 00:18
Salut Sylvunix,

oui en effet pour l'instant il n'y a pas de fonction Changed

cependant il existe plusieurs méthodes pour savoir si le texte effectivement été modifié

1)l'événement WebMemo.OnSelectionChange se déclenche lorsque l'utilisateur a effectué une selection du texte, celà permet de mettre à jour par exemple les boutons de la toolbar pour savoir si la selection est en gras, italic ect..., mais cela ne veut pas forcémment dire que le texte a été modifié !!!

2)l'événement WebMemo.OnKeyDown(Sender: TObject; var Key: TWebMemoKeyInfo) se déclenche lorsque l'utilisateur frappe sur une touche une touche quelconque

Key.Code renvoie la valeur word du code ascii ed la touche
Key.Shift indique l'état des touches Alt, Ctrl, Maj et des boutons de la souris.

Nota : il sera bientôt possible d'interdire l'appuie d'une touche en modifiant tout simplement la valeur de Key.Code
par exemple if Key.Code = VK_RETURN then Key.Code :=0, mais pour l'instant cette exemple ne marche pas(un petit oubli de ma part ^^)

3) dans la classe TCustomWebMemo
on peut ajouter une nouvelle propriété DoChanged
property DocChanged : Boolean read FDocChanged write FDocChanged;

ensuite
procedure TCustomWebMemo.LinesChange(Sender: TObject);
begin
...
ici FDocChanged := True;
biensur il faut que la fonction Clear,LoadFromFile puisse remettre à false l'attribut DocChanged
end;

concernant ShowFindDialog je n'ai aucun probleme avec XP et Win98 ca marche impec, verifie ta version d'internet explorer !!!, dans tous les cas il est préférable voir même indispensable d'avoir une version 5.5 ou ultérieur !!

@+
sylvunix Messages postés 93 Date d'inscription mardi 11 avril 2006 Statut Membre Dernière intervention 4 mars 2009
22 févr. 2007 à 21:11
Bonsoir Shining,

Je me suis effectivement légèrement planté dans ma question. Il s'agissait bien d'un problème sur ShowFindDialog. Problème qui d'ailleurs ne se pose que sur l'un de mes PC. Toutes mes excuses !

J'ai répondu avec un peu de retard car je cherche comment ajouter une fonctionnalité qui fait défaut. Ce serait l'attribut Changed qui indiquerait si oui ou non le texte a été changé.

J'ai bien une petite piste qui serait d'utiliser l'état du Undo (si une action peut être annulée alors le document a été changé !) mais je ne sais pas comment effacer la liste des actions mémorisées (pour désactiver l'attribut Changed).

Aurais-tu une autre piste ?

sylvunix
cs_shining Messages postés 304 Date d'inscription lundi 30 décembre 2002 Statut Membre Dernière intervention 10 mars 2012
9 févr. 2007 à 23:53
Salut sylvunix,

Bon je me permet de te répondre ici plutôt que dans ton mp afin d'en faire profiter à d'autres personnes qui pourrait avoir le même problème.

Question : "Je viens de constater un petit problème : la fonction WebMemo.ShowFontDialog ne déclenche pas la boîte de dialogue espérée"

Réponse : il me semble qu'il y a une petite confusion de ta part puisque en effet il n'ya pas de fonction ShowFontDialog a proprement dit dans l'interface WebMemo, je crois que tu as confondu l'appel à la fonction ShowFontDialog avec WebMemo.ShowFindDialog qui n'a bien sûr rien à voir avec la boîte de dialogue de la police.

étant donné qu'on veut changer la font du texte Selectionné j'ai mis cette fonction dans la partie WebMemo.SelRange.FontDialog, pourquoi dans SelRange et non dans WebMemo.ShowFontDialog ?, tout simplement que dans SelRange on peut changer à la fois la police ainsi que sa taille sans affecté tout l'ensemble du contenu HTML mais en modifiant uniquement la partie selectionée !!! ;)
@+
sylvunix Messages postés 93 Date d'inscription mardi 11 avril 2006 Statut Membre Dernière intervention 4 mars 2009
9 févr. 2007 à 15:29
Bonjour Shining,

Je ressort ton composant des cartons à l'occasion d'un nouveau projet.

Je viens de constater un petit problème : la fonction WebMemo.ShowFontDialog ne déclenche pas la boîte de dialogue espérée. Je suis en Delphi 7 Professionnel sous XP. Cela fonctionne-t-il de ton côté ?

sylvunix
cs_shining Messages postés 304 Date d'inscription lundi 30 décembre 2002 Statut Membre Dernière intervention 10 mars 2012
13 avril 2006 à 19:30
Nota : prochainement un WebChatMemo et un ToolTip utilisant tout deux ce même composant ainsi que le composant EmoticonManager !!!
cs_shining Messages postés 304 Date d'inscription lundi 30 décembre 2002 Statut Membre Dernière intervention 10 mars 2012
11 avril 2006 à 21:26
il faut demander ça à microsoft qui n'assure plus la compatibilité des TimageList avec les versions antérieur à Windows 2000/XP !!! :/
sylvunix Messages postés 93 Date d'inscription mardi 11 avril 2006 Statut Membre Dernière intervention 4 mars 2009
11 avril 2006 à 20:04
Bravo pour ce composant très intéressant.

Le source du programme de démonstration pose quelques soucis lors du chargement (problème sur une ressource image). Serait-il possible de disposer du fichier .bmp d'origine afin de le réintégrer ?
La toolbar sans dessin, ça craint un peu !
Rejoignez-nous