Z tego co się orientuję to standardowy TRichEdit nie umożliwia wstawiania tabel i ich nie obsługuje. Istnieje biblioteka
TRichView, która posiada znacznie większe możliwości, ale jest to wersja komercyjna i chyba nie występuje w wersji dla tak starego środowiska C++Builder.
Co się tyczy drugiego problemu to nie ma znaczenia, czy jest to
Button, czy
ToolButton czy innego rodzaju przycisk. Za kliknięcie odpowiada zdarzenie
OnClick. Jak jednak rozumiem, chcesz sterować tym przyciskiem w ten sposób, że jak zaznaczysz pogrubiony już tekst w
RichEdit to ten przycisk to właściwość
Down tego przycisku przyjmie wartość
true w przeciwnym razie
false. By przycisk
ToolButton zachowywał się w pożądany sposób musisz zmienić jego właściwość
Style na
tbsCheck.
Zmiana stanu przycisku
ToolButton na
Down = true, gdy zaznaczony w RichEdit1 tekst jest pogrubiony musi odbywać się w zdarzeniu
OnSelectionChange. Zmiana stylu tekstu odbywa się oczywiście w zdarzeniu
OnClick dla przycisku
ToolButton:
void __fastcall TForm1::RichEdit1SelectionChange(TObject *Sender)
{
TTextAttributes *SelAttributes = RichEdit1->SelAttributes;
ToolButtonBold->Down = SelAttributes->Style.Contains(fsBold);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ToolButtonBoldClick(TObject *Sender)
{
if(ToolButtonBold->Down)
RichEdit1->SelAttributes->Style = RichEdit1->SelAttributes->Style << fsBold;
else
RichEdit1->SelAttributes->Style = RichEdit1->SelAttributes->Style >> fsBold;
}
W katalogu:
C:\Program Files\Borland\CBuilder6\Examples\Apps\RichEdit - masz przykładowy wykorzystujący ten komponent.