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

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

Автор: GOA78
Дата сообщения: 30.12.2009 10:47
Забыл добавить - DBTableView
Автор: crazypiggy
Дата сообщения: 30.12.2009 11:07
Вроде проблема решилась после того как я добавил FIBDataset.CashedUpdates=True
Автор: Chukotka
Дата сообщения: 30.12.2009 11:43
X11

Цитата:
А если через InplaceEditor
что-то типа:
var
e:TcxCustomEdit;
begin
e := cxVerticalGrid.InplaceEditor

Спасибо огромное - самое оно!
Автор: vladman
Дата сообщения: 30.12.2009 13:49
Chukotka

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

Совет X11 использовать свойство InplaceEditor хорош. Но для вашего случая, установка курсора в нужную позицию, нужно понять в какой момент вы это хотите выполнить. Дело в том, что свойство InplaceEditor при неактивном редакторе (<YourcxVerticalGrid>.IsEditing = False) возвращает nil. Т.е. я бы еще добавил проверку
if Assigned(<YourcxVerticalGrid>.InplaceEditor) and (<YourcxVerticalGrid>.InplaceEditor is TcxMemo) then
TcxMemo(<YourcxVerticalGrid>.InplaceEditor).SelStart := ....;
Автор: X11
Дата сообщения: 30.12.2009 14:08
Ребята, кто-нибудь организовывал поиск по cxGrid (unbound mode)? Т.е. cxGrid используется, как StringGrid, без датасета. Нужно сделать поиск с кнопками Далее и Назад. Что посоветуете?
Автор: vladman
Дата сообщения: 30.12.2009 14:20
crazypiggy

Цитата:
Вроде нашел как загрузить.


Цитата:
Вроде проблема решилась после того как я добавил FIBDataset.CashedUpdates=True

Посмотрел ваш пример. Есть пару уточнений. Вы хотите дать пользователю через механизм Drag&Drop изменять структуру дерева, добавлять новую запись, удалять запись, и вы хотите чтобы эти действия записались в БД не сразу, а по кнопке *Сохранить*, и дать пользователю возможность отменить изменения. Но при этом вы хотите чтобы структура дерева менялась (визуализировалась) сразу же, без сохранеия в БД. Верно?.

Добавлено:
X11

Цитата:
Нужно сделать поиск с кнопками Далее и Назад. Что посоветуете?

Можно начать с посмотреть в сторону TcxDataControllerSearch Object:
ms-help://borland.bds5/ExpressDataController.BDS5/ExpressDataController/IDH_Class_TcxDataControllerSearch.htm
Думаю, что там все достаточно несложно.
Автор: crazypiggy
Дата сообщения: 30.12.2009 14:41

Цитата:
Вы хотите дать пользователю через механизм Drag&Drop изменять структуру дерева, добавлять новую запись, удалять запись, и вы хотите чтобы эти действия записались в БД не сразу, а по кнопке *Сохранить*, и дать пользователю возможность отменить изменения. Но при этом вы хотите чтобы структура дерева менялась (визуализировалась) сразу же, без сохранеия в БД. Верно?.

Да, верно.
Автор: vladman
Дата сообщения: 30.12.2009 14:54
crazypiggy

Цитата:
Да, верно.

Чуть позже, подправлю ваш пример.
Автор: X11
Дата сообщения: 30.12.2009 15:28

Цитата:
Думаю, что там все достаточно несложно.

Да, всё просто, но

Код:
Var
cxDataControllerSearch: TcxDataControllerSearch;
begin
cxDataControllerSearch := TcxDataControllerSearch.Create(Grid1.DataController);
cxDataControllerSearch.Locate(Grid1.Controller.FocusedItemIndex, edSearch.Text);
Автор: Chukotka
Дата сообщения: 30.12.2009 15:53
vladman

Цитата:
Совет X11 использовать свойство InplaceEditor хорош. Но для вашего случая, установка курсора в нужную позицию, нужно понять в какой момент вы это хотите выполнить. Дело в том, что свойство InplaceEditor при неактивном редакторе (<YourcxVerticalGrid>.IsEditing = False) возвращает nil.
Да, конечно, все эти проверки делаются - меня интересовал принципиальный способ достучаться до внутреннего TcxMemo.
Автор: X11
Дата сообщения: 30.12.2009 16:07
Вот сделал такой поиск (регистронезависимый) на примере с "их" сайта. Может кто усовершенствует


Код:
procedure TfmScanner.actSerachNextExecute(Sender: TObject);

function GetRecordIndexByText(
AView : TcxCustomGridView;
AText : string;
AColumnIndex : Integer) : Integer;
var
I: Integer;
begin
Result := - 1;
with AView.DataController do
for I := grid1.DataController.FocusedRecordIndex + 1 to RecordCount - 1 do
if StrPos(PChar(AnsiUpperCase(DisplayTexts[I, AColumnIndex])), PChar(AnsiUpperCase(AText))) <> nil then
begin
Result := I;
Break;
end;
end;

var
ARecordIndex: Integer;
begin
// по умолчанию actSerachNext.Caption := 'Найти...';

if grid1.DataController.RecordCount <= 0 then exit;

//устанавливаем первую строку, если ничего не выбрано
if grid1.DataController.FocusedRecordIndex < 0 then
grid1.DataController.FocusedRecordIndex := 0;

//устанавливаем колонку с текстом объявления, если ничего не выбрано
if grid1.Controller.FocusedColumnIndex < 0 then
grid1.Controller.FocusedColumnIndex := colText.Index;


if edSearch.Text <> '' then
ARecordIndex := GetRecordIndexByText(grid1,
edSearch.Text,
grid1.Controller.FocusedColumnIndex);

if ARecordIndex <> -1 then
begin
grid1.DataController.FocusedRecordIndex := ARecordIndex;
actSerachNext.Caption := 'Следующее';
end
else
actSerachNext.Caption := 'Найти...';

lbSearchMatches.caption := 'Совпадений не найдено';
lbSearchMatches.Visible := ARecordIndex = -1;
end;

Автор: GOA78
Дата сообщения: 30.12.2009 17:42
Уважаемые господа.
Использую cxGrid V46 DBTableView.
При использовании метода OnFocusedRecordChanged метод вызывается 2 раза.
Как решить эту проблему????
Автор: X11
Дата сообщения: 30.12.2009 19:05

Цитата:
При использовании метода OnFocusedRecordChanged метод вызывается 2 раза.

Dev 47. Подтверждаю. А вот как решить не знаю
Автор: JohnSilver182
Дата сообщения: 30.12.2009 20:26
Hi All
А можно с CxGrid сделать как на картинке
Известен скажем ID типа товара , и ID модели
ID типа вынести как заголовок
Автор: jonikDk
Дата сообщения: 30.12.2009 21:26

Цитата:
А можно с CxGrid сделать как на картинке
Известен скажем ID типа товара , и ID модели

по моему это простая группировка по ID типа и она легко делается ... или я вопрос не понял
Автор: JohnSilver182
Дата сообщения: 30.12.2009 21:59
jonikDk А если легко то какие свойства покурить ??
Автор: jonikDk
Дата сообщения: 30.12.2009 22:23
JohnSilver182
можно просто мышкой нужное поле (по которому ты хочешь группировать ) перетащить на Group Panel. Это можно делать как в дизайне так и в рантайме.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081

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


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