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

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

Автор: ppkp
Дата сообщения: 27.03.2010 21:28
Подскажите, пожалуйста, как в TcxRTTIInspector отображать имена свойств объекта не из их названий в классе, а из массива строк. Например property ObjectName чтобы отображалась не 'ObjectName', а 'Имя Объекта'. Там так намудрили, что только для того, чтобы True, False (это уже не в именах свойств, а в их значениях) отображались как Да, Нет, пришлось написать класс с кучей методов. В инете про локализацию RTTIInspector ничего путного не нашел.

ЗЫ В C# просто пишется
[DisplayName("Имя Объекта")]
public string ObjectName { get { return FObjectName; } set { FObjectName = value; } }
А в Delphi не знаю как.
Автор: brookson
Дата сообщения: 27.03.2010 23:49
Всем доброй ночи!

Помогите решить проблему.
Есть таблица, на неё смотрит вьюшка. Нужно, чтоб пользователь мог получить список записей из этой таблицы, которых нет в связанной таблице.
Нужный список ключевых полей получаю из запроса.

Идея такова. Есть столбец типа Checkbox, не привязанный к полям таблицы. Сортирую запрос и DataController по ключу, DataController и запрос становятся на первую запись и сравниваются поля с ключами, двигаясь к концу. Если поля равны - помечаем столбец.
View изначально сортирован по другому столбцу.

Проблема в том, что очевидно я неправильно ображаюсь к нужной записи, поскольку после такого вот кода

Код:
tvNom.DataController.ClearSorting(true);
tvnom.DataController.ChangeSorting(4,soAscending);
( или
tvNomColumnNOM_ID.SortOrder:=soAscending; )
tvNom.DataController.GotoFirst;
Автор: X11
Дата сообщения: 27.03.2010 23:51
а если
tvNom.DataController.ClearSorting(true);
tvNomColumnNOM_ID.SortOrder:=soAscending; )
tvNom.DataController.GotoFirst;
Автор: brookson
Дата сообщения: 27.03.2010 23:56
Было и так и так - никакого результата.
Забыл написать - к значению я обращаюсь следующим образом (и кажется неправильно)

Код: tvnom.DataController.Values[tvnom.DataController.GetFocusedRecordIndex,4]
Автор: X11
Дата сообщения: 28.03.2010 00:02
Автор: brookson
Дата сообщения: 28.03.2010 00:11
False
Автор: X11
Дата сообщения: 28.03.2010 00:23
Что False? У тебя устновлено в False? Так установи в True.

Добавлено:
А у тебя группирование есть?

Может так
tvNom.DataController.ClearSorting(FALSE);

Добавлено:

Цитата:
Проблема в том, что очевидно я неправильно ображаюсь к нужной записи,


Цитата:
я стою на первой записи с той сортировкой, которая задана во View изначально, а не с заданной мною сортировкой.


Я не понимаю, как взаимосвязано то, что ты обращаешься к записи с тем, что у тебя не сбрасывается (не применяется твоя) сортировка?
Автор: brookson
Дата сообщения: 28.03.2010 00:31
вот блин! заработало %)
спасибо!
хм.... получается, что моё tvNom.DataController.GotoFirst; не работало?
Автор: Aleksandr N
Дата сообщения: 28.03.2010 08:50
В cxGrig после импорта данных пропадает возможность прокрутки строк мышкой. Это возможность возвращается после переключения между окнами.
Каким оператором можно вернуть эту возможность?
Автор: vladman
Дата сообщения: 28.03.2010 18:26
Aleksandr N

Цитата:
В cxGrig после импорта данных пропадает возможность прокрутки строк мышкой. Это возможность возвращается после переключения между окнами.
Каким оператором можно вернуть эту возможность?

Зависит от того как вы импортируете и что происходит при переключении между окнами (окна одного приложения?)
Может у вас где-то при импорте не везде парные Begin/EndUpdate.
Автор: Aleksandr N
Дата сообщения: 28.03.2010 18:57
vladman
Begin/EndUpdate везде. cxGrig в рабочем состоянии. Для импорта использую SMImport. При переключении между окнами (MDI) операций с cxGrig нет. Думаю это либо глюк самой cxGrig или наложение при взаимодействии. Вот может есть какой-то оператор для восстановления, может не из самой cxGrig?
Автор: vladman
Дата сообщения: 28.03.2010 19:26
ppkp

Цитата:
Подскажите, пожалуйста, как в TcxRTTIInspector отображать имена свойств объекта не из их названий в классе, а из массива строк.

Попробуйте обработать событие onDrawRowHeader. Например

Код: if AHeaderViewInfo.CaptionsInfo[0].Caption = 'Name' then
AHeaderViewInfo.CaptionsInfo[0].Caption := 'Имя Объекта';
Автор: Aleksandr N
Дата сообщения: 28.03.2010 23:46
vladman
Да, нет. Всё в рабочем состоянии. Вероятно где-то блокируется событие от прокрутки мыши. Наверняка в IDE есть какой-то способ обновления событий, в частности от мышки. А в операции импорта совсем нет кода, только Диалог.Выполнить...
Автор: vladman
Дата сообщения: 29.03.2010 00:33
Aleksandr N

Цитата:
Да, нет. Всё в рабочем состоянии.

Тогда остается посоветовать вам почитать вот этот Question Details: Scrolling by mouse does not always work on Windows 7. Может это как раз ваш случай, и методы решения проблемы, предложенные в нем помогут и вам.
Автор: Aleksandr N
Дата сообщения: 29.03.2010 01:50
vladman
Да, вероятно оно, разберусь. Спасибо!

Хотя здесь про другую проблему.
Автор: ppkp
Дата сообщения: 29.03.2010 11:13
vladman

Цитата:
Попробуйте обработать событие onDrawRowHeader. Например

Спасибо, получилось, наконец-то. Только как правильно сделать для всех полей класса?

if AHeaderViewInfo.CaptionsInfo[0].Caption = 'Property1' then
AHeaderViewInfo.CaptionsInfo[0].Caption := 'Свойство 1'
else if AHeaderViewInfo.CaptionsInfo[0].Caption = 'Property2' then
AHeaderViewInfo.CaptionsInfo[0].Caption := 'Свойство 2'
else if AHeaderViewInfo.CaptionsInfo[0].Caption = 'Property3' then
AHeaderViewInfo.CaptionsInfo[0].Caption := 'Свойство 3'
смотрится неуклюже, очевидно и неправильно

Огромное спасибо.
Автор: vladman
Дата сообщения: 30.03.2010 01:11
ppkp

Цитата:
смотрится неуклюже, очевидно и неправильно

Да, есть немного.
Можно предложить написать функцию, что-то вида
GetRusPropNameByPropOrigName(AOrigPropName: string): string;
Тогда решение вашей проблемы может выглядеть примерно так:
[more]
Код: ...
private
FObjPropNameMapping: TStringList;
function GetRusPropNameByPropOrigName(AOrigPropName: string): string;
end;
....

procedure <YourForm>.FormDestroy(Sender: TObject);
begin
FreeAndNil(FObjPropNameMapping);
end;

procedure <YourForm>.FormCreate(Sender: TObject);
begin
FObjPropNameMapping := TStringList.Create;
FObjPropNameMapping.LoadFromFile('MyObjRusPropNames.ini');
end;

procedure <YourForm>.<YourcxRTTIInspector>DrawRowHeader(Sender: TObject; ACanvas: TcxCanvas; APainter: TcxvgPainter;
AHeaderViewInfo: TcxCustomRowHeaderInfo; var Done: Boolean);
begin
AHeaderViewInfo.CaptionsInfo[0].Caption := GetRusPropNameByPropOrigName(AHeaderViewInfo.CaptionsInfo[0].Caption);
end;

function <YourForm>.GetRusPropNameByPropOrigName(AOrigPropName: string): string;
begin
Result := FObjPropNameMapping.Values[AOrigPropName];
if Result = '' then Result := AOrigPropName;
end;
Автор: JohnSilver182
Дата сообщения: 30.03.2010 08:27
Hi All
В dxBarManagerBar можно запретить таскать менюшку по экрану ??
Есть свойство Border Style=bbNone , но после него менюшка плоская становиться (
Автор: X11
Дата сообщения: 30.03.2010 09:19
посмотри свойства, которые начинаются с Allow

Добавлено:

Цитата:
Есть свойство Border Style=bbNone

А какое отношение может иметь стиль к возможности для перемещения??
Автор: yurikorz
Дата сообщения: 30.03.2010 09:21

Цитата:
В dxBarManagerBar можно запретить таскать менюшку по экрану ??


не знаю как в dxBarManagerBar, но в dxBarManager, который является сборником Баров это сделать нельзя, но можно в конкретном Баре
В dxBar есть свойство NotDocking - ставишь те положения в которых нельзя быть, в твоем случае dxBar.NotDocking:=[dsNone]
Автор: JohnSilver182
Дата сообщения: 30.03.2010 10:06

Цитата:
Есть свойство Border Style=bbNone
А какое отношение может иметь стиль к возможности для перемещения??

Это свойство вобще прячет все DRUG and DROP фичи для таскания по экрану


Цитата:
В dxBar есть свойство NotDocking - ставишь те положения в которых нельзя быть, в твоем случае dxBar.NotDocking:=[dsNone]

Хмм непомогло . Запихал заразу в dxBarDockControl . По вертикали уже не рыпается . По горизонтали сволоч катается (((

Автор: indapublic
Дата сообщения: 30.03.2010 10:12
Так и не нашел ответа на свой вопрос, но уверен что его задавали.
Необходима русификация DevExpress, есть в наличии русские ресурсы в pas-файле, которые отлично работали со сборкой. Но вот с новыми Девками (DeveloperExpressVCLProducts49) компилиться не хотят, а нужны именно они.

Кто-нибудь может чем-то помочь?
Автор: JohnSilver182
Дата сообщения: 30.03.2010 10:12
DockedLEft=0 по умолчанию у dxBarManagerBar1 , как бы прибить кувалдой это дело
Автор: volser
Дата сообщения: 30.03.2010 11:11
indapublic
Ссылка
Автор: ppkp
Дата сообщения: 30.03.2010 12:15
vladman
Спасибо, но проблема в том, что оригинальные properties в RTTIInspector упорядочены по алфавиту, и я не знаю как отключить это в RTTIInspector. Из-за этого возникает несоответсвие между properties и их псевдонимами.
Автор: vladman
Дата сообщения: 30.03.2010 15:29
ppkp

Цитата:
проблема в том, что оригинальные properties в RTTIInspector упорядочены по алфавиту

Ну и что что упорядочены. Это не оказывает никакого влияния на Result := FObjPropNameMapping.Values[AOrigPropName];
Автор: shum44
Дата сообщения: 30.03.2010 22:37
Вечер добрый .
Начал осваивать PivotGrid... возникли вопросы
1. как сделать поля которые используются в качестве строк "многострочными"
2. как сделать чтобы можно было использовать несколько полей в качестве строк без группировки
вот так должно примерно выглядеть
Автор: drweb86
Дата сообщения: 31.03.2010 10:44
Можете кто-нибудь подсказать,

у меня при экспорте нескольких колонок в Excel или Pdf
происходит такая штука - ширина всех колоное становится маленькой.

Можно ли так сделать, чтобы колонки с данными всегда были видны полностью?

я использую для экспорта - VisualDataNodeLink
Автор: asi81
Дата сообщения: 01.04.2010 13:43
Добрый день!

Столкнулся с неожиданной проблемой - у меня в TdxMemData не работает FindFirst()!!! Вроде нашел, что один человек на офиц. сайте уже жаловался на это проблему в 47м патче. У меня щас стоит 48 версия. Может кто здесь сталкивался с подобной проблемой? И еще - если кто пользуется 49 версией, не подскажете, работает ли там FindFirst() там??
Автор: vladman
Дата сообщения: 01.04.2010 14:41
asi81

Цитата:
Столкнулся с неожиданной проблемой - у меня в TdxMemData не работает FindFirst()!!!

Если вы пытаетесь это использовать "with the filter function in TdxMemData", то "The ExpressMemData doesn't implement the Filter property and the FindFirst, FindLast, FindNext, FindPrev methods. This is the designed behavior. "

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211

Предыдущая тема: Помогите пожалуйста с блокировкой клавиатуры и мышки


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