Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Подскажите как применить Мои класс ? как исп-ть его функции для RichEdit 
V
    Опции темы
beautifulll
Дата 15.10.2006, 21:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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 .*"
А как надо не знаю smile  smile 
PM MAIL   Вверх
fry
Дата 15.10.2006, 23:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 257
Регистрация: 4.10.2006

Репутация: нет
Всего: 3



Код  StrikeOut_true() можно увидеть?
PM MAIL   Вверх
fry
Дата 15.10.2006, 23:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 257
Регистрация: 4.10.2006

Репутация: нет
Всего: 3



проверь . и ->
И еще мне не нравиться >> и << в методах класса, но это так....
PM MAIL   Вверх
Oberon83
Дата 16.10.2006, 11:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 158
Регистрация: 6.5.2005
Где: Республика Чуваши я

Репутация: 1
Всего: 1



beautifulll, код конструктора класса какой?
В конструкторе необходимо присвоить: RichEdit = Edit.
Во вторых при создании класса:
Код

Styles NewOb(Твой RichEdit);

либо 
Код

Styles NewOb;
NewOb = new Styles(Твой RichEdit);


--------------------
OpenArea.ru
PM MAIL ICQ   Вверх
beautifulll
Дата 16.10.2006, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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;
}
//---------------------------------------------------------------------------

 smile 

PM MAIL   Вверх
Oberon83
Дата 17.10.2006, 08:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 158
Регистрация: 6.5.2005
Где: Республика Чуваши я

Репутация: 1
Всего: 1



beautifulll, и какую ошибку показывает? Скорее всего ошибка доступа к памяти, поскольку ты под свой класс память не выделяешь.
Попробуй так:
Код

Styles NewOb;    
NewOb = new Styles(Твой RichEdit);

Должно получиться.
--------------------
OpenArea.ru
PM MAIL ICQ   Вверх
beautifulll
Дата 17.10.2006, 20:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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. автоматически предлогается список функций моего класса.
Но выдает ошибку памяти после запуска.
 smile 
PM MAIL   Вверх
Oberon83
Дата 18.10.2006, 08:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 158
Регистрация: 6.5.2005
Где: Республика Чуваши я

Репутация: 1
Всего: 1



beautifulll, код приложения и класса в студию. Где подключается класс? Ошибку памяти выдает потому что ты под свой объект класса память не выделяешь.
--------------------
OpenArea.ru
PM MAIL ICQ   Вверх
beautifulll
Дата 18.10.2006, 20:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 20.9.2006

Репутация: нет
Всего: нет



Вот то что для формы на которой только RichEdit1 и кнопка  smile .
Код

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
 #include "Unit2.h"


//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;

 [color=red]Styles Clas(Form1->RichEdit1); [/color]//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::SpeedButton1Click(TObject *Sender)
{
   Clas.StrikeOut_false();
}
//---------------------------------------------------------------------------



Вот то что для описания моего класса: это Unit2.h
Код

//----- файл unit2.h ---------------------------------------------------
#ifndef Unit2H
#define Unit2H
#include <ComCtrls.hpp>

class Styles
{
protected:
  TFontStyles FontStyle;
  TRichEdit *RichEdit;
public:
  Styles( TRichEdit *Edit );
  void Underline_true(); // подчёркивание
  void Underline_false();
  void StrikeOut_true(); // зачёркивание
  void StrikeOut_false();
};
//--------------------------------------------------------------------------



А вот где функции описаны Unit2.cpp:
Код

//--------- файл unit2.cpp -----------------------------------------------
#pragma hdrstop
#include "Unit2.h"

Styles::Styles( TRichEdit *Edit )
{
  RichEdit = Edit;
  FontStyle = Edit->SelAttributes->Style;
}
//---------------------------------------------------------------------------

void Styles::Underline_true()
{
  FontStyle << fsUnderline;
  RichEdit->SelAttributes->Style = FontStyle;
}
//---------------------------------------------------------------------------
void Styles::Underline_false()
{
  FontStyle >> fsUnderline;
  RichEdit->SelAttributes->Style = FontStyle;
}
//---------------------------------------------------------------------------
void Styles::StrikeOut_true()
{
  FontStyle << fsStrikeOut;
  RichEdit->SelAttributes->Style = FontStyle;
}
//---------------------------------------------------------------------------
void Styles::StrikeOut_false()
{
  FontStyle >> fsStrikeOut;
  RichEdit->SelAttributes->Style = FontStyle;
}
//---------------------------------------------------------------------------
#pragma package(smart_init)
 

 


Я вроде бы понимаю, что проблемы с памятью, а как решить то их незнай!!! smile 
PM MAIL   Вверх
segmentation_fault
Дата 18.10.2006, 21:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Регистрация: 14.2.2005
Где: в интернете

Репутация: нет
Всего: 1



beautifulll, напиши так:
Код

__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
   Styles *Clas = new Styles(Form1->RichEdit1);
}




PM MAIL   Вверх
beautifulll
Дата 19.10.2006, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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 не узнается в процедуре нажатия кнопки.

ВСЁ, РАЗОБРАЛАСЬ, ВСЁ ВЫХОДИТ ТЕПЕРЬ.ГЛУПЫШКА ПРОСТО. СПАСИБО ВСЕМ БОЛЬШОЕ!!!в жизни бы сама не додумалася. smile 

Это сообщение отредактировал(а) beautifulll - 19.10.2006, 19:41
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0492 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.