![]() |
|
|
![]()
|
|
| beautifulll |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 20.9.2006 Репутация: нет Всего: нет |
Есть класс (мне с ним на этом форуме помогли):
class Styles { protected: TFontStyles FontStyle; TRichEdit *RichEdit; public: Styles( TRichEdit *Edit ); void Underline_true(); // подчёркивание void Underline_false(); void StrikeOut_true(); // зачёркивание void StrikeOut_false(); }; Как исп-ть его для RichEdit1 , который уже на форме. Сперва надо объявить какой-нибудь любой объект этого типа, в смысле: Styles NewOb(TRichEdit *RichEdit1); ??? Только тогда почему-то исп-ние функций класса не получается, т.е. на строку NewOb.StrikeOut_true(); выдается ошибка, типа "left . or .*" А как надо не знаю |
|||
|
||||
| fry |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 257 Регистрация: 4.10.2006 Репутация: нет Всего: 3 |
Код StrikeOut_true() можно увидеть?
|
|||
|
||||
| fry |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 257 Регистрация: 4.10.2006 Репутация: нет Всего: 3 |
проверь . и ->
И еще мне не нравиться >> и << в методах класса, но это так.... |
|||
|
||||
| Oberon83 |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 158 Регистрация: 6.5.2005 Где: Республика Чуваши я Репутация: 1 Всего: 1 |
beautifulll, код конструктора класса какой?
В конструкторе необходимо присвоить: RichEdit = Edit. Во вторых при создании класса:
либо
--------------------
OpenArea.ru |
||||
|
|||||
| beautifulll |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 20.9.2006 Репутация: нет Всего: нет |
Я так делала Styles NewOb(Твой RichEdit);, т.е. Styles NewOb(Form1-> RichEdit1); а он всё работать не хочет именно когда я ввожу эту строчку, как ее уберу остальное запускается.
А сами функции вот какие: #pragma hdrstop #include "Unit2.h" Styles::Styles( TRichEdit *Edit ) { RichEdit = Edit; FontStyle = Edit->SelAttributes->Style; } //--------------------------------------------------------------------------- void Styles::StrikeOut_true() { FontStyle << fsStrikeOut; RichEdit->SelAttributes->Style = FontStyle; } //--------------------------------------------------------------------------- |
|||
|
||||
| Oberon83 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 158 Регистрация: 6.5.2005 Где: Республика Чуваши я Репутация: 1 Всего: 1 |
beautifulll, и какую ошибку показывает? Скорее всего ошибка доступа к памяти, поскольку ты под свой класс память не выделяешь.
Попробуй так:
Должно получиться. --------------------
OpenArea.ru |
|||
|
||||
| beautifulll |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 20.9.2006 Репутация: нет Всего: нет |
Так не получается:
в строке Styles NewOb; выдает ошибку: Could not find a match for ‘Styles::Styles()’ В строке NewOb =new Styles(Form1->RichEdit1); ошибка Type name expected. Единственный вариант когда программа запускается- это Styles NewOb(Form1->RichEdit1); При таком варианте хотя б когда пишу потом NewOb. автоматически предлогается список функций моего класса. Но выдает ошибку памяти после запуска. |
|||
|
||||
| Oberon83 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 158 Регистрация: 6.5.2005 Где: Республика Чуваши я Репутация: 1 Всего: 1 |
beautifulll, код приложения и класса в студию. Где подключается класс? Ошибку памяти выдает потому что ты под свой объект класса память не выделяешь.
--------------------
OpenArea.ru |
|||
|
||||
| beautifulll |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 20.9.2006 Репутация: нет Всего: нет |
Вот то что для формы на которой только RichEdit1 и кнопка
Вот то что для описания моего класса: это Unit2.h
А вот где функции описаны Unit2.cpp:
Я вроде бы понимаю, что проблемы с памятью, а как решить то их незнай!!! |
||||||
|
|||||||
| segmentation_fault |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 82 Регистрация: 14.2.2005 Где: в интернете Репутация: нет Всего: 1 |
beautifulll, напиши так:
|
|||
|
||||
| beautifulll |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 20.9.2006 Репутация: нет Всего: нет |
Если я объявляю объект в каждой процедуре нажатия кнопки, то всё работает, т.е.:
void __fastcall TForm1::SpeedButton1Click(TObject *Sender) { Styles *Clas = new Styles(Form1->RichEdit1); (*Clas).StrikeOut_false(); } Но у меня же будет еще несколько кнопок, по нажатию которых мне нужен объект моего класса , разве так правильно выделять место памяти для объекта моего класса каждый раз(в каждой процедуре кнопки)? А если __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { Styles *Clas = new Styles(Form1->RichEdit1); } То объект Clas не узнается в процедуре нажатия кнопки. ВСЁ, РАЗОБРАЛАСЬ, ВСЁ ВЫХОДИТ ТЕПЕРЬ.ГЛУПЫШКА ПРОСТО. СПАСИБО ВСЕМ БОЛЬШОЕ!!!в жизни бы сама не додумалася. Это сообщение отредактировал(а) beautifulll - 19.10.2006, 19:41 |
|||
|
||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |