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

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

Автор: Dimrix
Дата сообщения: 12.05.2009 10:56
Подскажите, а как заполнить cxDBComboBox что бы он заполнялся данными (а не первым значение) и их можно было выбирать. Делаю я следуюющее. Ложу кверю. Делаю выборку всех данных без исключений. Ложу датасоурце и привязываю к квере. Выкладываю сабж (или cxDBLookupComboBox), указываю на датасорце. Толи делаю кверю актив, толи открываю при открытии окна - результат один - появляется только 1 первая запись из таблицы.
Автор: Meister Floh
Дата сообщения: 12.05.2009 10:57
afiget
Когда день над чем нить пробьешься, то как говорил Шарапов "..глаз замыливается, и даже чего не было замечаешь" Теперь вот еще проблему надыбал, правда не такую глобальную.. Как бы это его автоматом (через cxPropertieStore) сохранить TStrings из Memo...
Автор: vladman
Дата сообщения: 12.05.2009 11:23
Meister Floh

Цитата:
Как бы это его автоматом (через cxPropertieStore) сохранить TStrings из Memo

А автомат кто/что спускать будет ? И что имелось ввиду через cxPropertieStore? А сохранять в файл? Путь/Имя файла где брать автомату? В общем вопросов масса

Добавлено:
Dimrix
Для Вашей задачи cxDBComboBox не подойдет. Вам нужен, как и написали cxDBLookupComboBox, только не "или", а "именно". И DataSource нужно привязывать не к свойству DataSource, а к свойству ListSource. Еще необходимо установить значение свойств KeyField и ListField.
Автор: Meister Floh
Дата сообщения: 12.05.2009 11:30
vladman - cохранить TStrings из MEMO при помощи cxPropertieStore в ini файл. Автоматом значит cxPropertieStore->Active = true;
Автор: vladman
Дата сообщения: 12.05.2009 12:05
Meister Floh
Ok, теперь ясно. Дело в том, что cxPropertieStore на данный момент не может сохранять TStrings. Девэкспресы с 01.08.2006 обещают это поправить. Ну раз еще не поправили, можно немного обработать эту ситуацию.
Идея очень простая - перед сохранением в файл/реестр компонентом cxPropertieStore, сохранить содержимое свойства типа TStrings в свойсво типа String и указать это свойство в cxPropertieStore как сохраняемое.
Я использую для таких случаев свойство Hint, но можно и любое другое текстовое поле, например HelpKeyword, все зависит от того какое из них не используется в данном проекте.
Итак, в обработчике onClose формы выполняем
<YourcxMemo>.Hint := <YourcxMemo>.Lines.DelimitedText;
а в обработчике onCreate формы выполняем
<YourcxMemo>.Lines.DelimitedText := <YourcxMemo>.Hint;
<YourcxMemo>.Hint := ''; // ну, или ваш хинт если он используется
Вот, собственно и все.
Автор: afiget
Дата сообщения: 12.05.2009 12:30
vladman
А в этом случае переносы строк нормально сохраняются или все же бьются?
Автор: vladman
Дата сообщения: 12.05.2009 12:45
afiget

Цитата:
А в этом случае переносы строк нормально сохраняются или все же бьются?

имелось ввиду #13#10?
Да, нормально. После восстановления все один в один.

Добавлено:
Кстати так же сохраняю и MRU Lists
Автор: afiget
Дата сообщения: 12.05.2009 13:27
vladman
Понятно, спасибо за инфу.
А фильтры в гриде сам сохраняешь по предлагаемому разработчиками сценарию или что-то свое?

ЗЫ
Кстати, SQL-запросы пробовал так сохранять. Проблем не возникало? А то у меня старый проект есть на поддержке, разработчики писали всю логику на клиенте и обновлять не очень удобно. Давно собирался изменить такое положение дел, вот и вспомнил.
Автор: vladman
Дата сообщения: 12.05.2009 13:48
afiget

Цитата:
А фильтры в гриде сам сохраняешь по предлагаемому разработчиками сценарию

Да, StoreToRegistry, StoreToIniFile с установленными TcxGridStorageOption = (gsoUseFilter, gsoUseSummary);

Цитата:
Кстати, SQL-запросы пробовал так сохранять. Проблем не возникало?

Нет, не пробовал, не было надобности. Думаю что проблем не должно быть.
Автор: Meister Floh
Дата сообщения: 12.05.2009 19:35
afiget
vladman
Спасибо, такая примерно мысль и была.. Только я пытался, разместить что-то, что будет в паблишед, и будет обладать неким свойством UnicodeString (или String, AnsiString, WideString и т.п.) Потому как сохранять SQL, а в нем не критичны перевод строки возврат каретки, но раз и они сохраняются - все гут...
Автор: ZalivkoDenis
Дата сообщения: 13.05.2009 09:45
Товарищи, у меня (или не у меня) очередной клинч.
Девки43, Ribbon. Хочу в заголовке Tab Group забамбахать Dialog Launcher. Всё делаю "по инструкции". В дезайн-тайме вижу эту пиндюлинку внизу-справа, а в ран-тайме -- ну хоть ты кол на голове чеши, ни хрена.
Может секрет есть?
Спасибо...
Автор: Meister Floh
Дата сообщения: 13.05.2009 10:34
vladman
Еще одна трабла выскочила.. Открываю мемо, вставляю туда текст из клипбоард, закрываю, открываю по новой, мемо пустой.. Логически понимаю, что внесенный текст не пишется в Lines. Но найти, чем его туда записать не получилось.. Написал на мемо обработчик OnExit в котором написал memo->PostEditValue(); - не помогло.. В чем трабла?

Добавлено:
ZalivkoDenis
Решил.. В событии формы OnActivate добавляем 2 строки:

Код:
YourTdxBarWithDialogLuncher->CaptionButtons->BeginUpdate();
YourTdxBarWithDialogLuncher->CaptionButtons->EndUpdate();
Автор: ZalivkoDenis
Дата сообщения: 13.05.2009 12:21
Meister Floh
М-да, конечно, лучше, чем ничего, НО, если есть несколько табов, то беда. ланчер отрисовывается только в табах первого рибон-таба В последующих - нет. Пробовал Вашу связку забамбахать на OnTabChanged -- один хрен -- не рисует. Видимо, это недосмотренная бага 43-ей сборки. Потому как в предыдущих сборках всё было гут...

Может у Вас найдётся ещё одно оригинальное решение (так вот осторожненько спрашиваю )?

Спасибо.
Автор: vladman
Дата сообщения: 13.05.2009 13:27
Meister Floh

Цитата:
Еще одна трабла выскочила..


Цитата:
Написал на мемо обработчик OnExit в котором написал memo->PostEditValue(); - не помогло..

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

Код: procedure <TYourForm>.<YourBarEditItemProperties>CloseUp(Sender: TObject);
begin
TcxMemo(TcxPopupEdit(Sender).Properties.PopupControl).PostEditValue;
end;
Автор: Meister Floh
Дата сообщения: 13.05.2009 23:08
ZalivkoDenis
Если нужно могу выслать тебе перекомпиленую dcldxRibbonC12.bpl - с ней диалог лунчер работает - для этого свое мыло мне в ПМ..
Автор: Chukotka
Дата сообщения: 14.05.2009 01:26
Ситуация: приложение с использованием DockLib от Devx. FloatingOnTop - False. Есть несколько открытых Dock-панелей во Float-состоянии (откреплены от DockSite и выглядят как формы). Если при этом открыть в модальном режиме диалоговое окно, перейти к другому приложению по Alt+Tab, а потом вернуться к моему - модальное окно оказывается под открытыми Dock-панелями. Неопытных юзеров такое поведение пугает до уср.чки
Delphi 2007, WinXP SP2, Devx 42.

Есть соображения?

Спасибо.
Автор: VitOs2
Дата сообщения: 14.05.2009 11:13
infomSB
Знаю, что это похоже на "... с пушки по воробьям". Но все же. Очень нужно именно такой вид. Большая кнопка несет информациооный характер. Она изменяется в зависимости от данных.
Знаю, что не оптимально. Но, красота требует жертв. Если б только эти жертвы можно было б уменьшить...
Автор: QwertyMag
Дата сообщения: 15.05.2009 02:28
Требуется текст в ячейке cxGrid отобразить разным цветом. Например, первый символ красным цветом, а третий символ - синим. Как можно это сделать, подскажите пожалуйста ! Пробовала через InternalTextOut в событии onCustomDrawCell, но смогла сделать только что-то одно из требуемого, т.е. либо первый символ красным, либо третий символ синим. А надо одновременно и то, и другое !
Автор: f3ka
Дата сообщения: 15.05.2009 07:40
QwertyMag
можно попробывать использовать RichEdit в Properties для колонки... Вот здесь приблизительно тоже самое спрашивали...
Автор: X11
Дата сообщения: 17.05.2009 20:07
Запутался я совсем. И из справки не могу понять. Как выполнить цикл по видимым записям cxGrid. cxGrid не привязан к базе. Но может быть отфильтрован или сгруппирован средствами самого грида.

Этот код выполняет цикл по все записям

Код:
for iCurRec := 0 to Grid1.DataController.RecordCount - 1 do begin
//даже если запись спрятана, всё равно идёт в расчёт
sAD := Grid1.DataController.Values[iCurRec, colText.Index];
...
Автор: vladman
Дата сообщения: 17.05.2009 23:12
X11

Цитата:
Как выполнить цикл по видимым записям cxGrid

Обратить внимание на <YourTcxGridTableView>.DataController.FilteredRecordCount

Цитата:
И из справки не могу понять.

TcxCustomDataController.FilteredRecordCount - ms-help://borland.bds5/ExpressDataController.BDS5/ExpressDataController/IDH_TcxCustomDataController_FilteredRecordCount.htm
TcxCustomDataController.RowCount - ms-help://borland.bds5/ExpressDataController.BDS5/ExpressDataController/IDH_TcxCustomDataController_RowCount.htm
Автор: QwertyMag
Дата сообщения: 18.05.2009 01:53
f3ka

Спасибо за ссылку! Это то, что надо! Все получилось.
Автор: ilyakoles
Дата сообщения: 18.05.2009 10:48
У меня следующая проблема, с которой не могу справиться.
Использую DevExpress x.42. Есть TcxGridTableView и есть стили. Один стиль с картинкой. Я пытаюсь определенному столбцу присвоить этот стиль и ничего не происходит. Если убрать картинку и поставить просто цвет, то все отлично.

В чем может быть моя проблема?

Заранее благодарен
Автор: f3ka
Дата сообщения: 18.05.2009 11:31
ilyakoles
что значит определенному столбцу присвоить? <TcxGridColumn>.Styles.Content ???
оно почему то не работает, но если присвоить <TcxTableView>.Styles.Content этот же стиль то работается для всех колонок...
что самое странное что если в OnGetContentStyle и для <TcxGridColumn> и для <TcxTableView> в AStyle пихать этот же стиль то не работает
Автор: ilyakoles
Дата сообщения: 18.05.2009 12:04
Интересно, а такая хрень у всех Девок или нет?
Автор: vladman
Дата сообщения: 18.05.2009 17:18
ilyakoles

Цитата:
У меня следующая проблема, с которой не могу справиться... В чем может быть моя проблема?

Проблема в том, что стиль с битмапом для колонки не поддерживается в настоящий момент (не реализован)
Подробнее - _http://www.devexpress.com/Support/Center/p/Q99175.aspx
а именно -

Цитата:
I'm sorry, but the bitmaps, set via the column's Styles, aren't supported at present.
Автор: X11
Дата сообщения: 18.05.2009 21:59
Народ. Кто использует девок с локализатором. Там грамматическая ошибочка в переводе мелкая.
"Предыдущие" пишется с одной буквой "д".
Я пока не нашёл, где это в файле с переводом. Но вот оно на картинке.
http://pic.ipicture.ru/uploads/090518/VKDZwIVphl.png

Это если в свойствах грида DateTimeHandling->Filters включить доп. пункты в выпадающем фильтре.

Добавлено:
Вот оно
scxGridLastTwoWeeks="Предыдущие 2 недели"
Автор: Chukotka
Дата сообщения: 19.05.2009 04:31
Есть DBVerticalGrid, LayoutStyle = lsSingleRecordView

как в обработчике TcxDBEditorRow OnEditPropertiesOnChange(Sender: TObject)
на основе данных Sender'a вычислить имя связанного поля БД?

или, как альтернатива, как выяснить, для какого поля вызывается обработчик грида:
OnGetContentStyle(Sender: TObject; AEditProp: TcxCustomEditorRowProperties; AFocused: Boolean;
ARecordIndex: Integer; var AStyle: TcxStyle);
Автор: zaroman
Дата сообщения: 19.05.2009 13:03
Добрый день! Подскажите, пожалуйста, можно ли в QuantumGrid, в DBTableView добавить "внутренний "столбец - номер по порядку. Такой, чтобы переситывался (не менялся) при сортировках, группировках и т.д.
Автор: afiget
Дата сообщения: 19.05.2009 13:43
zaroman
Вообще-то есть где-то на сайте у Дев.
Но мне проще скопипастить из проекта.

Добавляем колонку Num в View1.
Обрабатываем OnGetDisplayText для нее.

procedure TBaseDocWithRows.View1NumGetDisplayText(Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord; var AText: string);
var
Row: Integer;
begin
inherited;
// if ShowNumCol then
// begin
Row := Sender.GridView.DataController.GetRowIndexByRecordIndex(ARecord.RecordIndex, False)+1;
AText := IntToStr(Row);
// end;
end;

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081

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


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