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

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

Автор: vavavol
Дата сообщения: 04.09.2009 14:29
Подскажите, пожайлуста, как в cxGrid в колонках с цифровыми значениями значения 0 выводить, как пустые (null). Можно, конечно в датасете это отследить, но мне нужно, чтобы в датасете 0 были.
Автор: korobovmax
Дата сообщения: 04.09.2009 14:58
vavavol, у столбцов можно создать событие OnGetDataText. В него поступает выводимый текст, который вы можете проанализировать и заменить на свой.
Еще есть событие OnGetDisplayText.
Автор: sldaac
Дата сообщения: 06.09.2009 01:40
Приветстую
Есть cxGrid. уровень с подуровнем. У каждого уровня свой view, организовано Мастер-Детайл. Как определить - найти в каком View находиться фокус, или выделена строка. Когда на мастер view нет проблем, а вот когда курсор на детайл view, выделена строка - никак. Детайл view раскрыт.
_http://img98.imageshack.us/img98/485/999kx.jpg
Автор: dimm78
Дата сообщения: 06.09.2009 13:13

Цитата:
sldaac


Помоему и cxGrid есть свойство ActiveView. К сожалению сейчас под рукой нет Делфей поэтому точнее сказать не могу...
Автор: sldaac
Дата сообщения: 06.09.2009 13:32

Цитата:
Помоему и cxGrid есть свойство ActiveView. К сожалению сейчас под рукой нет Делфей поэтому точнее сказать не могу...

Это не то, в этот момент активны оба View, вернее активен мастер, и развернув "+" получаем детайл.

Автор: vladman
Дата сообщения: 06.09.2009 14:24
sldaac

Цитата:
Как определить - найти в каком View находиться фокус, или выделена строка.

Используйте свойство FocusedView вашего cxGrid.
Также стоит обратить внимание на раздел справки *Pattern and Clone Views*.
ms-help://borland.bds5/ExpressQuantumGrid6.BDS5/ExpressQuantumGrid6/IDH_Fundamentals_PatternCloneViews.htm
Автор: sldaac
Дата сообщения: 07.09.2009 12:16

Цитата:
Используйте свойство FocusedView вашего cxGrid.

Это не решает проблему, если и указывае, то что фокус на мастер View, хотя на самом деле курсор находится на детайл строке.

Это я все читал, пишу уже когда все испробавано
Автор: vladman
Дата сообщения: 07.09.2009 16:42
sldaac

Цитата:
Это не решает проблему... Это я все читал

Попробуйте
procedure <YourForm>.<YourcxButtonTest>Click(Sender: TObject);
begin
ShowMessage(<YourGrid>.FocusedView.PatternGridView.Name);
end;
Автор: sldaac
Дата сообщения: 08.09.2009 08:13

Цитата:
ShowMessage(<YourGrid>.FocusedView.PatternGridView.Name);

Вот когда фокус на записи детайл, Name=''
На мастер view все нормально, может это глюк версии, у меня х43
Автор: vladman
Дата сообщения: 08.09.2009 10:06
sldaac

Цитата:
Вот когда фокус на записи детайл, Name=''

Странно. Тогда давайте пример с вашим мастер-дитэйл, посмотрим почему это не работает.

ЗЫ. А может вы уровни и вью создаете динамически, и явно им не указываете имя?
Так как не было AV, значит объект FocusedView.PatternGridView существует. Посмотрите отладчиков его свойства.
Автор: Energot
Дата сообщения: 08.09.2009 17:10
Последняя версия компонент.
При попытке создания из библиотека простую форму, на которой брошен Ribbon - все падает. Если то же самое делать из exe - все работает. Я поковырялся по сорцам, вот тут, в библиотеке SkinCount равен 0

procedure TdxCustomRibbon.InitColorScheme;
var
I: Integer;
begin
for I := 0 to SkinManager.SkinCount - 1 do
if SkinManager[I] is TdxCustomRibbonSkin then
begin
ColorSchemeName := SkinManager[I].Name;
break;
end;
end;

Буду рыть дальше, но может проблема известная и есть простое решение?

Уткнулся вот сюда:


procedure TdxUnitsLoader.AddUnit(const AInitializeProc, AFinalizeProc: Pointer);
var
AProc: TdxProc;
begin
if AInitializeProc <> nil then
begin
AProc := AInitializeProc;
if not IsDLL then
begin
FGDIInitialized := True;
AProc;
end
else
InitializeList.Add(AInitializeProc);
end;
if AFinalizeProc <> nil then
FinalizeList.Add(AFinalizeProc);
end;


Похоже, что из библиотеки GDI не инициализируется. Что делать, как обойти?
Автор: vladman
Дата сообщения: 08.09.2009 18:02
Energot

Цитата:
Похоже, что из библиотеки GDI не инициализируется. Что делать, как обойти?

Раз GDI+ не инициализируется - значит нужно инициализировать. Попробуйте так:

Код:
<YourDllUnit>.pas

uses
dxGDIPlusAPI;

.....
.....
.....

initialization
dxInitializeGDIPlus;

finalization
dxFinalizeGDIPlus;
Автор: JohnSilver182
Дата сообщения: 08.09.2009 19:19
Hi

А я если помещаю CxBotton на Cxpanel , то в RUN-TIME половина у кнопок обрезается ((
Автор: vladman
Дата сообщения: 08.09.2009 19:30
JohnSilver182

Цитата:
CxBotton на Cxpanel

Что это? Нет таких компонентов у DevExpress
Может CxBotton это cxButton? Но что такое Cxpanel - тяжело догадаться.
Автор: JohnSilver182
Дата сообщения: 08.09.2009 20:41
ОЙ , на cxGroupBox
Автор: vladman
Дата сообщения: 08.09.2009 22:27
JohnSilver182
Давайте пример (приложение, скриншот) что и как у вас обрезается, разберемся.
Автор: JohnSilver182
Дата сообщения: 09.09.2009 06:38
Вот


есть версия что это невидымый Caption гадит
Автор: Energot
Дата сообщения: 09.09.2009 07:24
vladman

Спасибо, помогло!
Автор: vladman
Дата сообщения: 09.09.2009 08:18
JohnSilver182

Цитата:
есть версия что это невидымый Caption гадит

А это что такое? Одни ребусы . Какой скин используете, шрифт, размер шрифта? Если увеличить высоту GroupBox, как отрисуются кнопки. В общем, давайте исходники этой формы или сделайте похожую новую, чтобы была возможность воспроизвести проблему.

Добавлено:
Energot

Цитата:
Спасибо, помогло!

Не за что, обращайтесь.
Автор: Energot
Дата сообщения: 09.09.2009 08:26
vladman
В общем, проблему не решил. В finalization оставлять dxFinalizeGDIPlus - нельзя, если запустить два экземпляра библиотеки - все упадет (и падает).

В базовый класс добавил статический счетчик эксземпляров класса. При создании первого - инициализирую GDI+, при закрытии последнего - финализирую. Однако при вызове dxFinalizeGDIPlus после закрытия первого же экземпляра библиотеки, от риббона прилетает какое то оконное сообщение и усе падает. (На TCustomForm.SetVisible в юните Forms). Ниже код деструктора моей библиотеки.

destructor TInfoJournal.Destroy;
begin
if JournalFrm <> nil then
JournalFrm.Free; // форма с риббоном

Dec(UnitsCount);
if(UnitsCount=0) then
dxFinalizeGDIPlus;

inherited;
end;

Автор: JohnSilver182
Дата сообщения: 09.09.2009 09:21

Цитата:
А это что такое? Одни ребусы . Какой скин используете, шрифт, размер шрифта? Если увеличить высоту GroupBox, как отрисуются кнопки. В общем, давайте исходники этой формы или сделайте похожую новую, чтобы была возможность воспроизвести проблему.


Хмм . Сделал PanelStyle.Activ:=true и все стало ок !!
Автор: gyani
Дата сообщения: 09.09.2009 20:53
Столкнулся с глюком, в Delphi 7 использую модуль определения pr тиц http://rouse.drkb.ru/files/fwpagerank.zip при добавлении в проект dxDBEdit1 функция HttpAddRequestHeaders в модуле перестает работать и вываливает ошибку 6 (ERROR_INVALID_HANDLE) из-за чего такое может быть?
Причем такая же функция работает вне модуля в основной программе и все нормально.

Добавлено:
Подскажите еще пожалуйста, если cxGrid не связан с БД как добавлять значения в ячейки?
Автор: xokc
Дата сообщения: 09.09.2009 21:50
gyani

Цитата:
Подскажите еще пожалуйста, если cxGrid не связан с БД как добавлять значения в ячейки?

Читать в Help и смотреть в Demo про ubound mode. Или воспользоваться ExpressMemData (или аналогами) для имитации таблицы БД в ОЗУ.
Автор: SHKoder
Дата сообщения: 09.09.2009 22:04
вечер добрый, всезнающий алл

Использую TcxButtonEdit от DevExpress
cxButtonEdit.properties.Buttons
добавил еще одну кнопку TcxEditButtons.
хочу чтобы по ее клику, выпадал TcxLookupComboBox со списком FixedList

В cxButtonEdit.properties.LookupItems список я заполнил 4рьмя итемами.
но как их отразить в ниспадающем списке? и как сделать чтобы список выпадал?

паралельно во второй кнопке cxButtonEdit необходимо обработать другое событие, вызова модального окна.
окно я уже беру на себя, пусть хотя showmessage вываливается, смысл в разных событиях... не соображу что-то
люди, помогите пожалуйста


Автор: sldaac
Дата сообщения: 09.09.2009 23:36
SHKoder

Цитата:
паралельно во второй кнопке cxButtonEdit необходимо обработать другое событие, вызова модального окна.
окно я уже беру на себя, пусть хотя showmessage вываливается, смысл в разных событиях... не соображу что-то
люди, помогите пожалуйста


на закладке Event. Properties OnButtonClick
Обрабатываеш какая кнопка нажата, по твоему скрину Index=1 открывай форму

Автор: AlexanderGo
Дата сообщения: 10.09.2009 09:37
Сделал русификацию DevExpress стандартным методом:

Thread.CurrentThread.CurrentCulture = new CultureInfo("ru-RU");
Thread.CurrentThread.CurrentUICulture = new CultureInfo("ru");

+ dll-ки(с русификацией) положил к exe-шнику в папку "ru".

Контролы находящиеся в главной форме показывают русифицированные выражения.

Проблема возникает, когда активирую динамические сборки:
System.Activator.CreateInstance(...) и добавляю эти формы на главную, как Child.

В них не выводится текст. Причем не выводится вообще никакой! Возможно при таком вызове теряется локализация!?! Может посоветуете что нибудь?
Автор: volser
Дата сообщения: 10.09.2009 10:58
SHKoder

Цитата:
Использую TcxButtonEdit от DevExpress
cxButtonEdit.properties.Buttons
добавил еще одну кнопку TcxEditButtons.
хочу чтобы по ее клику, выпадал TcxLookupComboBox со списком FixedList


Используй не TcxButtonEdit, а TcxComboBox или TcxLookupComboBox, предварительно добавив им дополнительную кнопку.
Автор: SHKoder
Дата сообщения: 10.09.2009 11:30

Код: procedure TForm1.cxMRUEdit1PropertiesButtonClick(Sender: TObject);
begin
showmessage('button pressed')
end;

object cxMRUEdit1: TcxMRUEdit
Left = 200
Top = 176
Properties.LookupItems.Strings = (
'db1 '
'db2'
'db3'
'db4')
Properties.OnButtonClick = cxMRUEdit1PropertiesButtonClick
TabOrder = 4
Text = 'cxMRUEdit1'
Width = 121
end
Автор: sly konrad
Дата сообщения: 10.09.2009 16:49
Вот такой квэщен: имеем TdxMemData, в который с помощью LoadFromDataset закачиваем данные через датасет (ТADODataset) из таблицы в БД MS SQL Server 2000. Поля типа tinyint и datetime в MS SQL Server при переносе в MemData (соответствующий тип поля smallint, integer, data) принимают значения Null. Приходится после процедуры переноса набора записей выполнять операции присваивания вида: MemDataFieldName.asVariant := ADODataset.FieldByName('FieldName').AsVariant.
Кто сталкивался с подобным, есть ли иные пути решения?
Автор: vladman
Дата сообщения: 10.09.2009 18:55
Energot

Цитата:
В общем, проблему не решил.

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

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081

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


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