| | 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)
|
| | 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...
|
| | 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.
|
| | 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;
}
|
|
| | 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.
 
|
|