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

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

Автор: Andy_BitOff
Дата сообщения: 25.12.2008 13:17
afiget

Цитата:
У меня отдельно стоящий ExtLookupComboBox прекрасно сохраняется с помощью PropertiesStore. Без единой строчки кода.
DropDownSizeable=true
Начальные значения (сохраняю только их)
DropDownWidth=200
DropDownHeight=200

После изменения размеров в соответствующем ини-файле видны строки:
[cxExtLookupComboBox1: TcxPropertiesStoreComponent]
=
Properties.DropDownHeight=280
Properties.DropDownWidth=331

И у тебя это работает?
Т.е. при повторной загрузке приложения popup имеет размеры, которые ты выбрал в прошлый раз?
Автор: afiget
Дата сообщения: 25.12.2008 16:24

Цитата:
И у тебя это работает?
Т.е. при повторной загрузке приложения popup имеет размеры, которые ты выбрал в прошлый раз?

Именно.
И в ини-файле все прекрасно видно между запусками приложения.
Автор: Andy_BitOff
Дата сообщения: 25.12.2008 16:27
Это видно только в ини-файле или и при повторном запуске приложения?

Скинь исходники с exe'шником.
Автор: afiget
Дата сообщения: 25.12.2008 17:35

Цитата:
Это видно только в ини-файле или и при повторном запуске приложения?

Ну конечно.


Цитата:
Скинь исходники с exe'шником.

Угу, обязательно:
Andy_BitOff
Адрес E-Mail:    E-mail скрыт



Вот ссылка на тестовый проект:
http://uafile.com/file/8451/TestExtLookup-zip.html
Автор: Andy_BitOff
Дата сообщения: 25.12.2008 19:24
afiget
Ясно. Мы говорили о разных вещах. Посмотри мой вариант, который НЕ сохраняет.
http://rapidshare.com/files/176743026/TestExtLookup.rar.html
Автор: afiget
Дата сообщения: 26.12.2008 13:57

Цитата:
Посмотри мой вариант, который НЕ сохраняет.

Видел. Есть мысли, но позже. Сейчас занят.
Автор: Andy_BitOff
Дата сообщения: 26.12.2008 14:06
Ок.
В принципе, так как у меня (закоментированный кусок), можно работать, только надо либо получить размер нижней полосы, либо прибавлять магическое число, которое, впрочем, при разных скинах разное.
Автор: psys6
Дата сообщения: 26.12.2008 18:05
Подскажите пожалуйста!

Очень банальный на мой вгляд вопрос, и наверное я совсем тупой, но как работать с данными в GridControl?

Есть база mysql, все отлично заполнилось через this.listingTableAdapter.Fill
А вот дальше?
Мне например надо при двойном клике на строке поменять значение в первой колонке текущей строки.

Когда работал с defaultными датагридом, все делалось просто
dataGrid1.Rows[dataGrid1.CurrentRow.Index].Cells[0].Value = "новое значение";

А как сдесь?


VS2008 Pro, DX 8.3 , WindowsFormsApplication
Автор: kuzmoid
Дата сообщения: 28.12.2008 02:24
Andy_BitOff

Я не особой теме но вот:

procedure TForm1.t1t2_IDPropertiesInitPopup(Sender: TObject);
begin
(t1t2_ID.Properties as TcxExtLookupComboBoxProperties).PopupMinWidth:= 1000;
(t1t2_ID.Properties as TcxExtLookupComboBoxProperties).PopupWidth:= 1000;
end;

Может натолкнет на мысль
Автор: Andy_BitOff
Дата сообщения: 28.12.2008 13:53
Установка свойства PopupMinWidth неприемлемо, т.к. пользователь не может изменить размер popup'а меньше указанного размера.
Задача состоит в том, чтобы пользователь развернул попап так как ему удобно, а программа сохранила эти размеры и при следующей загрузке попап выпадал такой же, но при этом имел так же возможность изменяться как и раньше, что невозможно при установке свойства PopupMinххх
Автор: X11
Дата сообщения: 28.12.2008 15:38
Почему-то в базу записывается только одна колонка.
Вот код (импорт из экселя):

Код:
For x:=2 to iLastRow+3 do begin
Телефон := fmScanner.OnlyDecImport(WorkSheet.Cells.Item[x,2].Value);
Посредник := WorkSheet.Cells.Item[x,3].Value;
Адрес := WorkSheet.Cells.Item[x,4].Value;
Примечание := WorkSheet.Cells.Item[x,5].Value;
slp.Clear;
if Pos(',', Телефон) <> 0 then
РазделительТелефонов := ','
else
if Pos(';', Телефон) <> 0 then
РазделительТелефонов := ';';

slp.Text := StringReplace(Телефон, РазделительТелефонов, #13, [rfReplaceAll, rfIgnoreCase]);
for iPhones := 0 to slp.Count - 1 do begin
GridDB1.DataController.Append;

Телефон := fmScanner.OnlyDec(slp[iPhones]);
if (length(Телефон) = 10) and ( copy(Телефон,1,1)<>'8' ) then
Телефон := '8'+Телефон;

//записывается в базу только ТЕЛЕФОН
GridDB1.Columns[GridDB1TEL.Index].EditValue := Телефон;

GridDB1.Columns[GridDB1NAME_MEDIATOR.Index].EditValue:= Посредник;
GridDB1.Columns[GridDB1ADDRESS.Index].EditValue := Адрес;
GridDB1.Columns[GridDB1Remark.Index].EditValue := Примечание;
GridDB1.DataController.post;
end;//for
end;//for

Автор: X11
Дата сообщения: 28.12.2008 18:50
Заметил, если у FIBDataSet`а поставить
CanChangeSQLs и AutoReWriteSQLs в True, то все поля заполняются %)
Автор: X11
Дата сообщения: 28.12.2008 22:32
Скажите, может ли квантумгрид объединять ячейки? Если да, то как это оргинизовать?
Автор: ChSerg
Дата сообщения: 28.12.2008 22:48
X11

Смотри демо. Там есть пример.
Автор: X11
Дата сообщения: 28.12.2008 23:24
А как пример называется? Скажи, если не сложно. Там довольно таки много примеров...

Добавлено:
Посмотрел пример с уровнями (имеется ввиду мастер деталь). Захотел соорудить себе такой же. Ничего военного. Всё просто. прописал поля, отсортировал детальный набор по детальному ключу. Но в дочернем уровне записи грид не показыват. Подсоединил к дочернему датасет грид, вижу, что записи есть, но в дочернем уровне их нет. Мож ещё какая хитрость?
Автор: f3ka
Дата сообщения: 29.12.2008 09:29
X11 по поводу объединения ячеек в гриде ищи слово Merge либо в колонке либо в во вьюхе... а для мастер-детайл возможно надо внимательно в демке посмотреть на проперти у датасетов... возможно там стоит у детайла датасорс от мастера...
Автор: X11
Дата сообщения: 29.12.2008 10:38
f3ka, точно, гугл + cxgrid merge

а по поводу мастер - деталь так и не дошло, привязки самих гридом или датасетов через датасорс нету

Добавлено:
http://www.delphikingdom.ru/asp/answer.asp?IDAnswer=53451
вот прочитал, всё прописано, но.... толку нету
Автор: psys6
Дата сообщения: 29.12.2008 14:06
Подскажите как вы в GridControl в ячеках меняете значения, как вы к ним обращаетесь?

VS2008, DX8.3
Автор: Andy_BitOff
Дата сообщения: 29.12.2008 14:45
psys6
а в чем у тебя проблема-то? Что, сам Grid не меняет?

Можно, например, так;
Grid.DataController.Values[y, x] := 'SomeText';
где:
y - Row number
x - Column index

или так;
Grid.DataController.DataSource.DataSet.Fields[x].AsXXX := 'SomeText';
где:
x - Field index в текущем Dataset'е
AsXXX - Field type, например AsString

или так;
Grid.Columns[x].EditValue := 'SomeText';
где:
x - Column index для текущей (выделенной) строки, она же текущая в Dataset'е

Что конкретно тебе надо?
Автор: X11
Дата сообщения: 29.12.2008 15:29
Вот что я заметил, если добавлять данные добавлять через грид, то срабатывает триггер обновления у firebird. Это нормально? Событий одновления во время добавления я не содавал.
Автор: psys6
Дата сообщения: 29.12.2008 15:33
Andy_BitOff
Что подзразумеваете под стандартный Grid? Тот который входит в комплект с программой?
Так у него все хорошо.

Я же веду речь о GridControl, у которого есть mainview1, gridview1 и у них никаких DataController, Rows, Items и прочих аналогов для обращения к ячейки не нашел.
Автор: Andy_BitOff
Дата сообщения: 29.12.2008 15:57
Я говорю о TcxGrid у него для визуализации создается TcxGridLevel, которому назначается view'ер (TcxGridDBTableView, например) он-то, собственно и отображает данные. Вот в моих примерах Grid = TcxGridDBTableView
Автор: afiget
Дата сообщения: 29.12.2008 17:07
X11
С firebird не работал. С оговоркой на это, могу предложить воспользоваться дебаг-режимом для компонент доступа или профайлером, чтобы посмотреть, что клиент посылает серверу (какие команды).
Автор: X11
Дата сообщения: 29.12.2008 17:54
afiget,дело не в компонентах доступа, т.к. если добавлять данные напрямую через компоненты доступа, то обновление не срабатывает.
Автор: afiget
Дата сообщения: 29.12.2008 20:40
X11
Мысль поста была другая: найти что посылается на сервер и какой компонент генерирует этот код.
Например, если в компонентах доступа есть режим отладки, то остановиться сразу перед отправкой команды и просмотреть стэк вызовов, выискивая виновника.

Добавлено:
Andy_BitOff
По поводу ExtLookupCombobox.
Выкладываю результат экспериментов - работающий для ширины пример. Если есть желание, можете покопаться глубже.
Честно говоря, я не ставил перед собой цели сделать красиво, универсально и идеально. Мне было просто интересно решить эту задачку.
http://uafile.com/file/8728/WorkedExtLookup-zip.html
Автор: Andy_BitOff
Дата сообщения: 29.12.2008 23:03
afiget
Это тоже самое, что предлагал и я.
Автор: afiget
Дата сообщения: 29.12.2008 23:32
Andy_BitOff
Если ты о сохранении при событии CloseUp, то да.
Но на этом сходство заканчивается.

Кстати, есть мысль, что при использовании Properties колонки вместо RepositoryItem не будет работать, т.к. на момент создания формы не существует объекта ExtLookupCombobox в Properties колонки. Создается он в рантайм при активизации ячейки.
Автор: Andy_BitOff
Дата сообщения: 29.12.2008 23:50
Однако, при сохранении свойств DropDownХХХ они сохраняются и восстанавливаются при инициализации приложения.

Добавлено:
Больше всего раздражает то, что сам Грид, зараза, ведь знает и помнит эти размеры, во всём времени жизни popup'а, но как их получить...
Я покапался немного в сырцах, но так и не нашел. Можно было бы перекрыть... Знать бы что...
Автор: afiget
Дата сообщения: 30.12.2008 00:56

Цитата:
при сохранении свойств DropDownХХХ они сохраняются и восстанавливаются при инициализации приложения.

К сожалению, восстанавливаются только те значения, которые были прописаны в design-time или после явного присвоения в коде.
Иначе не нужно было бы мудрить с промежуточным хранилищем этой информации.
Автор: Andy_BitOff
Дата сообщения: 30.12.2008 09:07
psys6
А, тебе для Visual Studio, ну тады незнаю.
А как там у вас соединяется грид с источником данных? Ведь не грид же выступает в роли datasource?

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182

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


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