singlepost

Текстовый редактор << На главную или назад  

Господа коллеги, прошу помощи.
Borland C++ 6.

Пишу курсовой по вышеуказанной теме, столкнулся с двумя проблемами.
1) При экспорте текста в Word экспортируется только текст. Шрифт, выравнивание параграфа и т.д. скидываются на дефолт.
Код:
void __fastcall TForm1::MicrosoftWord1Click(TObject *Sender)
{
Variant V;

V = CreateOleObject("Word.Basic");
V.Exec(Procedure("AppShow"));
V.Exec(Procedure("FileNew") << "Normal");
V.Exec(Procedure("Insert") << Editor->Text);
}

2) Никак не пойму как прописать запрос на сохранение изменений в файле при закрытии окна.

На выходе через меню (Файл – Выход) запрос стоит
код:

void __fastcall TForm1::Exit1Click(TObject *Sender)
{
if (Editor->Modified)
{
TMsgDlgButtons temp_set;
temp_set<< mbYes<<mbNo <<mbCancel;
String buffer = "Сохранить изменения?";

switch(MessageDlg(buffer, mtConfirmation,temp_set,0))
{
case mrYes:
{
Save1Click(this);
this->Close();
}
break;
case mrNo:
this->Close();
break;
}
}
else
this->Close();
}

но как сделать ту же проверку при обычном закрытии – не знаю.

Прошу помощи.
Заранее благодарен.

57 ответов в теме “Текстовый редактор”

  1. 10
    Роман Саламатин ответил:

    Всем спасибо.
    Сейчас в отъезде, буду дома – проверю.

  2. 9
    Леонид Максимов ответил:

    без временных файлов? создайте Storage в памяти и сохраняйте в него (если ваш едит может ответить на сообщение с именем вроде EM_GETOLEINTERFACE).

  3. 8
    Антон Щиров ответил:

    А Editor->Lines->Text не содержит RTF?

  4. 7
    Денис Лисов ответил:

    А в объявление класса внести новый метод?

  5. 6
    Роман Саламатин ответил:

    2Антон Щиров
    Да, понял о чём именно речь. Только компиялтор пропускать это событие не хочет по какой-то причине. Я даже скопировал пример просто из хелпа

    void __fastcall TForm1::FormCloseQuery(TObject *Sender, bool &CanClose)

    {
    if (MessageDlg("Close the form?", mtConfirmation, TMsgDlgButtons() << mbOK << mbCancel,0) == mrCancel, mbOK, NULL)
    CanClose = false;
    }

    на что компилятор мне ответил
    (С++ Error) Unit1.cpp(132): E2316'_fastcall TForm1::FormCloseQuery(TObject *,bool &)' is not a member of 'TForrm'

    Подскажите, пожалуйста, где оплошал.

    2Леонид maxleo Максимов
    К сожалению, свойства TextRTF или типа такого нет. А в RTF сохранить просто
    this->Editor->Lines->SaveToFile('FileName');
    только как раз в том и дело, что нужен прямой экспорт, без временных файлов.

  6. 5
    Леонид Максимов ответил:

    я не пользовался BC++6 (5.02 – последний из виденых мною). однако есть предположение, что либо есть свойство типа TextRTF (по аналогии с RichTextbox), либо можно сохранить в файл в RTF-формате.

  7. 4
    Антон Щиров ответил:

    Событие такое есть у формы. Вызывается при закрытии формы. Параметром CanClose = false процесс закрытия отменяется

  8. 3
    Роман Саламатин ответил:

    2Антон Щиров
    Можно немного подробнее? Желательно в примере.

    2Леонид maxleo Максимов
    В том то и дело. Не могу найти как передать само форматирование.

  9. 2
    Леонид Максимов ответил:

    "Editor->Text" ничего кроме текста не даст.

  10. 1
    Антон Щиров ответил:

    OnCloseQuery

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.