2009-05-12 6 views
8

Je travaille sur une application, beaucoup d'éléments de l'interface utilisateur seront dans un TWebBrowser. J'ai donc pensé ajouter une interface utilisateur jQuery pour la rendre plus facile pour moi.ayant une infrastructure jQuery UI dans TWebBrowser dans Delphi

j'ai pu insérer JQuery et l'interface utilisateur fichier javascript grâce à http://www.jasontpenny.com/blog/2008/11/21/jquery-in-a-twebbrowser-in-a-self-contained-delphi-app/

Je suis coincé à feuilles de style, je l'ai fait

doc2 := Web.Document as IHTMLDocument2; 
    doc2.createStyleSheet(FileProtocol(AppPath('templates\css\' + JQueryUITheme + '\jquery-ui-1.7.1.custom.css')), 0); 
    // FileProtocol and AppPath are to return a current application path and converted to FileProtocol URL format. 

le Javascripts a fonctionné très bien, mais je incapable d'obtenir les images à travail. J'ai également essayé de StringReplace toutes les références d'images, mais aucun résultat.

stylesheet.cssText := StringReplace(stylesheet.cssText, 
    'url(images/','url(' + FileProtocol(AppPath('templates/css/' + 
    JQueryUITheme + '/images/')), [rfReplaceAll]); 

Quelqu'un at-il essayé quelque chose de similaire?

Répondre

7

Exécution d'un test rapide, cela semble fonctionner.

Etes-vous sûr que FileProtocol() et AppPath() fonctionnent comme ils le devraient?

ceux-ci semblent fonctionner pour moi:

function FileProtocol(const s: String): String; 
begin 
    Result := 'file:///' + StringReplace(s, '\', '/', [rfReplaceAll]); // ' 
end; 

function AppPath(const s: String): String; 
begin 
    Result := IncludeTrailingPathDelimiter(ExtractFilePath(Forms.Application.ExeName)) + s; 
end; 

[Mise à jour]

J'ai téléchargé JQuery UI de la page d'accueil lien de téléchargement [Current (stable)], et a obtenu l'image animée de http://jqueryui.com/demos/progressbar/#animated

Voir le projet de démonstration sur GitHub: http://github.com/jasonpenny/democode/tree/057f0ad22fc5c3272909de346b6e67b0444d8981/JQueryUIProgBar

+0

Bizarre, je n'arrive toujours pas à voir apparaître les images, quand j'appelle la fonction $(). Progressbar depuis mon application Delphi, je ne vois que la couleur de la boîte div mais pas celle de la barre de progression. Comment avez-vous inséré la feuille de style? createStyleSheet n'est-ce pas? – Darkerstar

+0

J'ai remarqué dans ma démo que la commande était importante, je devais ajouter le style d'image d'arrière-plan à une feuille de style ultérieure (le deuxième paramètre de createStyleSheet()) – jasonpenny

+0

Je viens de trouver des graphiques sur les boutons qui fonctionnent bien avec mon code existant. :), je ne sais pas pourquoi la barre de progression ne fonctionne pas. Quoi qu'il en soit, j'ai utilisé un autre plugin de barre de progression, qui fonctionne bien maintenant. – Darkerstar

1

Votre HTML a-t-il un tag <base href="" />? Comme il semble que les chemins relatifs sont bustes.

-1

Visitez CGDevTools ils ont une suite de composants jQuery à utiliser avec Intraweb.