stringgrid et editeur de text
Bonjour je voudrais savoir s’il est possible d’utiliser une colonne de stringgrid
Aussi naturellement qu’un éditeur de texte
C'est-à-dire changer de ligne si on arrive en fin de colonne
Et surtout si on appuie sur la touche entrée
Si quelqu’un à la solution je suis preneur.
J'ai trouvé une solution dans la fac mais elle ne me satisfait pas
Je part en vacances ce dimanche pour cinq semaines je vais pouvoir y réfléchir
Si personne ne me donne la solution je m’efforcerai de la trouver
Pendant mes vacances, et dans ce cas c’est moi qui
vous la donnerai à la rentrée
ecrire dans le stringgrid
Citation:
Envoyé par
blondelle
Salut cmax
Je pense pas que le choix d'un TStringGrid soit judicieux, j'utiliserais soit unTMemo soit un TRichEdit
Merci Blondelle
J’ai créé récemment un logiciel pour devis qui me donne satisfaction
Pour la colonne désignation j’ai utilisé un richedit qui renvoie son texte
Dans le stringgrid avec la méthode Onchange du richedit
Cela fonctionne assez bien, cependant je crois possible d’écrire
Directement sur la colonne du stringgrid aussi facilement que dans un richedit
Il suffit pour cela comptabiliser les caractères par rapport a la taille de la colonne
Ensuite de sauter une ligne, et aussi simple de passer a ligne suivante lorsqu’on
Appuie sur la touche entrée
Un peut plus difficile le retour en arrière,
n’est pas indispensable dans mon cas
Je travaille dessus si je réussi aujourd’hui je posterais mon code.
Encore un merci pour ton travaille sur l’impression avec builder 6 cela m’a beaucoup aidé
StringGride comme editeur de text
voici le code qui transforme une colonne de stringgrid en éditeur de texte
le changement de ligne est parfait ainsi que le retour de chariot
le retour en arrière demande a être amélioré
ici il supprime la ligne entière
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| void __fastcall TForm1::StringGrid1KeyPress(TObject *Sender, char &Key)
{
if(MaCol==1){ int lh2;
int taille=StringGrid1->ColWidths[1]-15;
if(Key == VK_RETURN){
if(StringGrid1->Row>=StringGrid1->RowCount-1){return;}
lh2=taille;StringGrid1->Row++;}
AnsiString TT= Form1->StringGrid1->Cells[1][StringGrid1->Row];
lh2=StringGrid1->Canvas->TextWidth(TT);
if(lh2>=taille){
StringGrid1->Row=StringGrid1->Row+1; }
//***********************************************
AnsiString T= Form1->StringGrid1->Cells[1][StringGrid1->Row];
int i=T.Length();
if(Key == VK_BACK)
{i=i-1;
if(StringGrid1->Row<=0){return;}
if(i<0){ StringGrid1->Row=StringGrid1->Row-1;
}}}
} |