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

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

Автор: infomSB
Дата сообщения: 26.12.2007 11:59
Sufferer
Понятно.
Во-первых попробуйте делать не Locate списка, а менять значение самого лукапа, тогда в списке запись уже сфокусируется автоматически. Изменить значение лукапа можно атрибутом KeyValue или EditValue . Так же перед изменением значения в ВертикалГриде в runtime вызывайте метод DataController.Edit у Вгрида, а после изменения совершайте VGRid.HideEdit.
Автор: zver
Дата сообщения: 26.12.2007 13:05
Подстроку(второй этаж строки) надо делать то видимой, то нет в зависимости от значений тех строк, которые находятся в данной области.

cxGrid1BandedTableView1.Bands.Items[0].Columns[1].Visible := false уберет столбец для всех строк всего набора данных.

Автор: OXDBA
Дата сообщения: 26.12.2007 13:13
Sufferer

Цитата:
Как в VerticalGrid при добавлении MultiEditor неотображать заголовок одного из едиторов?

Multi editor caption
Автор: Dronton2
Дата сообщения: 26.12.2007 13:51
Sufferer

Цитата:
Меньше 20 пикселеей заголовок не сделать

VerticalGrid.OptionsView.RowHeaderMinWidth не поможет?

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

Может, попробовать EditorRow.Properties.Value := ...
Автор: Sufferer
Дата сообщения: 26.12.2007 17:47

Цитата:
Multi editor caption

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


Добавлено:
Не, ну это просто нет слов...
Вместо того чтобы завести свойство Visible для заголовка, программеру предлагается сделать вот такое:
procedure TForm1.cxVerticalGrid1DrawRowHeader(Sender: TObject;
ACanvas: TcxCanvas; APainter: TcxvgPainter;
AHeaderViewInfo: TcxCustomRowHeaderInfo; var Done: Boolean);

var
ACaptionRect: TRect;
begin
if AHeaderViewInfo is TcxMultiEditorRowHeaderInfo then
with AHeaderViewInfo do
begin
APainter.DrawRowIndent(AHeaderViewInfo);
ACaptionRect := HeaderRect;
ACaptionRect.Left := IndentBounds.Right;
Transparent := True;
ACanvas.Brush.Color := ViewParams.Color;
ACanvas.FillRect(ACaptionRect);
ACanvas.Font := ViewParams.Font;
ACanvas.DrawTexT('New Caption', ACaptionRect, cxAlignLeft or cxAlignVCenter or cxShowEndEllipsis);
Done := True;
end;
end;
Причем, это непохоже на заплатку. 8-[
Автор: brookson
Дата сообщения: 26.12.2007 22:01
Dronton2
Спасибо! Мне решение с TcxImageComboBox понравилось
Автор: brookson
Дата сообщения: 27.12.2007 20:37
Снова доброго всем времени суток!

Некая проблема сводит меня с ума: Master-Detail cxGrid. В деталях выводятся не все записи. Чаще одна.
Стоят все индексы и связи. Ума не приложу, в чём дело и в какую сторону копать.
Может кто наступал на такие грабли? Буду неимоверно признателен!
Автор: Chukotka
Дата сообщения: 28.12.2007 00:11
brookson

Цитата:
Некая проблема сводит меня с ума: Master-Detail cxGrid. В деталях выводятся не все записи. Чаще одна.
Стоят все индексы и связи. Ума не приложу, в чём дело и в какую сторону копать.

На основании вышесказанного строить какие-то предположения тяжело. Обнародуйте хотя бы краткое описание источников данных и настроек.
Автор: greenpc
Дата сообщения: 28.12.2007 08:51
brookson
было такое
как вариант сделать в деталях ордер бай <поле связки с мастером>
Автор: brookson
Дата сообщения: 28.12.2007 11:18

Цитата:
было такое
как вариант сделать в деталях ордер бай <поле связки с мастером>


не помогло. то есть появилось вместо 1 подчинённой 2, а всего 3

описываю подробнее. мастер ссылается на IBdataset, деталей 2, обе ссылаются на IBquery.
То есть Датасет содержит перечень товара. а два подчинённых запроса информацию о приходе и расходе отдельно.
список полей в обоих подчинённых запросах немного отличается. может тут где-то причина?
добавляю подчинённые записи, там, где их не было - есть. а где уже была - там нету.
Автор: greenpc
Дата сообщения: 28.12.2007 11:22
brookson

Цитата:
два подчинённых запроса

сделал в каждом запросе?
я так понимаю у тебя 3 таблицы?
то,название <поле связки с мастером> в подчиненных таб. одинаково?
Автор: brookson
Дата сообщения: 28.12.2007 11:32

Цитата:
сделал в каждом запросе?

да. то есть сделал в обоих запросах и поле называется одинаково.
насчёт таблиц - в основном да. но датасет и запрос для того, что там много всяких лукапных полей, так что участие берут несколько таблиц по сути.
Автор: Chukotka
Дата сообщения: 28.12.2007 13:08
brookson
1. Глючат оба подчиненных запроса одновременно?
2. Попробуй проверить текст запросов, подставив ручками значение в <поле связи с мастером> - в том же IBExpert'e.

Цитата:
добавляю подчинённые записи

так глюки идут при навигации по мастеру или при попытке редактирования\добавления?
Автор: greenpc
Дата сообщения: 28.12.2007 14:19
brookson
попробуй кинуть на форму обычный TTable
мастер+ 2 детали и посмотри что получается
если все ок (скорее всего так будет) то будем дальше думать
Автор: brookson
Дата сообщения: 28.12.2007 15:28

Цитата:
1. Глючат оба подчиненных запроса одновременно?
2. Попробуй проверить текст запросов, подставив ручками значение в <поле связи с мастером> - в том же IBExpert'e.

Цитата:
добавляю подчинённые записи     

так глюки идут при навигации по мастеру или при попытке редактирования\добавления?


1. да
2. пробовал - там всё ок через IBExpert
пробовал даже оставить одну деталь - ничего не поменялось

глюки идут, когда я раскрываю мастер-запись, и видны детали. ну вобщем просто глюки.
это ж всё один и тот же грид

Добавлено:

Цитата:
попробуй кинуть на форму обычный TTable
мастер+ 2 детали и посмотри что получается
если все ок (скорее всего так будет) то будем дальше думать

поставил все три таблицы, добавил лукап поля. убрал из грида группы - все равно не получается (((

а руками выбрать SQL-ем - и работает
Автор: Chukotka
Дата сообщения: 28.12.2007 15:55

Цитата:
а руками выбрать SQL-ем - и работает

тады текст sql-запросов - в студию
Автор: X11
Дата сообщения: 28.12.2007 15:55
Проблема с обновлением значений поля.
Есть процедура (SP_SET_UNDELETED), которая устанавливает в таблице (FB 2.0.3) значение 0 (ноль) в поле DELETED. В самом гриде это поле имеет тип integer, свойство CheckBox, соответственно True это - 1, а False это - 0.


Код:
procedure TfmMain.actSetUndeletedExecute(Sender: TObject);
Var
sId:string;
i:integer;
begin
try
for i := 0 to dbgReklama.DataController.RecordCount - 1 do begin
if dbgReklama.DataController.IsRowSelected(i) then begin
sID := IntToStr(dbgReklama.DataController.Values[i, dbgReklamaID.Index]);
DM.dbJDN.Execute('execute procedure SP_SET_UNDELETED('+ sID + ')');
dbgReklama.DataController.RefreshExternalData;
end;
end;
finally
// actUpdateExecute(nil);
end;
end;
Автор: X11
Дата сообщения: 29.12.2007 10:04
Народ, кто-нибудь сталкивался с тем, что
cxGridDBTableView.DataController.post;
выполняется весьма долго, приблизительно 1 секунду.
Записи добавляются в цикле. В самой таблице около 1000 записей.
В pFibDataSet Autocommit отключен.

D2007+Fib6.8+DEVоктябрь+FB2.0.3
Автор: OXDBA
Дата сообщения: 29.12.2007 10:37

Цитата:
Так вот, чекбокс поля Deleted в гриде меняет свой вид только у последней выделенной записи. Остальные меняют свой вид только после переоткрытия таблицы.

Так и должно быть, dbgReklama.DataController.RefreshExternalData вызывает dbgReklama.DataController.DataSet.Refresh, который рефрешит текущую запись, в твоем случае последнюю селектнутую.

Цитата:
Народ, кто-нибудь сталкивался

Нет, ибо для массовых Insert\Update используют FIBQuery.
Кстати,

Цитата:
for i := 0 to dbgReklama.DataController.RecordCount - 1 do begin
if dbgReklama.DataController.IsRowSelected(i) then begin

это конечно круто, но есть еще dbgReklama.Controller.SelectedRows/dbgReklama.Controller.SelectedRowCount
Автор: X11
Дата сообщения: 29.12.2007 10:40
т.е. после изменения значений в двух-трёх записях переоткрывать запрос?

Добавлено:
Я только что переписал код. Теперь записи добавляются НЕ через грид, а непосредственно в TpFibDataset - результат тот же ((((((((

Я заметил, что во время цикла жарпитца грузит проц на 47-50%, само приложение на 0%

так, что дело в firebird?

полезу в триггеры ((((((( мож там у меня что интересного

Добавлено:
В триггере ничего интересного

if (new.id is null) then
new.id = gen_id(gen_treklama_id,1);
new.LCD = CURRENT_TIMESTAMP;
new.INPUT_DATE = CURRENT_TIMESTAMP;
Автор: zver
Дата сообщения: 29.12.2007 15:37
brookson

В мастер-гриде обязательно должно быть уникальное ключевое поле.
Детайл-гриде обязательно должен быть отсортирован по полю связи мастер-детайл( тому самому уникальному полю в мастере).


Добавлено:
причем отсортирован на уровне SQL-запроса.
Автор: X11
Дата сообщения: 05.01.2008 10:51
Вопрос по TcxVerticalGrid.
Есть строка типа LookUpComboBox. Проблема в том, что после выбора значение выпадающие список закрывается как и положено, но значение не сохраняется в грид. Нужно щёлкнуть где-то по форме пару раз мышкой, чтобы выбранное значение списка сохранилось в гриде.
Как я понимаю, нужно выполнить Метод POST у cxVerticalGrid`а, но не могу найти его.

Если кто сталкивался с таким и решил проблему, то подскажите, пожалуйста, как её решить.
Автор: StdNet
Дата сообщения: 05.01.2008 10:53
доброго дня. сложилась такая ситуация, нада что бы в компоненте типа GridlookUpEdit
можно было прикрутить запрос типа

select ID, Code, descr from Table

в выпадающем списке показываеться два столбца код и наименование
юзер по коду ищет нужное, выбирает его и в какую то переменую присваиваеться значение поля ID для выбраного из списка(например клиента)

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

и если можно к пояснению кусочек кода...
Автор: brookson
Дата сообщения: 05.01.2008 20:28
Chukotka, greenpc
помните проблему с мастером-деталями? которая не отображала все детали?
так вот, она решилась на отдохнувшую голову.
оказалось, в запросе order by достаточно было переставить местами поля даты и уникального индекса.
дата стояла первой. а я поставил первым индекс, потом дату - и всё заработало. интересно.... (:
Автор: zver
Дата сообщения: 05.01.2008 20:34
X11
Поставь свойство
DataController->Options
[dcoImmediatePost]=true;

Значение будет сохранятся в базу при покидании фокуса на ячейке - тоесть всегда( ну если только комп не вырубить в момент сохранения или процесс не снять с диспетчера задач).

Без этого свойства значение должно сохранятся при переходе на другую строку грида.

Добавлено:
StdNet
А вариант cxGrid1DBTableView1Column1->Propertis=LookupComboBox чем не подходит?
Там запрос типа "select ID, Code, descr from Table" можно менять на каждой строке индивидуально(свойства ListSource, ListFieldNames). Если писать всё вручную, то будет глючить.
Автор: X11
Дата сообщения: 05.01.2008 22:03
zver, так у меня не DB вертикал грид, а обычный

Добавлено:

Цитата:
TcxVerticalGrid

Автор: zver
Дата сообщения: 06.01.2008 12:00
X11
Обычный?
Это был описан cxGrid.
В TcxVerticalGrid то-же у каждого из Editors есть свойство EditPropertis в котором можно задать LookupComboBox.

Если вообще без DevExpress делать, то понадобится или listbox или грид какой стандартный; и далее отавливаеш событие MouseClick, узнаешь в какой ячейке оно произошло и показываешь в этом месте свой контрол с запросом(предварительно заполнив его данными). Далее на клик по своему контролу заполняешь ту ячейку и закрываешь свой контрол.
Автор: X11
Дата сообщения: 06.01.2008 16:02

Цитата:
В TcxVerticalGrid то-же у каждого из Editors есть свойство EditPropertis в котором можно задать LookupComboBox.

ну так у меня так и сделано!!!!!!!!!!!

Добавлено:
zver
мне нужно именно с TcxVerticalGrid решить проблему сохранения
Автор: zver
Дата сообщения: 06.01.2008 22:09
X11
вообще если использовать cxDBVerticalGrid, то там есть метод Post
cxDBVerticalGrid1->DataController->Post();
Ну а если у тебя грид не связан с источником данных, тогда вообще не понятно почему там не сохраняется ничего...
Автор: Semeon555777
Дата сообщения: 07.01.2008 02:27
Есть такая проблема. Делаю группировку в TcxGrid. фокус остается на первой записи БД. А как встать на 1 Row Grid'a???
Помогите

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182

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


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