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

» Использование DevExpress 2

Автор: jicoff
Дата сообщения: 05.11.2008 16:38
ZalivkoDenis

Это точно, нужно за 2 события зацепляться OnDetailFirst и OnDetailIsCurrentQuery, при этом у детейл вью параметр DetailInSQLMode = true. Второе событие всегда вызывается при изменении текущей записи в детейле, чтобы определить - это та же мастер-запись или уже другая. Если событие вернет false, то тогда вызывается первое событыие для перечитки информации в соответствии с новой мастер-записью.

Например, у меня детейл DataSet - это процедура, как правило. В событии OnDetailIsCurrentQuery проверяю параметры процедуры: соответствуют ли они текущей мастер-записи

return DetailProc->ParamByName("@Name")->Value == AMasterDetailKeyValues;

В событии OnDetailFirst что-то типа:

if(DetailProc->ParamByName("@Name")->Value == AMasterDetailKeyValues)
{
DetailProc->First();
return;
}
DetailProc->DisableControls();
try
{
try
{
DetailProc->Close();
DetailProc->Params->ParamByName("@Name")->AsInteger = AMasterDetailKeyValues;
DetailProc->Open();
}
catch(...)
{
throw;
}
}
__finally
{
DetailProc->EnableControls();
}
AReopened = true;

Автор: Ziltoid
Дата сообщения: 05.11.2008 16:50
samusev

И все-таки я бы попробовал в основной проге сделать ряд функций на экспорт по управлению Риббоном и dxTab'ом. В параметры функции должны идти строки и числа (никаких указателей), а в ДЛЛке наруливал бы адреса функций через GetProcAddress и вызывал бы.
Автор: ChiPnGo
Дата сообщения: 06.11.2008 21:03
TdxDBLookupEdit

Что-то никак не могу программно стереть в нем текст. О_о

Добавлено:
В его ListSource поменялся фильтр, нужно выбранное значение стереть.

Добавлено:
Ясн, датасет надо подергать.
Автор: clear2121
Дата сообщения: 07.11.2008 02:30
Hi!
Может кто пояснит?

Имею TcxTreeList (DevExpress), называется mFir. Вставляю в него записи. На событие SelectionChanged делаю


Код:
lPrim->Caption = mFir->FocusedNode->Values[7];
tmpID = mFir->FocusedNode->Values[3];
tmpMID = mFir->FocusedNode->Values[4];
tmpB = mFir->FocusedNode->Values[5];
LoadTels(); <--- моя функция
Автор: infomSB
Дата сообщения: 07.11.2008 08:44
clear2121
А где конкретно появляется ошибка доступа ? Ведь во втором коде ей появится в принципе негде, только можете в методе DataSQL
Автор: zvyagaaa
Дата сообщения: 07.11.2008 14:09
Ziltoid
спасибо за дллку, скажите начинающему, получается, что можно скины сейчас не компилить? или компилить надо, т.к. не скомпилируются тогда другие компоненты пакета?
Автор: Ziltoid
Дата сообщения: 07.11.2008 17:15
zvyagaaa

Скины (в смысле dpk-шки с ними) как раз компилить не надо. Идея состояла именно в этом - отвязаться от этих пакетов, потому что они утолщают экзешник на 250 кил каждый. Компилить надо dpk-шки, отвечающие за отрисовку скина на конкретном компоненте: dcldxSkinsdxBarsPaintersDXX.dpk - отрисовка dxBar, dcldxSkinscxPCPainterDXX.dpk - отрисовка cxPageControl, dxSkinsdxRibbonPainterDXX.dpk - отрисовка Ribbon и тд.
Автор: zvyagaaa
Дата сообщения: 07.11.2008 17:22
Ziltoid
о, спасибо за инфу, а то прога считай пустая, на 6 метров больше стала из-за скинов
Автор: TSGURAL
Дата сообщения: 08.11.2008 13:16
Вопрос по использованию полей типа CheckBox в cxGrid:
при перемещении по записям с помощью мышки CheckBox помечается, даже если клик был не на самом CheckBox-е, который занимает небольшое место в центре ячейки, а рядом. Как этого избежать?
Автор: wbsg
Дата сообщения: 08.11.2008 16:39

Цитата:
Скины (в смысле dpk-шки с ними) как раз компилить не надо.


Так, в общем к слову пришлось. Компилить-то их можно, но в IDE устанавливать не надо.
Если скины установить в IDE, то IDE сразу же в uses дописывает набор установленных скинов, а это как раз увеличение размера и дает. Если же их не устанавливать, то по умолчанию доступен только UserSkin, а остальные придется подгружать через LoadSkinFromFile (так, кажется)

Да, речь идет о v.37+
Автор: SHKoder
Дата сообщения: 08.11.2008 21:09
поставил CodeGear™ Delphi® 2009 Version 12.0.3210.17555 Copyright © 2008 Embarcadero Technologies, Inc. All Rights Reserved.
т.е.
CodeGear Delphi 2009 RTM v12.0.3170.16989
Delphi_CBuilder2009Update1
DevExpr_v39_25.09.2008

ложу на форму объекты cxTButton и cxTEdit
дублкликом генерирую события OnClick и получаю в коде это:

Код: procedure TForm1.cxButton2Click(: Sender);
begin

end;

procedure TForm1.cxTextEdit1PropertiesChange(Sender17~TObject: T);
begin

end;
Автор: clear2121
Дата сообщения: 09.11.2008 01:44
infomSB
В том то и дело, что появится негде. Один и тот же код получения данных через функцию DataSQL по всей программе работает нормально. Мне просто непонятно - если её вызов в событие SelectionChanged, то работает нормально, а если ещё через функцию, то ошибка доступа к памяти.

Ладно, работает и уже хорошо.
Автор: freimanis
Дата сообщения: 09.11.2008 14:22

Цитата:
Вопрос по использованию полей типа CheckBox в cxGrid:
при перемещении по записям с помощью мышки CheckBox помечается, даже если клик был не на самом CheckBox-е, который занимает небольшое место в центре ячейки, а рядом. Как этого избежать?

В общем случае никак. Вариант один - написать собственного наследника TcxCheckBoxProperties.
Автор: afiget
Дата сообщения: 10.11.2008 01:12
SHKoder
А

Цитата:
DevExpr_v39_25.09.2008

соместимы с Delphi 2009?
Автор: freimanis
Дата сообщения: 10.11.2008 07:06
afiget

Цитата:
соместимы с Delphi 2009?

Совместимы.
Автор: X11
Дата сообщения: 10.11.2008 16:42
Подскажите, как "пройтись" по выделенным итемам cxListBox`а?


Код:
for I := 1 to lvPhones.SelCount -1 do begin
tel_num := lvPhones. ...


end;//for I := 1 to lvPhones.SelCount -1 do begin

Автор: Darl
Дата сообщения: 10.11.2008 17:46
Наверно по всем итемам пройтись проверяя Items[i]->Selected труе иль нет
Автор: vacool
Дата сообщения: 10.11.2008 18:39
А перезалить нельзя?
Автор: freimanis
Дата сообщения: 10.11.2008 18:53

Цитата:
Наверно по всем итемам пройтись

+1


Цитата:
проверяя Items[i]->Selected

Не так. Надо анализировать свойство Selected[Index]
Автор: vacool
Дата сообщения: 10.11.2008 20:52
А можно перезалить?
Очень прошу! Сломал голову, как самодельные скины ставить!!!
Автор: Ziltoid
Дата сообщения: 11.11.2008 01:45
vacool

Цитата:
А перезалить нельзя?


Что перезалить? Скины в DLLке что ли? А куда?
Автор: Felias Fogg
Дата сообщения: 11.11.2008 16:47
Я установил DevExpress .38 в Delphi 7 вместо старых. В частности , Bars v6 вместо v5.
Проект скомпилировался и работает нормально, но в Bar-ах на TdxBarManager побледнели иконки пунктов меню.
Для меню они загружаются c Action-ами из ActionList. Те иконки, которые были в меню прописаны вручную, отрисовываются нормально.
вот код загрузки картинки:

lBitmap := TBitmap.Create;
AAction.ActionList.Images.GetBitmap(AAction.ImageIndex, lBitmap);

lCmd.Glyph.Assign(lBitmap);

lBitmap.free;

включено и работает правильно
как сделать так, чтобы картинки правильно отображались?
скорее всего, дело в прорисовке - может быть, здесь
lCmd.Glyph.Assign(lBitmap);
Автор: xokc
Дата сообщения: 11.11.2008 18:30
Felias Fogg
Ну так добавляй картинки из ActionList не в Glyph, а в ImageList, связанный с dxBarManager и устанавливай для MenuItem соответствующие ImageIndex.
Автор: f3ka
Дата сообщения: 12.11.2008 10:20
Felias Fogg вопрос дурацкий наверно но хотелось бы узнать, а к кнопкам на которых надо нарисовать иконки привязаны ли Action'ы которые уже имеют иконки? если да, то BarManager'у тогда надо назначить тот же ImageList что и для ActionList'а...
Автор: ChSerg
Дата сообщения: 12.11.2008 11:06
f3ka

1. Иконы назаначаются action-ам.
2. ActionList назначается BarManager-у.
3. Action-ы назначаются кнопкам.
4. Тот же ImageList назначается BarManager-у.
Автор: f3ka
Дата сообщения: 12.11.2008 11:12
ChSerg, а никто и не спорит... насколько я понял мой ответ я написал тоже самое только без пунктов...
и ответ надо было адресовать не мне а Felias Fogg
Автор: Felias Fogg
Дата сообщения: 12.11.2008 14:55
Если во время разработки вручную прицепить к dxBarButton тот же рисунок в Glyph, он правильно отрисовывается (на сером фоне - цвете панели).
Копание в мануале Дельфи дало результат: надо было установить самому цвет фона - он определялся неправильно.

ActionList1.Images.BkColor:=clBackground;

ActionList1.Images.GetBitmap(Action5.ImageIndex, lBitmap);
dxBarButton4.Glyph := lBitmap;
Автор: X11
Дата сообщения: 12.11.2008 16:19
Приветствую всех. Проблема с компонентой dxComponentPrinter1Link.
Для печати к этой компоненте привязан cxGrid с TcxGridTableView, т.е. работа как со StringGrid. Шрифт в некоторых записях выделен жирным. А вот при предварительном просмотре "жирность" уже слетает. Что посоветуете? Это глюк или я что-то забыл? Спасибо.

Добавлено:
забыл дописать, что девки майские
Автор: DiabloR
Дата сообщения: 13.11.2008 07:05
Здравствуйте!
He-e-e-e-e-e-e-e-e-elp! Посидел уже.
Есть БД на основе Access, 4 таблицы, в проекте 1 cxGrid, 4 уровня
Level1
|_Level2
|_Level3
|_Level4
Все соединил вроде верно.
DetailKeyFieldName, KeyFieldNames, MasterKeyFieldsNames. Косяк в том что в 2-3-4 уровнях отображается только по 2 записи, добавляю новую, она в таблицу записывается с верными ключами, но в cxGrid'e не появляется.
Девки майские.
Автор: X11
Дата сообщения: 13.11.2008 08:44
Есть процедурв экспорта cxGrid`а в эксель

Код: ExportGridToExcel(SaveDialog1.FileName+ext,cxGrid1, True, True, False, 'xls');

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182

Предыдущая тема: Язык программирования на русском языке


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