Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Наследовать TStringGrid 
:(
    Опции темы
DissDoc
Дата 26.3.2007, 11:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Что нудно наследовать от TStringGrid - чтобы мой грид не вываливался при инициализации... Если проще - покажите как нужно наследовать TStringGrid пожалуйста.  smile  smile 
PM MAIL WWW   Вверх
_hunter
Дата 26.3.2007, 11:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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





--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
DissDoc
Дата 26.3.2007, 11:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



 smile Там просто список функция, которые я знаю... А вот как мне конструктор создать, чтобы все работало у меня. Собсно
.h
Код

#define DStringGridH

#include <Classes.hpp>
#include <Grids.hpp>
//---------------------------------------------------------------------------
class DStringGrid : public TStringGrid
{
public:
__fastcall DStringGrid(ЧТО ПИСАТЬ СЮДА?);
};
//---------------------------------------------------------------------------
#endif

.cpp
Код

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

#include <vcl.h>
#pragma hdrstop

#include "DStringGrid.h"

//---------------------------------------------------------------------------
DStringGrid* DStringGrid;
__fastcall DStringGrid::DStringGrid(????) : public TStringGrid(????)

#pragma package(smart_init)


И достаточно ли этого для размещения на форме? 
Потом просто настройка DStringGrid->Width  и т.д. это все понятно...
PM MAIL WWW   Вверх
_hunter
Дата 26.3.2007, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



Цитата(DissDoc @  26.3.2007,  11:21 Найти цитируемый пост)
ам просто список функция, которые я знаю... А вот как мне конструктор создать, чтобы все работало у меня.

а это:
Цитата

__fastcall TMyStringGrid(
    TComponent* AOwner) :
      TStringGrid(AOwner) {}

что по-твоему?
и что это:
Цитата(DissDoc @  26.3.2007,  11:21 Найти цитируемый пост)
__fastcall DStringGrid::DStringGrid(????) : public TStringGrid(????)

за цирк?..
ты перед тем, как компоненты создавать, почитай что такое классы, как они наследуются...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
DissDoc
Дата 26.3.2007, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Не работает все равно... Пишет "неправильный тип" и ругается на 
__fastcall DStringGrid::DStringGrid(TComponent *AOwner) : TStringGrid(AOwner){}
Если вам не сложно - могли бы вы показать как в VCL наследовать? ну не получается.
В VC++ например создаешь свой класс - показываешь откуда наследовать - и он сам создает работающий уже класс... Если б в билдере такое было - я б не спрашивал - сам бы разобрался что и как необходимо.
помогите пожалуйста  smile ) 
PM MAIL WWW   Вверх
_hunter
Дата 26.3.2007, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



а в .h-нике что написанно?


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
DissDoc
Дата 26.3.2007, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Код

#ifndef DStringGridH
#define DStringGridH

#include <Classes.hpp>
#include <Grids.hpp>
//---------------------------------------------------------------------------
class DStringGrid : public TStringGrid
{
public:
    __fastcall DStringGrid(TComponent *AOwner);
};
//---------------------------------------------------------------------------
extern PACKAGE DStringGrid *DStringGrid;

#endif


И сразу вопросик - сразу объявить функцию MoveColumn - как public - чтобы передвигать колонки. И нужно ли что-нить в этой функции писать ии нет? (она как бы есть в TCustomGrid'e)

Это сообщение отредактировал(а) DissDoc - 26.3.2007, 14:28
PM MAIL WWW   Вверх
DissDoc
Дата 26.3.2007, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Чуть-чуть подправил h файл
Код

/#ifndef DStringGridH
#define DStringGridH

#include <Classes.hpp>
#include <Grids.hpp>
//---------------------------------------------------------------------------
class DStringGrid : public TStringGrid
{
    typedef TStringGrid inherited;
public:
    inline __fastcall DStringGrid(TComponent *AOwner): TStringGrid(AOwner) {}
    inline __fastcall virtual ~DStringGrid(void) {}
};
#endif

Компилятор перестал ругаться. Но вот при запуске программа вываливается с сообщением ProcessStopped =\
в реализации пишу
Код

вне класса рядом с TForm1* Form1;
DStringGrid *dsg;
//------------
TForm1::CreateForm(...)
{
dsg->Width = 100;
  dsg->Height = 100;
  dsg->ColCount = 4;
  dsg->RowCount = 4;
  dsg->Top = 20;
  dsg->Left = 20;
}

.cpp файл моего класса пуст,т.е. вот только что есть
Код

#include <vcl.h>
#pragma hdrstop
#include "DStringGrid.h"
#pragma package(smart_init)


И второй вопрос остался в силе - как по поводу сделать public функцию MoveColumn
Есть идея вот такая
Код

void __fastcall DStringGrid::MoveColumn(int start, int end)
{
inherited;
}

PM MAIL WWW   Вверх
_hunter
Дата 26.3.2007, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



а что такое CreateForm? и где она вызывается? и в чем ее смысл?
по второму вопросу -- параметры не имеют значения. в теле метода просто вызови метод предка:
TStringGrid::MoveColumn(start, end);


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
DissDoc
Дата 26.3.2007, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



CreateForm - это просто написал. Т.е. пусть мой StringGrid вызывается по событию нажатия на какую-нить кнопку Button1 - совершенно не важно. Просто как только создаю свой грид - то программа вываливается  smile 
PM MAIL WWW   Вверх
_hunter
Дата 26.3.2007, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



Цитата(DissDoc @  26.3.2007,  17:53 Найти цитируемый пост)
Т.е. пусть мой StringGrid вызывается по событию нажатия на какую-нить кнопку

этот код был бы слвсем не лишним...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Vyacheslav
Дата 27.3.2007, 10:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

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



Не выдержал :(
1. Сколько раз можно говорить, что прежде чем работать с объектом, надо его создать
Вот это
Код

DStringGrid *dsg;

не создание объекта, а лишь объявление указателя, который будет указывать  на объект. Самого объекта еще нет. Перед первым использование должно быть код что-то вроде этого
Код

dsg = new DStringGrid( this) 

2.
 
Код

class DStringGrid : public TStringGrid
{
    typedef TStringGrid inherited;
public:
     __fastcall DStringGrid(TComponent *AOwner): TStringGrid(AOwner) {}
     __fastcall virtual ~DStringGrid(void) {}
    using TStringGrid::MoveColumn;
};






--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

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

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

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


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

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


 




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


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

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