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

C++Builder Discussion :

Fenêtre 'Caps lock' pour un mot de passe


Sujet :

C++Builder

  1. #21
    Membre du Club
    Inscrit en
    Octobre 2004
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 115
    Points : 68
    Points
    68
    Par défaut
    Alors merci à tous,

    Blondelle j'avais essayé ton code mais rien ne s'affichait à l'écran ... pas d'erreur dans le code, le curseur de la souris se déplaçait mais pas d'affichage d'une fenêtre lorsque je tapais du texte en majuscule.

    DjmSoftware ton petit fichier WinXP.res est exactement se qu'il me fallait. Je l'ai ajouté à mon projet et puis c'est tout.

    Merci encore à tous de votre aide

    Modification : Alors juste une petite question liée à cette ressource WinXp.res. Elle fonctionne très bien pour m'afficher la fenêtre de notification du Caps lock lors de l'identification mais elle me modifie également certaines couleurs de ma forme principale . J'ai beau forcer les couleurs du TMainMenu mais rien n'y fait. Je voulais donc savoir si il était possible d'appliquer cette ressource à une seule forme de mon application et non toutes ?

  2. #22
    Membre chevronné
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Points : 2 187
    Points
    2 187
    Billets dans le blog
    1
    Par défaut
    Hello
    le fichier de resource Manifest te donne accès aux thèmes de windows
    par conséquent les couleurs sont celles du thème windows employé
    il existe des composants plus complet te permettant de gèrer les thèmes
    c'est du freeware je ne l'ai pas testé
    http://www.soft-gems.net/index.php/c...-theme-manager
    cdlt
    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

  3. #23
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    Je ne comprend pas le code fonctionne tres bien chez moi, de plus j'ai reussi a afficher une iconne, a modifier la couleur du texte et du fond
    le .cpp
    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
     
    //---------------------------------------------------------------------------
    #include <vcl.h>
    #pragma hdrstop
    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    HWND hwndToolTips;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Edit1Change(TObject *Sender)
    {
    if(Edit1->Text == "")
    {
    return;
    }
    POINT cursor;
    int l = Edit1->Text.Length();
    if (l > 0)
    if (isupper(Edit1->Text[l]))
            {
    // on active l'affichage
            SendMessage(hwndToolTips, TTM_ACTIVATE, true, 0);
    // on acquier la position du curseur
            GetCursorPos(&cursor);
    // on simule un deplacement
            SetCursorPos(cursor.x + 1, cursor.y);
            }
    if(islower(Edit1->Text[l]))
            {
    // on desactive l'affichage
            SendMessage(hwndToolTips, TTM_ACTIVATE, false, 0);
            }
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::FormCreate(TObject *Sender)
    {
    // gestion affichage Balloon
    hwndToolTips = CreateWindow(TOOLTIPS_CLASS, NULL,
                                WS_POPUP | TTS_NOPREFIX | TTS_BALLOON,
                                0, 0, 0, 0, Handle, NULL, HInstance, NULL);
            if (hwndToolTips != NULL)
            {
            TOOLINFO ti;
            ti.cbSize   = sizeof(ti);
            ti.uFlags   = TTF_SUBCLASS | TTF_TRANSPARENT | TTF_CENTERTIP;
            ti.hinst = NULL;
            ti.rect = Edit1->ClientRect;
            ti.hwnd     = Edit1->Handle;
            ti.lpszText = "texte qui s'affiche";
            CopyRect( &ti.rect, &(Edit1->ClientRect));
            SendMessage(hwndToolTips, TTM_ADDTOOLA, 0, (LPARAM) &ti);
            SendMessage(hwndToolTips, TTM_SETTITLE, 2, (LPARAM) "Titre"); // icon 0 a 3
            SendMessage(hwndToolTips, TTM_SETMAXTIPWIDTH, 0, (LPARAM) &ti);
            SendMessage(hwndToolTips, TTM_SETTIPTEXTCOLOR, RGB(255,000,125), (LPARAM) &ti);
            SendMessage(hwndToolTips, TTM_SETTIPBKCOLOR, RGB(000,255,255), (LPARAM) &ti);
            }
    }
    //---------------------------------------------------------------------------
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

  4. #24
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    Pour le probleme d'affichage peut etre qu'il faut inclure
    #include <windows.h>
    #include <commctrl.h>
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

  5. #25
    Membre chevronné
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Points : 2 187
    Points
    2 187
    Billets dans le blog
    1
    Par défaut
    Hello Blondelle
    #include <windows.h>
    #include <commctrl.h>
    ce serait étonnant que dans ce cas le programme compile
    en principe les fichiers includes que d'ont tu fait mention sont inclus par la VCL
    cdlt
    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

  6. #26
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    Alors je ne comprend pas pourquoi ca ne fonctionne pas chez LoicH, a moins d'une erreur de recopie de code
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

  7. #27
    Membre chevronné
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Points : 2 187
    Points
    2 187
    Billets dans le blog
    1
    Par défaut
    Blondelle
    le fonctionnement de ton code n'est pas identique a celui réalisé automatiquement par MS
    dans le cas du hint apparaissant lors que le capsLock est pressé, chez MS il suffi que l'edit Box aie le focus et que CapsLock soit enfoncé au préalable pour que le Hint apparaisse
    dans le cas du ballon , il est également possible que chez LoicH ce comportement soit désactivé dans windows
    cdlt
    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

  8. #28
    Membre du Club
    Inscrit en
    Octobre 2004
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 115
    Points : 68
    Points
    68
    Par défaut
    alors Blondelle j'ai retenté ton code.
    Il s'avère effectivement que le message ne s'affiche pas durant la frappe ... mais il s'affiche lorsque je met la souris sans mouvement sur l'Edit

    Alors j'ai fais un petit exemple joint ici même. Avec juste une Form et un Edit et ton code. Et comme dit chez moi rien ne se passe lors de la frappe. Dite moi si c'est moi ou mon Builder 6 qui fait des siennes
    Fichiers attachés Fichiers attachés

  9. #29
    Membre chevronné
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Points : 2 187
    Points
    2 187
    Billets dans le blog
    1
    Par défaut
    Hello
    Sans regarder ton code
    la différence je l'ai déja expliquée dans mon code précédent
    si tu veux obtenir un résultat similaire utilise plutôt l'Event OnEnter de ton TEdit
    Cdlt
    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

  10. #30
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    Je suis rassure le code que j'ai poste a un fonctionnement normal, j'ai trouve trois liens utiles
    J'ai modifie le code il y a plusieur testes a toi d'y prendre ce que tu veux, dans un premier temps essaye le tel quel
    le .cpp
    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
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
     
    //---------------------------------------------------------------------------
    #include <vcl.h>
    #pragma hdrstop
    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    HWND hwndToolTips;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    // liens
    // <a href="http://msdn.microsoft.com/en-us/library/windows/desktop/bb760250(v=vs.85).aspx" target="_blank">http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx</a>
    // <a href="http://support.microsoft.com/kb/134209" target="_blank">http://support.microsoft.com/kb/134209</a>
    // <a href="http://msdn.microsoft.com/en-us/library/windows/desktop/bb760414(v=vs.85).aspx" target="_blank">http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx</a>
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Edit1Change(TObject *Sender)
    {
    POINT cursor;
    if(Edit1->Text == "")
            {
            return;
            }
    int l = Edit1->Text.Length();
    if (l > 0)
    if (isupper(Edit1->Text[l]))
            {
    // on active l'affichage
            SendMessage(hwndToolTips, TTM_ACTIVATE, true, 0);
    // on acquier la position du curseur
            GetCursorPos(&cursor);
    // on simule un deplacement
            SetCursorPos(cursor.x + 1, cursor.y);
            }
    if(islower(Edit1->Text[l]))
            {
    // on desactive l'affichage
            SendMessage(hwndToolTips, TTM_ACTIVATE, false, 0);
            }
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::FormCreate(TObject *Sender)
    {
    // gestion affichage Balloon
    hwndToolTips = CreateWindow(TOOLTIPS_CLASS, NULL,
                                WS_POPUP | TTS_NOPREFIX | TTS_BALLOON | TTS_ALWAYSTIP,
                                0, 0, 0, 0, Handle, NULL, HInstance, NULL);
            if (hwndToolTips != NULL)
            {
            TOOLINFO ti;
            ti.cbSize   = sizeof(ti);
            ti.uFlags   = TTF_SUBCLASS | TTF_TRANSPARENT | TTF_CENTERTIP;
            ti.hinst = NULL;
            ti.rect = Edit1->ClientRect;
            ti.hwnd     = Edit1->Handle;
            ti.lpszText = "texte qui s'affiche sur plusieurs lignes parcequ'il depasse la largeur du balloon";
            CopyRect( &ti.rect, &(Edit1->ClientRect));
            SendMessage(hwndToolTips, TTM_ADDTOOL, 0, (LPARAM) &ti);
            // IconType 0 - No icon  1 - Information  2 - Warning 3 - Error
            SendMessage(hwndToolTips, TTM_SETTITLE, 0, (LPARAM) "Titre"); // icon 0 a 3
            SendMessage(hwndToolTips, TTM_SETMAXTIPWIDTH, 0, 60);
            SendMessage(hwndToolTips, TTM_ADJUSTRECT, TRUE, (LPARAM)&ti.rect);
            SendMessage(hwndToolTips, TTM_SETTIPTEXTCOLOR, RGB(255,000,125), (LPARAM) &ti);
            SendMessage(hwndToolTips, TTM_SETTIPBKCOLOR, RGB(245,255,255), (LPARAM) &ti);
    //SendMessage(hwndToolTips, TTM_SETDELAYTIME, TTDT_AUTOPOP, (LPARAM) MAKELONG(8000, 0));
    //SendMessage(hwndToolTips, TTM_SETDELAYTIME, TTDT_AUTOMATIC, (LPARAM) MAKELONG(5000, 0));
    //  SendMessage(hwndToolTips, TTM_SETDELAYTIME, TTDT_INITIAL, 0);
    //        SendMessage (hwndToolTips, TTM_SETDELAYTIME, TTDT_AUTOMATIC, -1);
    //        SendMessage (hwndToolTips, TTM_TRACKACTIVATE, false, (LPARAM) &ti);
    //         SendMessage(hwndToolTips, TTM_TRACKPOSITION, 0, (LPARAM)(DWORD) MAKELONG (ti.rect.left - 100, ti.rect.bottom - 200) );
    //SendMessage(hwndtooltip, TTM_UPDATETIPTEXT, 0, (LPARAM) (LPTOOLINFO)&ti);
    //============
            ti.cbSize   = sizeof(ti);
            ti.uFlags   = TTF_SUBCLASS | TTF_TRANSPARENT | TTF_CENTERTIP;
            ti.hinst = NULL;
            ti.rect = Form1->ClientRect;
            ti.hwnd     = Form1->Handle;
            ti.lpszText = "texte qui s'affiche sur plusieurs lignes parcequ'il depasse la largeur du balloon";
            CopyRect( &ti.rect, &(Form1->ClientRect));
            SendMessage(hwndToolTips, TTM_ADDTOOL, 0, (LPARAM) &ti);
            SendMessage(hwndToolTips, TTM_ACTIVATE, false, 0);
    //============
            }
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Edit1KeyDown(TObject *Sender, WORD &Key,
          TShiftState Shift)
    {
    POINT cursor;
    if((GetKeyState(VK_CAPITAL)&1))
          {
          // on active l'affichage
            SendMessage(hwndToolTips, TTM_ACTIVATE, true, 0);
    // on acquier la position du curseur
            GetCursorPos(&cursor);
    // on simule un deplacement
            SetCursorPos(cursor.x + 1, cursor.y);
          }
    else
          {
          // on desactive l'affichage
            SendMessage(hwndToolTips, TTM_ACTIVATE, false, 0);
          }
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
    {
    POINT cursor;
    if(Edit1->Text == "")
            {
            return;
            }
    int l = Edit1->Text.Length();
    if (l > 0)
    if (isupper(Edit1->Text[l]))
            {
    // on active l'affichage
            SendMessage(hwndToolTips, TTM_ACTIVATE, true, 0);
    // on acquier la position du curseur
            GetCursorPos(&cursor);
    // on simule un deplacement
            SetCursorPos(cursor.x + 1, cursor.y);
            }
    if(islower(Edit1->Text[l]))
            {
    // on desactive l'affichage
            SendMessage(hwndToolTips, TTM_ACTIVATE, false, 0);
            }
    }
    //---------------------------------------------------------------------------
    Un teste est fait sur le verouillage majuscule, des la frappe la dectection majuscule est fait, le curseur peut etre en dehors du TEdit mais sur la Form, apres essai poste tes questions
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

  11. #31
    Membre du Club
    Inscrit en
    Octobre 2004
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 115
    Points : 68
    Points
    68
    Par défaut
    Merci à tous pour votre aide. Jamais déçu

  12. #32
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 447
    Points : 24 844
    Points
    24 844
    Par défaut
    Pense au
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Demande de conseil pour les mots de passe
    Par jerem7w dans le forum Sécurité
    Réponses: 5
    Dernier message: 25/03/2009, 00h45
  2. [MySQL] souci pour mon mot de pass du forum
    Par will_smith dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 30/06/2008, 18h00
  3. Requête paramétrée pour un mot de passe
    Par Jacques Bellavance dans le forum Access
    Réponses: 7
    Dernier message: 29/03/2008, 22h58

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