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

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

Автор: X11
Дата сообщения: 07.04.2010 13:26
Выше вроде ответили, что Autosize нужно выключить

Добавлено:
Хотя у меня и так поворачивается
Автор: CAD_tester
Дата сообщения: 07.04.2010 13:35
X11

Цитата:
Выше вроде ответили, что Autosize нужно выключить

Попробовал на Delphi 6 или 7...не получается
Автор: lisiserg
Дата сообщения: 07.04.2010 18:11
Имеется Grid c тремя полями:
1 поле - LookupComboBox
2-3 - поля не редактируемые

Когда я в первом поле Lookup`а выбираю данные, то обрабатываю следующую процедуру. Она в зависимости от выбранных данных подставляются значения в 2 и 3 поле. А первое поле остается почему-то пустым, не показывает значение которое я выбрал.

Если я не буду добавлять в 2 и 3 поля ничего, то тогда в первом поле выбранное значение подставляется.

Подскажите, что я не правильно делаю.


-----
cxGridColumnPropertiesChange(Sender: TObject);
var
AProperties: TcxLookupComboBoxProperties;

begin

AProperties := TcxLookupComboBoxProperties(cxGridColumn9.GetProperties);
j := Integer(AProperties.DataController.GetKeyFieldsValues());

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

j := grRascTv.DataController.FocusedRecordIndex;

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

grRascTv.DataController.Values[j, 2] := String(GetColumnText(prm, 0));
grRascTv.DataController.Values[j, 3] := StrToFloat(GetColumnText(prm, 1));

end;
Автор: vladman
Дата сообщения: 08.04.2010 00:36
lisiserg

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

Из вашего примера тяжело сделать вывод что вы делаете, и тем более неправильно. Как реализована GetColumnText? Что такое prm? Почему подряд идет два присвоения для j?
Автор: lisiserg
Дата сообщения: 08.04.2010 08:30

Цитата:
Из вашего примера тяжело сделать вывод.....


Вопрос закрыт, те кто в теме был помогли.
Достаточно было в свойствах LookupComboBox поставить значение true в параметре ImmediatePost.


И там не два раза подряд, точки это пропуск кода, обычно всегда так обозначали чтобы лишнее не писать.
Обращать внимание на значение которое присваиваем, тоже не надо. Факт то что мы присваиваем значение.
Автор: Andy_BitOff
Дата сообщения: 08.04.2010 14:51
Как добраться до изображения в VerticalGrid?

Создаю:
var
Row: TcxEditorRow;
...
Row := TcxEditorRow(vgrdImg.Add(TcxEditorRow));
Row.Name := 'Item';
Row.Properties.Caption := 'ItemCapt';
Row.Properties.HeaderAlignmentVert := TcxAlignmentVert(vaCenter);
Row.Properties.EditPropertiesClass := TcxImageProperties;

Есть изображение в стриме. Как мне отобразить его в строке?

Автор: linker_2009
Дата сообщения: 08.04.2010 15:39
Andy_BitOff
вот пример загрузки изображения из TcxImage через поток.

var
Row: TcxEditorRow;
...
после
Row.Properties.EditPropertiesClass := TcxImageProperties;

вставь это
stream:=tStringstream.Create('');
cxImage1.Picture.Icon.SaveToStream(stream);// сохранение из имаджа в стреам
Row.Height:=50;
with (Row.Properties.EditProperties as TcxImageProperties) do
begin
GraphicClassName:='TIcon';
Stretch:=true;
end;
stream.Seek(0,0);
Row.Properties.Value:=stream.DataString;
stream.Free;
Автор: Andy_BitOff
Дата сообщения: 08.04.2010 16:43

Цитата:
Row.Properties.Value:=stream.DataString;


Спасибо. Вот ключевое место, которое было не известно. Еще раз, спасибо.
Автор: kii
Дата сообщения: 08.04.2010 21:41
Привет Всем!
Кто поможет решить задачку ?

Предположем в cxGrid'e загружено 50 тыс. записей, нужно найти одну конкретную запись при этом не фильтруя, чтобы указатель установился на нее.
Решение тривиальное - используем Incremental searce,
но задача - пользователь не хочет вводить символы в поле Grid'а -
ХОЧЕТ ЧТОБЫ симмволы поиска вводились на отдельной панеле ( в Меню) вне
Grid'а


предложите чего-нибудь пожалуйста!
Автор: volser
Дата сообщения: 08.04.2010 22:56
kii
Зачем на клиент грузить 50 тыс. записей? Не проще ли фильтровать на сервере?
Автор: X11
Дата сообщения: 08.04.2010 22:59
А locate использовать религия не позволяет?

Добавлено:
kii, ну в конце третьей части уже я поднимал проблему поиска в cxGride.
Автор: vladman
Дата сообщения: 09.04.2010 01:36
kii

Цитата:
нужно найти одну конкретную запись при этом не фильтруя, чтобы указатель установился на нее. Решение тривиальное - используем Incremental searce

Если вы действительно уверены в том, что нужно использовать IncSearch, то вот выдержка из справки:

Код: Incremental Search example
This example shows how incremental searching can be done programmatically. To allow searching, the View should not be in edit mode. Thus, the edit controller’s HideEdit method is used to close the currently active editor, if any. The search starts from the currently focused record. Thus, the sample below focuses the first record to start searching from it. The text to search is obtained from a TEdit control.

//Delphi
var
AView: TcxCustomGridTableView;
//...
AView := TcxCustomGridTableView(Grid.FocusedView);
//Close an open editor if any
AView.Controller.EditingController.HideEdit(True);
//set focus to the first record
//to start the search from the beginning
AView.DataController.GotoFirst;
//start an incremental search within the tvFilmsCAPTION column
AView.DataController.Search.Locate(tvFilmsCAPTION.Index, Edit1.Text);
//...
//continue the search forward
AView.DataController.Search.LocateNext(True);
//...
//cancel the search
AView.DataController.Search.Cancel
Автор: rus lan2010
Дата сообщения: 09.04.2010 02:51
Доброе время суток.
Подскажите, как взять значение, например, суммы из футера dxDBGrid.



Добавлено:
Еще раз доброе время.
Давно не могу решить проблему, подскажите, можно ли развернуть вертикально (на 90 градусов) надписи столбцов. (У меня дев 3.2)
Автор: JohnSilver182
Дата сообщения: 09.04.2010 07:55
volser +1

Кстати , я тут подумал . Может сделать как на форумах ???

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
Автор: linker_2009
Дата сообщения: 09.04.2010 08:13
rus lan2010

Цитата:
Подскажите, как взять значение, например, суммы из футера dxDBGrid.


<YourcxGridTableView>.DataController.Summary.FooterSummaryValues[0]
Автор: Cryogen2003
Дата сообщения: 09.04.2010 08:36
X11
Locate в датасете через грид бывает очень не быстрое занятие. У меня например, после любого locate в датасете, девовский грид запускает полное обновление внутреннего своего датасета. Это бывает очень нудно.

kiiх
Мне недавно понадобилась примерно такое же в своем проекте, просто взял и чуток дописал компонент. Теперь при Ctrl + F в гриде выдается форма поиска например. Плюс ко всему написал Locate, который ищет именно в гриде, а не в датасете, что удобнее и в итоге несколько быстрее.
Автор: X11
Дата сообщения: 09.04.2010 08:47

Цитата:
X11
Locate в датасете через грид бывает очень не быстрое занятие. У меня например, после любого locate в датасете, девовский грид запускает полное обновление внутреннего своего датасета. Это бывает очень нудно.

Ещё бы... на пятидесяти тысячах записей ещё и не такое встретишь. Ищи примеры, уже их давали. И даже давали примеры поиска с подстветкой.
Автор: Cryogen2003
Дата сообщения: 09.04.2010 08:52
X11
Да тут дело не в самом locate в датасете, а в том, что девовский грид зачем-то обязательно запускает полный рефреш данных в своем memtable. А по поводу 50 тысяч записей - ну это еще мало, у меня некоторым моим пользакам и этого часто мало (у большинства пользователей стоит ограничение в 1000 записей в гриде, но у многих начальников ограничение стоит в 200 тысяч и очень часто бывает, что забивают данные под завязку ).
Приходиться извращаться по полной
Автор: X11
Дата сообщения: 09.04.2010 09:16
Может не девовский грид, а ты где-то чего-го обновляешь? Посмотри, что у тебя за события на гриде, датасорсе или датасете?
Автор: Cryogen2003
Дата сообщения: 09.04.2010 09:34
X11
Да не, проверял. После locate вызывается метод в девовском гриде, что датасет изменился. Потом проверяется, установлен ли грид в гримод, если нет, то проверяется установлен ли SmartRefresh. Хотя установлен, но функция на эту проверку возвращает False и идет FullRefresh. Так что из-за этого пришлось написать собственный locate по гриду - тут уже приводили его текст, я просто сделал с выводом формы поиска и так далее.
Автор: VitOs2
Дата сообщения: 09.04.2010 10:25
Удалить...
Автор: VOVANCHIK9
Дата сообщения: 09.04.2010 13:42
маленький вапросик!

два Quantum Grid-а на разных вкладках PageControl
к обоим подключен 1 и тот же DataSource
на гриде 1 могу перемещаться по записям, а в гриде 2 нет!!!
при отключении датасорса от грида 1 возможность бегать по данным на гриде 2 восстанавливается.

А надо чтобы можно было и с помощью грида1 и грида2 бегать по данным...

что делать?
Автор: Cryogen2003
Дата сообщения: 09.04.2010 13:45
VOVANCHIK9
А почему нельзя подключить два разных datasource, которые подключены к одному датасет?
Автор: VOVANCHIK9
Дата сообщения: 09.04.2010 13:48
Cryogen2003
подключил - эффект не изменился
возможность бегать по данным осталось только у одного из двух гридов.
такое очущение что 1 из гридов как то держит данные...и постоянно их снхронизирует..
Автор: Cryogen2003
Дата сообщения: 09.04.2010 14:05
VOVANCHIK9
Дык проверь, стоит ли синхронизации в этих гридах или нет
Автор: kii
Дата сообщения: 09.04.2010 15:17
Спасибо Всем, кто принял участие.

для моей задачи IncSearch работает стабильно и хорошо , по нему находят документ и перечень документов те самые 50 тыс. пользователь получает на локальную машину в начале сессии тратя не более 15 сек.
Просят чтобы поле или Edit было вынесено отдельно на панель, в меню и т.д БОЛЬШИМ ШРИФТОМ.

Я хочу узнать можно ли как-то зазеркалить данные в ячейке и в каком-нубуть Edit e
грубо говоря - нужен аналог wwIncrementalSearch из InfoPower
Автор: yurikorz
Дата сообщения: 09.04.2010 18:04
Ребята, помогите!
Проект MDI, на child расположен cxGrid, с настроенным PopupMenu
открыто несколько таких окон

Ситуация такая: активен child1, клиент наводит мышу на Грид child2 и нажимает правую кнопку мыши. Появляется PopupMenu, но активное остается сhild1.
Как в такой ситуации при нажатии правой кнопки до появления менюшки активизировать child2?
Автор: X11
Дата сообщения: 09.04.2010 19:28
Хм... А при чём здесь DevExpress?
Автор: vladman
Дата сообщения: 10.04.2010 13:30
VOVANCHIK9

Цитата:
А надо чтобы можно было и с помощью грида1 и грида2 бегать по данным...
что делать?

Сравнить настройки DataControllera обоих гридов.


Добавлено:
kii

Цитата:
Я хочу узнать можно ли как-то зазеркалить данные в ячейке и в каком-нубуть Edit e

Ну а чем не подходит реализация из справки, приведенная выше?

Добавлено:
yurikorz

Цитата:
Как в такой ситуации при нажатии правой кнопки до появления менюшки активизировать child2?

У PopupMenu есть свойство onPopup, которое отрабатывает как раз до "появления менюшки". Вот в нем и "активизируйте child2"
Автор: mdid
Дата сообщения: 12.04.2010 19:40
подскажите такую штуку..точнее две штуки
1. как в cxGridBandedTableView1 сделать программно клик ONCellClick? или только через cxGridBandedTableView1CellClick(...)?
2. чет не понял как отобразить данные в cxGrid1DBTableView1..в простом дбгриде достаточно сделать dataset.open..а тут показываются пустые строки в правильном количестве..в дизайнтайме есть кнопка "Create all columns" а как ее вызвать программно?

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211

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


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