Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

Vous n'avez pas encore de compte Developpez.com ? L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Developpez.com

C++

Choisissez la catégorie, puis la rubrique :

logo
Sommaire > Interface > Composants > Les zones d'édition
        Comment supprimer le son du TEdit quand on appuie sur la touche [Entrée] ?
        Comment faire une zone d'édition n'acceptant que des entiers ?
        Comment connaître et modifier la position du curseur dans un TRichEdit ?
        Comment afficher chaque ligne d'un TRichEdit avec une couleur de texte différente ?
        Comment faire de la mise en forme dans un TRichEdit ?
        Comment enregistrer le texte d'un TRichEdit avec ou sans mise en forme ?
        Comment inserer un image sur un fond en couleur dans un RichEdit ?
        Comment aligner à droite le contenu d'un TControl (TEdit...) ?



Comment supprimer le son du TEdit quand on appuie sur la touche [Entrée] ?
Créé le 01/09/2004[haut]
auteur : Geronimo
Il suffit de placer le code suivant dans l'évènement OnKeyPress du TEdit :

void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key) 
{ 
  if (Key == VK_RETURN)
  {
    Key = 0; 
  }
} 
Cela permet de savoir quand la touche [Entree] est appuyée (validation si nécessaire) et supprime le son en "faisant croire" à Windows qu'aucune touche n'a été enfoncée (Key = 0)


Comment faire une zone d'édition n'acceptant que des entiers ?
Créé le 01/09/2004[haut]
auteur : Geronimo
Il faut obtenir les Flags de la zone d'édition choisie et lui rajouter le Flag ES_NUMBER. On utilise pour cela respectivement les fonctions GetWindowLong et SetWindowLong.

__fastcall TForm1::TForm1(TComponent* Owner) 
: TForm(Owner) 
{ 
long StylesEdit = GetWindowLong(Edit1->Handle, GWL_STYLE); 
SetWindowLong(Edit1->Handle, GWL_STYLE, StylesEdit | ES_NUMBER); 
} 
Attention, la protection n'est pas totale. En effet, il est toujours possible de coller des caractères non numériques dans le TEdit...


Comment connaître et modifier la position du curseur dans un TRichEdit ?
Mise à jour le 06/12/2006[haut]
auteurs : Alacazam, Sunchaser
Le but est d'accéder à la position du curseur sous la forme (Ligne, Caractère), plus aisément utilisable que le simple numéro de caractère donné par RichEdit1->SelStart. On utilise pour cela les messages Windows EM_* se rapportant aux composants TRichEdit.
N.B. Perform a le même effet que SendMessage, il permet d'envoyer un message à un composant.

Pour connaître la position actuelle :

int numLigne = RichEdit1->Perform(EM_EXLINEFROMCHAR, 0, (LPARAM) (DWORD) RichEdit1->SelStart);
int numCaractere = (RichEdit1->SelStart - RichEdit1->Perform(EM_LINEINDEX, (LPARAM) (DWORD) numLigne, 0));
Le message EM_EXLINEFROMCHAR permet de déterminer la ligne où se trouve le caractère dont le numéro est passé en 3ème paramètre LPARAM.
De la même manière, grâce à EM_LINEINDEX, on détermine le numéro du 1er caractère de la ligne dont le numéro est passé en second paramètre ; pour avoir le "déplacement horizontal", on n'a plus alors qu'à soustraire ce résultat au numéro du caractère courant.
Pour modifier cette position :

int numLigne = 10, numCaractere = 15;
RichEdit1->SelStart = RichEdit1->Perform(EM_LINEINDEX, numLigne - 1, 0);
RichEdit1->SelStart += numCaractere;
RichEdit1->Perform(EM_SCROLLCARET, 0, 0);
RichEdit1->SetFocus();
Ici, le principe est exactement le même ; on se déplace au 1er caractère de la ligne numLigne (grâce à EM_LINEINDEX), puis on avance de numCaractere positions sur cette même ligne.


Comment afficher chaque ligne d'un TRichEdit avec une couleur de texte différente ?
Créé le 01/09/2004[haut]
auteur : Alacazam
Dans cet exemple, les lignes font apparaître un dégradé de couleur allant du bleu au rose.
Comme vu ici (faq Comment connaître et modifier la position du curseur dans un TRichEdit ?), on peut assez facilement récupérer le numéro (absolu) du 1er caractère d'une ligne donnée, grâce à EM_LINEINDEX. Nous nous en servons cette fois pour sélectionner une ligne dans sa totalité, avant de lui appliquer un attribut de couleur.

for (int i = 0 ; i < RichEdit1->Lines->Count ; i++) {
   RichEdit1->SelStart = RichEdit1->Perform(EM_LINEINDEX, i, 0);
   RichEdit1->SelLength = RichEdit1->Lines->Strings[i].Length();
   RichEdit1->SelAttributes->Color = 0x00F56B00 + 10 * i;
   }
Pour choisir facilement votre gamme de couleurs, regardez ici : faq Comment obtenir les composantes RGB d'une couleur TColor ?

lien : faq Comment connaître et modifier la position du curseur dans un TRichEdit ?
lien : faq Comment obtenir les composantes RGB d'une couleur TColor ?

Comment faire de la mise en forme dans un TRichEdit ?
Créé le 01/09/2004[haut]
auteur : Alacazam
Le lien ci-dessous vous donnera les informations nécessaires.

lien : fr Astuces RichEdit

Comment enregistrer le texte d'un TRichEdit avec ou sans mise en forme ?
Créé le 01/09/2004[haut]
auteur : Alacazam
Pour enregistrer le contenu de votre TRichEdit :

RichEdit1->Lines->SaveToFile(Nom_fichier);
Cet enregistrement se fera, par défaut, au format RTF (texte mis en forme).
Si vous souhaitez sauvegarder le contenu au format "texte simple", précédez votre enregistrement de :

RichEdit1->PlainText = true;

Comment inserer un image sur un fond en couleur dans un RichEdit ?
Créé le 10/12/2007[haut]
auteurs : blondelle, pottiez

Le code permet de recréer le Canvas du RichEdit, afin de pouvoir dessiner un rectangle coloré, sur lequel on insère une image :

void __fastcall TForm1::Button2Click(TObject *Sender)
{
Graphics::TBitmap *pBitmap = new Graphics::TBitmap();
pBitmap->LoadFromFile("C:\\Documents and Settings\\blondelle\\Mes documents\\Mes images\\AG00004_.bmp");
TControlCanvas *pCn;
pCn = new TControlCanvas();
pCn->Control = RichEdit1;
pCn->Brush->Color = clGreen;
pCn->Rectangle(0, 0, 488, 289);
pCn->Draw(50,50,pBitmap);
delete pCn;
delete pBitmap;
}

Comment aligner à droite le contenu d'un TControl (TEdit...) ?
Créé le 22/11/2010[haut]
auteurs : blondelle, Gysmo
L'astuce est d'utiliser la propriété BiDiMode du TControl (ancêtre des composants visibles). Ce mode bidirectionnel spécifie la direction de la lecture du texte. En localisant l'application on arrive à aligner le texte à droite. Dans l'événement OnCreate :
SysLocale.MiddleEast = True;
MonEdit->BiDiMode = bdRightToLeft;


Consultez les autres F.A.Q.


Valid XHTML 1.0 TransitionalValid CSS!

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2009 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Contacter le responsable de la rubrique C++

Partenaire : Hébergement Web