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
| __fastcall TForm2::TForm2(TComponent* Owner)
: TForm(Owner)
{
Info = "Bulle";
}
//--
void __fastcall TForm2::FixPosition()
{
TMemo *M = Form1->Memo1;
AnsiString S = M->Lines->Strings[M->CaretPos.y].SubString(0,M->CaretPos.x);
int y = Form1->Top + M->Top;
int h = -M->Font->Height + 2;
//Normalement il faudra récupérer l'indice de la ligne du haut
int topindex = 0; //voir dans la FAQ... le sujet a déjà été abordé ...
SetBounds(Form1->Left + M->Left + Canvas->TextWidth(S),
//calculer la position écran : index ligne - index ligne du haut
y + ((M->CaretPos.y - topindex) * h) - 8,
Width,
Height);
}
//--
void __fastcall TForm2::FormPaint(TObject *Sender)
{
Canvas->Pen->Color = clBlack;
Canvas->Pen->Style = psSolid;
Canvas->Pen->Mode = pmCopy;
Canvas->Brush->Color = Color; // clInfoBk
Canvas->Brush->Style = bsSolid;
Canvas->Rectangle(0, 0, Width, Height);
Canvas->Brush->Style = bsClear;
int y = (Height - Canvas->TextHeight(Info)) / 2;
Canvas->TextOut(2, y, Info);
} |
Partager