Comment avoir des retours chariot dans une cellule d'une StringGrid
Bonsoir
Voici comment inserrer des retours chariot dans une cellule d'un StringGrid, le code est tire de la FAQ Delphi
Code:
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
|
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::StringGrid1KeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
if(Key == VK_RETURN)
{
StringGrid1->Cells[StringGrid1->Col][StringGrid1->Row] = StringGrid1->Cells[StringGrid1->Col][StringGrid1->Row] + sLineBreak;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::StringGrid1DrawCell(TObject *Sender, int ACol,
int ARow, TRect &Rect, TGridDrawState State)
{
// Sélection de la couleur de fond
if(State.Contains(gdFixed))
{
StringGrid1->Canvas->Brush->Color = clBtnFace;
}
else if(State.Contains(gdSelected))
{
StringGrid1->Canvas->Brush->Color = clNavy;
}
else
{
StringGrid1->Canvas->Brush->Color = clWhite;
}
// Dessin du fond
StringGrid1->Canvas->FillRect(Rect);
// Sélection de la couleur de texte
if(State.Contains(gdSelected))
{
SetTextColor(Canvas->Handle, clWhite);
}
else
{
SetTextColor(Canvas->Handle, clBlack);
}
// Dessin du texte en utilisant la fonction API
// AnsiString CellText = StringGrid1->Cells[ACol][ARow];
// DrawText(StringGrid1->Canvas->Handle, CellText.c_str(), -1, &Rect, DT_NOPREFIX | DT_WORDBREAK );
DrawText(StringGrid1->Canvas->Handle, (StringGrid1->Cells[ACol][ARow]).c_str(), -1, &Rect, DT_NOPREFIX | DT_WORDBREAK );
}
//--------------------------------------------------------------------------- |
Pour visualiser l'effet il faut une cellule d'une hauteur suffisante