Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Использование DevExpress (часть 3)

Автор: volser
Дата сообщения: 25.06.2009 13:54
Roma4ke

В справке пишут только основную информацию. Поищи по коду. Найди сначала класс потом найди метод GetCellStyle.
Автор: Roma4ke
Дата сообщения: 25.06.2009 14:10
f3ka
1.топик обсуждения DevExpress а не делфи.
2. помог бы лучше как реализовать вот это

class TcxCustomGridTableItemWrapper: public TcxCustomGridTableItem
{
нужны конструкторы и дест , на те
TcxCustomGridTableItemWrapper

() {TcxCustomGridTableItem::TcxCustomGridTableItem();} -- ругается
~TcxCustomGridTableItemWrapper () {TcxCustomGridTableItem::~TcxCustomGridTableItem();} -- ругается
}

да и вообще я не пойму прятать эту функцию , геморы какие то не понятные , что может быть проще сделать возможность ставить стиль в колонках для кнопок или чего еще ...
Автор: f3ka
Дата сообщения: 25.06.2009 14:32
Roma4ke
по поводу топика обшибься... на другое название посмотрел...
может все таки конструктор и деструктор пишутся так?

Код:
class TcxCustomGridTableItemWrapper: public TcxCustomGridTableItem
{
public:
TcxCustomGridTableItemWrapper (TComponent* Owner) {TcxCustomGridTableItem::TcxCustomGridTableItem(Owner);}
~TcxCustomGridTableItemWrapper () {TcxCustomGridTableItem::~TcxCustomGridTableItem();}
}
Автор: vladman
Дата сообщения: 25.06.2009 14:33
Roma4ke

Цитата:
помог бы лучше как реализовать вот это

Что лучше, а что хуже не вам решать. f3ka и так достаточно много вам разжевал.


Цитата:
как реализовать на С++ ???
type (мой класс)TcxCustomGridTableItemWrapper = class(какойто классTcxCustomGridTableItem);...
..да и вообще я не пойму прятать эту функцию

Так ваше непонимание относится не к DevExpress, а к непониманию как сие реализовать на с++
Автор: Roma4ke
Дата сообщения: 25.06.2009 16:11
создал класс таким образом :
class TcxCustomGridTableItemWrapper : public TcxCustomGridTableItem

{

public:
inline __fastcall virtual TcxCustomGridTableItemWrapper(TComponent* AOwner):TcxCustomGridTableItem(AOwner)
{TcxCustomGridTableItem::TcxCustomGridTableItem(AOwner);}
inline __fastcall virtual ~TcxCustomGridTableItemWrapper () {TcxCustomGridTableItem::~TcxCustomGridTableItem();}

} ;
но не получил доступ к защищенным функциям (:
Автор: vladman
Дата сообщения: 25.06.2009 16:44
Roma4ke

Цитата:
создал класс таким образом :

How to access a protected class member
А здесь пример, как это нужно делать на С++
Автор: Roma4ke
Дата сообщения: 25.06.2009 17:47
Не выходит, делаю как написано .

даже в исходники залез и поставил public на getcellstyle. оказывается это функция , нельзя написать getcellstyle->assign. Но что главное вылетает ошибка при вызове getcellstyle ((. так что через исходники исправить не получиться .

А как они пишут :

i = TmyTypeAccess(A).DoSomething;
я пробую - все равно не открывается доступ.
Автор: vladman
Дата сообщения: 25.06.2009 17:52
Roma4ke

Цитата:
Но что главное вылетает ошибка при вызове getcellstyle

Какая ошибка вылетает? И что вы понимаете под
Цитата:
все равно не открывается доступ
. Как вы это обнаруживаете.
Если не открывается доступ, то вы не сможете откомпилировать модуль.
Автор: Roma4ke
Дата сообщения: 25.06.2009 18:09
vladman

Цитата:
Какая ошибка вылетает? И что вы понимаете под

аксесс валейшин какой то в файле cxGrid6.bpl, но я так понимаю это из-за того что я поменял исходники cxGridCustomTable.pas и hpp. и сработала защита так сказать

Цитата:
Как вы это обнаруживаете.

да не компелируется, и в попам окошке с функциями не появляется getcellstyle.

сам класс wrapper отлично работает. с этим я разобрался.
Автор: vladman
Дата сообщения: 25.06.2009 18:45
Roma4ke

Цитата:
сам класс wrapper отлично работает


Цитата:
не компелируется, и в попам окошке с функциями не появляется getcellstyle

Так как же тогда класс работает?
Автор: volser
Дата сообщения: 25.06.2009 18:55
Roma4ke

Выложи полный текст, того что у тебя получилось. Что я уже совсем запутался что у тебя не получается. Какая полная версия грида?
Автор: JohnSilver182
Дата сообщения: 25.06.2009 20:11
Это Я . Я вот тут подумал , что когда редактируеш данные через cxGrid , то при переходе на след. запись делается POST .

А как сделать что бы при закрытии окна и DATASET в режиме EDIT, cxGrid Если надо , сам делал POST ?
Автор: volser
Дата сообщения: 25.06.2009 20:49
JohnSilver182

А что мешает на закрытие форму самому сделать пост датасету?
Автор: Meister Floh
Дата сообщения: 25.06.2009 20:57
JohnSilver182
volser
а еще разумнее на закрытие датасета сделать пост
Автор: volser
Дата сообщения: 25.06.2009 21:28
Meister Floh

Не думаю что это разумно. А если нужно отменить изменения?
Автор: f3ka
Дата сообщения: 26.06.2009 07:40
JohnSilver182
Meister Floh
volser
вообще разумнее всего всегда задавать вопрос про сохранение, если есть какие то неподтвержденный изменения!
Автор: data man
Дата сообщения: 26.06.2009 09:13
Весьма интересно [more=VCL 2009 roadmap]
VCL 2009 roadmap

Despite the replies I've posted in forum posts over the past few months about our VCL roadmap, they're proving hard to find. Indeed, I couldn't find my previous answers myself and I wrote them. Sigh. Someone needs to teach me how to add searchable keywords...

Anyway, a quick recap of the 2009 roadmap for VCL customers is in order:

* ExpressQuantumTreeList v5 is almost done.
o Will be released in Build 44 in a few days.
o Details on new features here: ExpressQuantumTreeList 5 – New Features
* ExpressLayout Control v2
o First beta will be released in Build 44
o List of features will be published with Build 44 (I'll publish them in a blog post then)
o Aiming for an August release
* ExpressPrinting System v4
o Beta in August
o Release in September/October
o Features include:
+ PDF support
+ Separate the ReportLink packages into design and runtime parts
+ Skinnable dialogs to bring visual consistency in skinned applications
+ Add the capability to display the Print Preview dialog using the Ribbon style (to bring visual consistency in Ribbon style applications)
+ Add the capability to print TcxLabel controls
* ExpressQuantumGrid v7
o Beta in Q4 perhaps.
o Release late in the year, maybe next year
o No official details on features yet
[/more]
Ссылка на оригинал - там весьма "горячее" обсуждение !
Автор: volser
Дата сообщения: 26.06.2009 10:36
Кто то уже ставил себе ExpressQuantumTreeList v5 (v44)? Я поставил, запустился на реальном проекте, в результате нашел в их исходниках 3 баги. Такое ощущение что они бету тупо переименовали в релиз.
Автор: data man
Дата сообщения: 26.06.2009 10:43
volser
Да нет, не тупо - при сравнение исходников с бетой, очень много различий.
У меня Demo'сы нормально работают.
Автор: volser
Дата сообщения: 26.06.2009 10:55
Демосы может и работают. А баги все равно есть. Например TcxTreeListOptionsBehavior.DragDropText := True; Колонки все скрыты. При драге вываливается ошибка в процедуре function TcxCustomTreeListControl.GetDragDropViewParams: TcxViewParams;.
Автор: data man
Дата сообщения: 26.06.2009 11:13
volser
Да, придется править исходники - делать проверку на количество видимых колонок. Эх...
Автор: jicoff
Дата сообщения: 26.06.2009 11:46
Roma4ke

Не надо мучаться с конструкторами и деструкторами, если нужен только доступ к protected свойствам. Они вообще никак не учавствуют, т.к. объект не создается, а преобразуется ссылка с одного типа на другой.

Добавлено:


Вот работающий пример:

class TcxCustomGridTableItemWrapper : public TcxCustomGridTableItem
{
public:
TcxEditStyle *__fastcall GetCellStyle(void)
{
return TcxCustomGridTableItem::GetCellStyle();
}
};


{
... ((TcxCustomGridTableItemWrapper*)GridViewColumn1)->GetCellStyle()->Assign(((TcxCustomGridTableItemWrapper*)GridViewColumn2)->GetCellStyle());
...
}

Проверял в проекте, никаких ошибок и проблем. Под рукой не было TcxEditStyle стиля, поэтому просто написал ((TcxCustomGridTableItemWrapper*)GridViewColumn2)->GetCellStyle().


Кстати, вместо TcxCustomGridTableItem(cxGrid1TableView1Column1).Styles->Assign(cxButtonEdit1->Style), что однозначно не правильно, надо писать ((TcxCustomGridTableItem*)cxGrid1TableView1Column1)->Styles->Assign(cxButtonEdit1->Style). За работоспособность не отвечаю, но ошибок не должно быть.

Автор: Roma4ke
Дата сообщения: 26.06.2009 14:50
volser
Версия 6.0.
создал класс.
class TcxCustomGridTableItemWrapper : public TcxCustomGridTableItem
{

public:
inline __fastcall virtual TcxCustomGridTableItemWrapper(TComponent* AOwner):TcxCustomGridTableItem(AOwner)
{TcxCustomGridTableItem::TcxCustomGridTableItem(AOwner);}
inline __fastcall virtual ~TcxCustomGridTableItemWrapper () {TcxCustomGridTableItem::~TcxCustomGridTableItem();}

} ;

потом пишу так :
TcxCustomGridTableItem *Hel;
TcxCustomGridTableItemWrapper(Hel).GetCellStyle(); -- getCellStyle все не доступен.

Добавлено:
jicoff
спасибо разъяснил, но ошибка вылетает аксес валейшн в адресе таком то в модуле cxGrid6.bpl
Автор: volser
Дата сообщения: 26.06.2009 15:00
Roma4ke


Цитата:
Версия 6.0


А точнее? Какой билд?

То что написал jicoff не работает?
Автор: Roma4ke
Дата сообщения: 26.06.2009 15:06
исправился, ошибка не вылетает ,но стиль не задается ((
пишу :
((TcxCustomGridTableItemWrapper*)tvTestGoPaus(моя колонка))->GetCellStyle()->Assign(cxButtonEdit1->Style);
Автор: volser
Дата сообщения: 26.06.2009 15:10
Roma4ke
На какое событие пишешь код?
И выложи наконец код того что у тебя получилось. Телепатические способности на исходе
Автор: Roma4ke
Дата сообщения: 26.06.2009 15:16
class TcxCustomGridTableItemWrapper : public TcxCustomGridTableItem
{

public:

TcxEditStyle *__fastcall GetCellStyle(void)
{
return TcxCustomGridTableItem::GetCellStyle();
}
inline __fastcall virtual TcxCustomGridTableItemWrapper(TComponent* AOwner):TcxCustomGridTableItem(AOwner)
{TcxCustomGridTableItem::TcxCustomGridTableItem(AOwner);}
inline __fastcall virtual ~TcxCustomGridTableItemWrapper () {TcxCustomGridTableItem::~TcxCustomGridTableItem();}

} ;



TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{


cxGrid1->DoubleBuffered = true;


for (int i=0; i< 7; i++)
{
tvBasicTest->DataController->InsertRecord(i);
tvBasicTest->DataController->Values[i][0] = i + 1 ;
tvBasicTest->DataController->Values[i][5] = "00:00:00" ;
tvBasicTest->DataController->Values[i][3] = "00:00:00" ;
cxEditRepository1->CreateItem(__classid(TcxEditRepositoryButtonItem));
cxEditRepository1->Items[i+1]->Properties = cxEditRepository1ButtonItem1->Properties;


}

((TcxCustomGridTableItemWrapper*)tvTestGoPaus)>GetCellStyle()>Assign(cxButtonEdit1->Style);

}
ну впринципе вот , создаю грид, создаю рекорды ,пытаюсь назначить стиль кнопкам

Добавлено:
как будто Assign не работает , просто игнорируется.
Автор: volser
Дата сообщения: 26.06.2009 15:30
Roma4ke

Цитата:
((TcxCustomGridTableItemWrapper*)tvTestGoPaus)>GetCellStyle()>Assign(cxButtonEdit1->Style);


Это реальная строка или писал по памяти?
Автор: Roma4ke
Дата сообщения: 26.06.2009 15:36
реальная строка, ((TcxCustomGridTableItemWrapper*)tvTestGoPaus)->GetCellStyle()->Assign(cxButtonEdit1->Style);
еще вот так пытался.
TcxEditStyle *h = ((TcxCustomGridTableItemWrapper*)tvTestGoPaus)->GetCellStyle();
TcxEditStyle *s = cxButtonEdit1->Style;
h->Assign(s);

ошибок не выдаёт, но assign не срабатывает ((
Автор: jicoff
Дата сообщения: 26.06.2009 17:11
Roma4ke

А что должно быть на выходе? Если глянуть в исходники (под рукой только 40 версия), то метод Assign затрагивает мемберы:

FButtonStyle
FButtonTransparency
FGradient
FGradientButtons
FGradientDirection
FPopupBorderStyle
FPopupCloseButton


Добавлено:
Ошибся, там еще родительский метод вызывается.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081

Предыдущая тема: Delphi: tcp клиент в потоке


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.