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

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

Автор: JohnSilver182
Дата сообщения: 08.06.2009 12:52
f3ka - ААА , понял
Только вот у dxLayoutControl1 внутрення граница ИМХО велика . Визуально миллиметра 4 . Вот если бы поменьше сделать .
Автор: FunCode
Дата сообщения: 08.06.2009 12:57
Meister Floh

Цитата:
И еще один вопрос.. Есть 2 TcxDBTreeList привязанные к одному датасет в обоих SmartLoad = true и SmartRefresh = false, т.к кол-во записей достаточно большое.. естественно проходя до нужной ветки в одном, хотелось бы чтобы во втором курсор позиционировался на выбранную в первом TreeList запись (т.е. чтобы они вели себя так, как без включенного SmartLoad), какое событие отработать, чтобы сместить указатель во втором TcxDBTreeList?

Так он и так позиционируется, только проблема в том что еще надо отслеживать
раскрытие ветвей (потому как SmartLoad = True), думаю смотреть надо в сторону OnExpanded, OnCollapsed ...
Автор: f3ka
Дата сообщения: 08.06.2009 13:17
ZalivkoDenis
2. Свойство NotDocking = [dsNone,dsLeft,dsTop,dsRight,dsBottom] (везде поставить True)
Автор: SIgor33
Дата сообщения: 08.06.2009 13:21
FunCode
Спасибо я тоже уже додумался что там разные наследники.
Но все равно огромное человеческое
Автор: ZalivkoDenis
Дата сообщения: 08.06.2009 15:43
f3ka

Цитата:
везде поставить True

Точно! И даже в dsNone Вот голова -- два уха! Спасибо!!!
Автор: Meister Floh
Дата сообщения: 08.06.2009 18:39
FunCode это я уже понял и проверил.. Конкретизирую вопрос : Есть 2 TcxDBTreeList привязанные к одному датасет в обоих SmartLoad = true и SmartRefresh = false, т.к кол-во записей достаточно большое.. естественно проходя до нужной ветки в одном, хотелось бы чтобы во втором ветви разворачивались синхронно первому... какое событие отработать, чтобы синхронизировать второй TcxDBTreeList? Добавлю - FullRefresh - не помогает...
Автор: TSGURAL
Дата сообщения: 09.06.2009 09:43
Не могу в cxGrid назначить формат для сумм колонок типа Integer. Цифры получаются большие, хочу отделить пробелом по 3 знака (5 330 121). Как это делается?

with SumGroup.SummaryItems.Add as TcxGridDBTableSummaryItem do
begin
Column:=MainTableView.Columns[i];
Column.Summary.GroupFooterKind:=skSum;
Column.Summary.GroupFooterFormat:= '???';
FieldName:=MainTableView.Columns[i].DataBinding.FieldName;
Kind:=skSum;
Position:=spFooter;
end;
Автор: f3ka
Дата сообщения: 09.06.2009 09:52
TSGURAL
Column.Summary.GroupFooterFormat:= ',0;-,0';
а вообще можно в справке найти много полезного про Format, DisplayFormat и EditFormat
Автор: TSGURAL
Дата сообщения: 09.06.2009 10:17
Со справкой туго. Help, что у меня есть, но мне малополезен - большая часть непонятна, поисковая система на слово "format" нашла только "information". Может подскажете, где скачать что-нибудь более дружелюбное (уж про рус. яз и не заикаюсь).

Поставила Column.Summary.GroupFooterFormat:= ',0;-,0';
Ничего не изменилось. Суммы выходят в том же виде: 5330121.00
Автор: f3ka
Дата сообщения: 09.06.2009 10:35
TSGURAL
проблема вся в том что еще необходимо указать
Column.Summary.FooterFormat := ',0;-,0';
P.S. GroupFooterFormat это для итогов в каждой группе... а не по колонке в целом
Автор: TSGURAL
Дата сообщения: 09.06.2009 10:51
Спасибо, получилось.
Автор: SIgor33
Дата сообщения: 09.06.2009 13:26
вопрос такой можно ли организовать поиск по символам в TdxDBLookUpTreeView такой же как в TcxDBLookupComboBox пишешь например МОСКВА и в TdxDBLookUpTreeView список позиционнируется на данное слово
Автор: f3ka
Дата сообщения: 09.06.2009 13:41
SIgor33
а в какой версии есть TdxDBLookUpTreeView ? а то у меня стоит 42-я версия и таких компонент нету что то...
Автор: jonikDk
Дата сообщения: 09.06.2009 14:32
f3ka
это скорей всего к 3 версии девок относится
Автор: SIgor33
Дата сообщения: 09.06.2009 14:46
f3ka
Извени ошибка вышла TdxDBLookTreeView а не TdxDBLookUpTreeView
а принадлежит ExpressDBTree Suite
Автор: Chukotka
Дата сообщения: 10.06.2009 03:43
Выставляю программно фильтр на cxGridView:

Код:
    procedure SetFilter(const V: TcxGridDBTableView;
        const AItem: TcxCustomGridTableItem; const F: string);
    var
        AItemList: TcxFilterCriteriaItemList;
    begin
        with V do
        begin
            DataController.Filter.BeginUpdate;
            try
                DataController.Filter.Root.Clear;
                if F <> '' then
                begin
                    AItemList := DataController.Filter.Root.AddItemList(fboOr);
                    AItemList.AddItem(AItem, foLike, '%' + F + '%', F);
                end;
            finally
                DataController.Filter.Active := True;
                DataController.Filter.EndUpdate;
            end;
        end;
    end;
Автор: FunCode
Дата сообщения: 10.06.2009 06:57
Chukotka

Цитата:
Вопрос: как заставить фильтр не обращать внимание на регистр при сравнении? В таблице в строках могут быть символы в различных регистрах, нельзя просто выполнить, например, F := AnsiUpperCase(F);


View.DataController.Filter.Options.fcoCaseInsensitive:=True;

fcoCaseInsensitive

Specifies whether filtering is case sensitive. When this flag is active in the TcxFilterCriteria.Options property, filtering does not distinguish upper and lowercase characters.

Добавлено:
Meister Floh

Цитата:
хотелось бы чтобы во втором ветви разворачивались синхронно первому


я уже писал:

Цитата:
OnExpanded, OnCollapsed ...


если интересно как дальше этим воспользоваться - напишу ...
Автор: Chukotka
Дата сообщения: 10.06.2009 20:03
FunCode

Цитата:
View.DataController.Filter.Options.fcoCaseInsensitive:=True;

у меня получилось только так:

Код:
DataController.Filter.Options := DataController.Filter.Options + [fcoCaseInsensitive];
Автор: vladman
Дата сообщения: 11.06.2009 00:18
Всех приветствую! Некоторое время не было возможности сюда заглядывать, но обещаю всем ко мне обратившимся ответить по мере возможности.
MagistrAnatol

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

Тогда, исходя из такой логики, самым идеальным способом обновления буде вариант, в котором исполняемый модуль (exe) выполняет соединение к базе данных, затем вычитывает исполняемый код всего приложение из blob поля, создает/заменяет другой (основной) exe файл приложения, пишет в него вычитанный исполняемый код, запускает этот файл на выполнение, заканчивает свою работу. . На самом деле, для организации надежного и эффективного обновления приложения, посмотрите в сторону, например, компонента AutoUpgrader от _http://www.appcontrols.com.

Добавлено:
Meister Floh

Цитата:
сие..вставить в TdxRibbonPopupMenu.. В том смысле, чтобы SpinEdit рядочком сидели, а не в колонку

Боюсь, что такой подход противоречит самой логике PopupMenu - одна срока - одна команда. Но, опять же, если очень критично именно такое представление, попробуйте использовать PopupEdit. Как-то выше уже обсуждали его применение.

Добавлено:
Meister Floh

Цитата:
А не подскажете как в рибонах менять свойство Enabled не по одному элементу, а скажем всех элементов принадлежащих группе или табу?

Написать две небольшие процедуры. Что-то вроде этого:

Код: procedure SetRibbonTabGroupEnabledStatus(ARibbonTabGroup:TdxRibbonTabGroup; AEnabled: Boolean);
var
i: Integer;
begin
for i := 0 to ARibbonTabGroup.ToolBar.ItemLinks.Count - 1 do
ARibbonTabGroup.ToolBar.ItemLinks.Items[i].Item.Enabled := AEnabled
end;

и

procedure SetRibbonTabEnabledStatus(ARibbonTab: TdxRibbonTab; AEnabled: Boolean);
var
i: Integer;
begin
for i := 0 to ARibbonTab.Groups.Count - 1 do
SetRibbonTabGroupEnabledStatus(ARibbonTab.Groups[i], AEnabled);
end;
Автор: Meister Floh
Дата сообщения: 11.06.2009 09:09
vladman

Цитата:
Написать две небольшие процедуры. Что-то вроде этого:

Ну я примерно так и сделал.. Просто думал где-то я недосмотрел и есть единое типа свойство.. Но все равно спасибо..
Автор: X11
Дата сообщения: 11.06.2009 15:48
Я опять по поводу перевода cxGrid`а. Если тип колонки не имеет ничего в свойстве Properies, а тип поля в базе - Boolean (и соответсвенно DataBinding.ValueType := boolean), то в выпадающем фильтре вместо Да и Нет опять вижу True и False. В самом поле видны чекбоксы. Что ещё забыли перевести?
Автор: f3ka
Дата сообщения: 11.06.2009 15:54
X11

Цитата:
cxSTextTrue
cxSTextFalse

?
Автор: X11
Дата сообщения: 11.06.2009 15:59
Нет.
Автор: FunCode
Дата сообщения: 11.06.2009 20:18
Chukotka

Цитата:
FunCode

Цитата:
View.DataController.Filter.Options.fcoCaseInsensitive:=True;  

у меня получилось только так:

Код:
 
DataController.Filter.Options := DataController.Filter.Options + [fcoCaseInsensitive];
 


написал неправильно , но главное суть поняли где искать
Автор: Meister Floh
Дата сообщения: 12.06.2009 10:15
FunCode

Цитата:
если интересно как дальше этим воспользоваться - напишу ...

Похоже что интересно.. Потому, как попробовал.. толком оно все равно не работает..
Автор: FunCode
Дата сообщения: 12.06.2009 11:24
Meister Floh

Цитата:
Похоже что интересно.. Потому, как попробовал.. толком оно все равно не работает..


Код: procedure TForm3.cxDBTreeList1Collapsed(Sender: TObject; ANode: TcxTreeListNode);
begin
if TcxDBTreeList(Sender).Focused and (ANode <> nil) then
cxDBTreeList2.Nodes[ANode.RecordIndex].Expanded:=False;
end;

procedure TForm3.cxDBTreeList1Expanded(Sender: TObject; ANode: TcxTreeListNode);
begin
if TcxDBTreeList(Sender).Focused and (ANode <> nil) then
cxDBTreeList2.Nodes[ANode.RecordIndex].Expanded:=True;
end;

procedure TForm3.cxDBTreeList2Collapsed(Sender: TObject; ANode: TcxTreeListNode);
begin
if TcxDBTreeList(Sender).Focused and (ANode <> nil) then
cxDBTreeList1.Nodes[ANode.RecordIndex].Expanded:=False;
end;

procedure TForm3.cxDBTreeList2Expanded(Sender: TObject; ANode: TcxTreeListNode);
begin
if TcxDBTreeList(Sender).Focused and (ANode <> nil) then
cxDBTreeList1.Nodes[ANode.RecordIndex].Expanded:=True;
end;
Автор: Meister Floh
Дата сообщения: 12.06.2009 12:23
FunCode
Пробовал так... Как только перехожу к глубине вложенности > 2 - так сразу Index out of bound...
Автор: FunCode
Дата сообщения: 12.06.2009 13:58
Meister Floh

Цитата:
Пробовал так... Как только перехожу к глубине вложенности > 2 - так сразу Index out of bound...

Только что сделал глубину вложения 5 уровней - все работает нормально ...
Обращение точно через RecordIndex ?
Автор: Meister Floh
Дата сообщения: 12.06.2009 15:52
FunCode
Да только через Items, потому как в С++ нет property enabled у property Nodes - может в этом причина?
Автор: FunCode
Дата сообщения: 12.06.2009 17:31
что через Items ?
напиши прямо сишный пример как у тебя сделано эта обработка ...

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081

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


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