IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 Delphi Discussion :

Utiliser un Tcolor pour le background d'une page html créee en Delphi !


Sujet :

Delphi

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 591
    Détails du profil
    Informations personnelles :
    Âge : 72
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 591
    Par défaut Utiliser un Tcolor pour le background d'une page html créee en Delphi !
    Bonjour à toutes et à tous,

    Avec Delphi, je crée une page Html et j'aurai bien voulu avec un TcolorDialog, mettre une couleur sur le fond de ma page qui recevra mes vignettes.

    Avec ce code, j'obtiens des couleurs mais pas celle que j'ai choisie.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    result.add('</result><body bgcolor="'+colortostring(colordialog1.color)+'"><center>
    Si je fait ceci cela fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    result.add('</result><body bgcolor="#FFFFF"><center>
    J'ai aussi essayé avec la couleur d'un Tshape mais sans résultat.

    Merci si quelqu'un pense que c'est possible.

    @+,

    Cincap

  2. #2
    Membre averti
    Homme Profil pro
    Informatique industrielle
    Inscrit en
    Novembre 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Informatique industrielle

    Informations forums :
    Inscription : Novembre 2007
    Messages : 41
    Par défaut
    Salut,

    La fonction colortostring c'est toi qui l'a codé ou c'est une fonction fourni par delphi?
    Si c'est toi peux tu donner le code.

    Merci

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 591
    Détails du profil
    Informations personnelles :
    Âge : 72
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 591
    Par défaut
    @ Iznogood12, merci de ta réponse, c'est une fonction qui existe dans Delphi.

    Je teste aussi de mon côté.

    @+,

    Cincap

  4. #4
    Membre averti
    Homme Profil pro
    Informatique industrielle
    Inscrit en
    Novembre 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Informatique industrielle

    Informations forums :
    Inscription : Novembre 2007
    Messages : 41
    Par défaut
    OK je ne connaissais pas cette fonction.

    Alors fait un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ShowMessage (ColorToString (ColorDialog1.Color);
    Et tu verras que si par exemple tu choisis le rouge il te retourne clRed au lieu d'une valeur hexa.
    De plus, quand il te retourne une valeur hexa il te retourne 8 caractères au lieu de 6 et sous le format "Bleu Vert Rouge" au lieu de "Rouge Vert Bleu".
    Et pour finir il te retourne une valeur hexa avec le caractère "$" en début au lieu de "#" (mais la je sais pas si c'est important ou pas).

    J'espère que ça va t'aider.

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    409
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 409

  6. #6
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Par défaut
    Bonjour,

    Si ColorToString Delphi renvoie par exemple : $008C01DC
    pour HTML il faut convertir en #DC018C
    Si ColorToString Delphi renvoie par exemple une string de texte clAqua, clFuchsia on est d'abord obligé d'en reconstituer la string de la valeur hexa et comme je me suis farci ceci il y a quelques jours voici les 16 :

    Argent $00C0C0C0 (clSilver)
    Blanc pur $00FFFFFF (clWhite)
    Bleu pur $00FF0000 (clBlue)
    Cyan pur $00FFFF00 (clAqua)
    Gris fer $00808080 (clGray)
    Jaune pur $0000FFFF (clYellow)
    Magenta pur $00FF00FF Wikipedia (clFuchsia Delphi)
    Marine pur $00800000 (clNavy)
    Marron clair $00000080 (clMaroon)
    Noir pur $00000000 (clBlack)
    Olive pur $00008080 (clOlive)
    Rouge pur $000000FF (clRed)
    Sarcelle $00808000 (clTeal)
    Vert moyen $00008000 (clGreen)
    Vert pur $0000FF00 (clLime)
    Violet $00800080 (clPurple)

    Avec Delphi, ce qui est intéressant avec var sColor: string; vColor : tColor; c'est les deux conversions suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    sColor:=ColorToString(vColor);
    vColor:=StrToInt(sColor);
    A+.
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  7. #7
    Membre averti
    Homme Profil pro
    Informatique industrielle
    Inscrit en
    Novembre 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Informatique industrielle

    Informations forums :
    Inscription : Novembre 2007
    Messages : 41
    Par défaut
    Citation Envoyé par Gilbert Geyer Voir le message
    Bonjour,

    Si ColorToString Delphi renvoie : $008C01DC
    HTML : #DC018C
    C'est ce que j'ai dit mais de manière plus simple a comprendre

  8. #8
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Par défaut
    Re-salut,

    Iznogood12 : C'est ce que j'ai dit mais de manière plus simple a comprendre
    Ce n'était qu'une confirmation colorée ... et en plus mon message n'était pas terminé car j'ai cliqué par mégarde sur le bouton "Envoyer la réponse" alors que je voulais aborder le sujet où ColorToString renvoie une chaîne de texte.

    A+.
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  9. #9
    Membre averti
    Homme Profil pro
    Informatique industrielle
    Inscrit en
    Novembre 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Informatique industrielle

    Informations forums :
    Inscription : Novembre 2007
    Messages : 41
    Par défaut
    Citation Envoyé par Gilbert Geyer Voir le message
    Re-salut,


    Ce n'était qu'une confirmation colorée ... et en plus mon message n'était pas terminé car j'ai cliqué par mégarde sur le bouton "Envoyer la réponse" alors que je voulais aborder le sujet où ColorToString renvoie une chaîne de texte.

    A+.
    Tu as bien fait c'est beaucoup plus clair et plus complet comme ça

  10. #10
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Par défaut
    Re-salut,

    En fait ce qui m'intéresserait de savoir c'est la chose suivante:
    Avec les valeurs R,G,B qui peuvent varier chacune dans [0..255] on peut obtenir 16 millions de teintes numériquement différentes alors que l'oeil ne peut en différencier qu'environ 3 millions (18%)... et en plus l'oeil différencie plus facilement deux teintes voisines sombres que deux teintes voisines très claires (voir image ci-dessous) : existe-t-il une loi simple ou simplifiable pour isoler ces 3 millions de teintes ???

    A+.
    Images attachées Images attachées  
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  11. #11
    Membre averti
    Homme Profil pro
    Informatique industrielle
    Inscrit en
    Novembre 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Informatique industrielle

    Informations forums :
    Inscription : Novembre 2007
    Messages : 41
    Par défaut
    Oula tu m'en demandes trop la désolé.

  12. #12
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 591
    Détails du profil
    Informations personnelles :
    Âge : 72
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 591
    Par défaut
    @ tous, merci mais je suis perdu car je n'arrive pas à appliquer vos suggestions à mon code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
     
    //copie des images sources, géneration de la page html
    //et création des miniatures vers le dossier destination
    procedure TFormhtm.BokClick(Sender: TObject);
    var i,j,nb:integer;
        result,body:TStringList;
        imgsrc,thumbsrc:string;
     
    //sColor: string;
    //vColor : tColor;
    begin
     
      result:=TStringList.Create();
      body:=TStringList.Create();
      result.Add('<html>');
      result.Add('<result>');
      result.Add('<style type="text/css">');
      result.Add('<!--');
      result.Add('.pagetitle {');
      result.Add('  font-family: Verdana, Arial, Helvetica, sans-serif;');
      result.Add('  font-size: 24pt;');
      result.Add('  color: #000000;');
      result.Add('  font-weight: bold;');
      result.Add('}');
      result.Add('.thumbtitle {');
      result.Add('  font-family: Verdana, Arial, Helvetica, sans-serif;');
      result.Add('  font-size: 10pt;');
      result.Add('  color: #000000;');
      result.Add('}');
      result.Add('.imagetitle {');
      result.Add('  font-family: Verdana, Arial, Helvetica, sans-serif;');
      result.Add('  font-size: 10pt;');
      result.Add('  color: #000000;');
      result.Add('}');
      result.Add('.navigation {');
      result.Add('  font-family: Verdana, Arial, Helvetica, sans-serif;');
      result.Add('  font-size: 10pt;');
      result.Add('  color: #000000;');
      result.Add('  font-weight: bold;');
      result.Add('}');
      result.Add('-->');
      result.Add('</style>');
      result.Add('<title>'+edit6.Text+'</title>');   //'+colortostring(colordialog1.color)+'
      result.add('</result><body style:"background-color: #'+inttostr(colordialog1.color)+'"><center><span class="pagetitle">'+edit6.Text+'</span><br><br>');
      result.Add('<table border="0" cellpadding="5" cellspacing="5">');
     
      ProgressBar1.Max:=NbImage*2;
      ProgressBar1.Position:=0;
      ProgressBar1.Step:=1;
      for i:=1 to NbImage do
        begin
           imgsrc:=ExtractFileName(GridSource.Cells[3,i]);
           //createThumb(srcFile,DestPath:String;size:integer;prefix:String;
           //shadow,border:boolean;bsize:integer;bcolor:TColor);
           createThumb(GridSource.Cells[3,i],edit4.Text,edit3.text,strtoint(edit1.text),
                       checkbox4.Checked,checkbox5.Checked,strtoint(edit5.text),
                       Shape1.Brush.Color);
           CopyFile(Pchar(GridSource.Cells[3,i]),Pchar(edit4.text+'\'
                                  +ExtractFileName(GridSource.Cells[3,i])),false);
           thumbsrc:=ExtractFileName(edit3.text+imgsrc);
           ProgressBar1.StepIt;
           body.add('<td align="center"><a href="'+imgsrc+'"><img src="'+thumbsrc
                        +'"  border="0"></a></td>');
        end;
        //Nombre de colonnes de base = 4
       i:=0;
       nb:= body.Count;
       while(i<=nb-6) do
        begin
            result.Add('<tr>');
            result.Add(body.Strings[i]);
            result.Add(body.Strings[i+1]);
            result.Add(body.Strings[i+2]);
            result.Add(body.Strings[i+3]); //De base = 4
            result.Add(body.Strings[i+4]);
            result.Add(body.Strings[i+5]);
            result.Add('</tr>');
            i:=i+6;
            ProgressBar1.StepIt;
        end;
     
       result.Add('<tr>');
       for j:=i to nb-1 do
        begin
            result.Add(body.Strings[j]);
            ProgressBar1.StepIt;
         end;
       result.Add('</tr>');
       result.Add('</body></html>');
       result.SaveToFile(edit4.text+'\index.htm');
      ProgressBar1.Position:=ProgressBar1.Max;
      FrmPrinc.w3.Play;
      //ProgressBar1.Position:=0;
     
    end;
    Je persiste.

    En modifiant le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    result.add('</result><body bgcolor="'+colortostring(colordialog1.color)+'"><center>
    Et en choisissant la couleur bleue, j'obtiens du rouge et mon code de la page html devient:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <body bgcolor="clNavy">
    @+,

    Cincap

  13. #13
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Par défaut
    Re-salut,

    Cincap : Et en choisissant la couleur bleue, j'obtiens du rouge
    C'est normal car dans les couleurs Delphi les positions du Rouge et du Bleu sont permutés, on a déjà dit en français puis en couleurs que dans Delphi la fin de la string c'est Blue,Green,Red et sous HTML c'est Red,Green,Blue.

    Et puis result.add('</result><body bgcolor="'+colortostring(colordialog1.color)+'"><center>
    ça ne colle pas car lorsque ColorToString renvoie <body bgcolor="clNavy"> il faut convertir la chaîne "clNavy" en $00800000 sous Delphi et sous HTML en #000080

    Et donc pour s'en sortir on est obligé de créer un tableau de conversion pour les 16 couleurs pour lesquelles ColorToToString renvoie une chaîne de texte.

    A+.
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  14. #14
    Membre averti
    Homme Profil pro
    Informatique industrielle
    Inscrit en
    Novembre 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Informatique industrielle

    Informations forums :
    Inscription : Novembre 2007
    Messages : 41
    Par défaut
    Dans ton cas il ne faut pas que tu utilises la fonction ColorToString car elle ne te retourne pas ce qu'il faut (Voir mon poste et celui de Gilbert Geyer plus haut).

    Il faudrait que tu partes sur un truc comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    result.add('</result><body bgcolor="rgb(' + GetRValue (colordialog1.color) + ', ' + GetGValue (colordialog1.color) + ', ' + GetBValue (colordialog1.color) + ')"><center>
    Il y a peut être une autre fonction pour convertir le TColor en RGB mais je ne la connais pas.

    Le temps que j'écrive tu avez déjà répondu

  15. #15
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Par défaut
    Re-salut,

    Iznogood12 : Il faudrait que tu partes sur un truc comme ça : result.add('</result><body bgcolor="rgb(' + GetRValue (colordialog1.color) + ', ' + GetGValue (colordialog1.color) + ', ' + GetBValue (colordialog1.color) + ')"><center>
    Attention car dans son premier message Cincap avait dit :
    Si je fait ceci cela fonctionne : result.add('</result><body bgcolor="#FFFFF"><center>
    Donc il faudrait plutôt faire comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    result.add('</result><body bgcolor="#' + IntToHex(GetRValue (colordialog1.color),2)+IntToHex(GetGValue (colordialog1.color),2) +IntToHex(GetBValue (colordialog1.color),2) + '"><center>
    A+.
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  16. #16
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 591
    Détails du profil
    Informations personnelles :
    Âge : 72
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 591
    Par défaut
    J'aurai une incompatibilité entre string et bytes il me semble.

    Je vais tester.

    @+,

    Cincap

  17. #17
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 591
    Détails du profil
    Informations personnelles :
    Âge : 72
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 591
    Par défaut
    @ Gilbert Geyer, chapeau bas, les couleurs sont exactes maintenant.

    L'autre solution j'avais bien une exception entre string et bytes.

    Je cloture ce topic avec des grands bravos.

    Merci à tous,

    @+,

    Cincap

    P.s : exemple en choisissant la couleur jaune.
    Images attachées Images attachées  

  18. #18
    Membre émérite
    Avatar de Cirec
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    467
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 467
    Par défaut
    Salut,

    essaye avec ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function ColorToHtmlColor(const A: Integer): string;
    var
      pbResult,
        pbA: PByte;
      aResult: Integer;
    begin
      pbA := @A;
      pbResult := @aResult;
      pbResult^ := PByte(Integer(pbA) + 2)^;
      PByte(Integer(pbResult) + 1)^ := PByte(Integer(pbA) + 1)^;
      PByte(Integer(pbResult) + 2)^ := pbA^;
      Result := '#' + IntToHex(aResult, 6);
    end;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    result.add('</result><body bgcolor="'+ ColorToHtmlColor(clRed) +'"><center>
    EDIT : sorry j'avais pas rafraichi la page avant de répondre

    @+ Cirec

  19. #19
    Membre averti
    Homme Profil pro
    Informatique industrielle
    Inscrit en
    Novembre 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Informatique industrielle

    Informations forums :
    Inscription : Novembre 2007
    Messages : 41
    Par défaut
    Citation Envoyé par Gilbert Geyer Voir le message
    Donc il faudrait plutôt faire comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    result.add('</result><body bgcolor="#' + IntToHex(GetRValue (colordialog1.color),2)+IntToHex(GetGValue (colordialog1.color),2) +IntToHex(GetBValue (colordialog1.color),2) + '"><center>
    A+.
    La fonction RGB que j'ai écris est une fonction css qui permet de choisir la couleur en rgb donc c'est pour ça que j'ai écris ce code, mais je n'ai pas testé.

  20. #20
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 934
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 934
    Par défaut
    Citation Envoyé par Cirec Voir le message
    essaye avec ceci:
    Ou plus simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function ColorToHTML(const aColor :TColor) :string;
    var
      RGBA :array[0..3] of byte absolute aColor;
    begin
      Result := Format('#%.2x%.2x%.2x', [RGBA[0], RGBA[1], RGBA[2]]);
    end;

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Envoyer des données sur une page HTML à partir de Delphi
    Par gillou026 dans le forum Débuter
    Réponses: 18
    Dernier message: 29/05/2013, 01h16
  2. Utilisation de Word pour correction orthographique d'une entrée d'un TextBox
    Par ProgElecT dans le forum Vos contributions VB6
    Réponses: 1
    Dernier message: 23/05/2010, 00h23
  3. Réponses: 1
    Dernier message: 23/07/2009, 12h54
  4. Réponses: 1
    Dernier message: 28/07/2007, 20h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo