Забыл добавить - DBTableView
» Использование DevExpress (часть 3)
Вроде проблема решилась после того как я добавил FIBDataset.CashedUpdates=True
X11
Цитата:
Спасибо огромное - самое оно!
Цитата:
А если через InplaceEditor
что-то типа:
var
e:TcxCustomEdit;
begin
e := cxVerticalGrid.InplaceEditor
Спасибо огромное - самое оно!
Chukotka
Цитата:
Совет X11 использовать свойство InplaceEditor хорош. Но для вашего случая, установка курсора в нужную позицию, нужно понять в какой момент вы это хотите выполнить. Дело в том, что свойство InplaceEditor при неактивном редакторе (<YourcxVerticalGrid>.IsEditing = False) возвращает nil. Т.е. я бы еще добавил проверку
if Assigned(<YourcxVerticalGrid>.InplaceEditor) and (<YourcxVerticalGrid>.InplaceEditor is TcxMemo) then
TcxMemo(<YourcxVerticalGrid>.InplaceEditor).SelStart := ....;
Цитата:
Как при этом достучаться до TcxMemo, в которой происходит редактирование данных ячейки (нужно чтобы установить курсор Memo в определенную позицию?)
Совет X11 использовать свойство InplaceEditor хорош. Но для вашего случая, установка курсора в нужную позицию, нужно понять в какой момент вы это хотите выполнить. Дело в том, что свойство InplaceEditor при неактивном редакторе (<YourcxVerticalGrid>.IsEditing = False) возвращает nil. Т.е. я бы еще добавил проверку
if Assigned(<YourcxVerticalGrid>.InplaceEditor) and (<YourcxVerticalGrid>.InplaceEditor is TcxMemo) then
TcxMemo(<YourcxVerticalGrid>.InplaceEditor).SelStart := ....;
Ребята, кто-нибудь организовывал поиск по cxGrid (unbound mode)? Т.е. cxGrid используется, как StringGrid, без датасета. Нужно сделать поиск с кнопками Далее и Назад. Что посоветуете?
crazypiggy
Цитата:
Цитата:
Посмотрел ваш пример. Есть пару уточнений. Вы хотите дать пользователю через механизм Drag&Drop изменять структуру дерева, добавлять новую запись, удалять запись, и вы хотите чтобы эти действия записались в БД не сразу, а по кнопке *Сохранить*, и дать пользователю возможность отменить изменения. Но при этом вы хотите чтобы структура дерева менялась (визуализировалась) сразу же, без сохранеия в БД. Верно?.
Добавлено:
X11
Цитата:
Можно начать с посмотреть в сторону TcxDataControllerSearch Object:
ms-help://borland.bds5/ExpressDataController.BDS5/ExpressDataController/IDH_Class_TcxDataControllerSearch.htm
Думаю, что там все достаточно несложно.
Цитата:
Вроде нашел как загрузить.
Цитата:
Вроде проблема решилась после того как я добавил FIBDataset.CashedUpdates=True
Посмотрел ваш пример. Есть пару уточнений. Вы хотите дать пользователю через механизм Drag&Drop изменять структуру дерева, добавлять новую запись, удалять запись, и вы хотите чтобы эти действия записались в БД не сразу, а по кнопке *Сохранить*, и дать пользователю возможность отменить изменения. Но при этом вы хотите чтобы структура дерева менялась (визуализировалась) сразу же, без сохранеия в БД. Верно?.
Добавлено:
X11
Цитата:
Нужно сделать поиск с кнопками Далее и Назад. Что посоветуете?
Можно начать с посмотреть в сторону TcxDataControllerSearch Object:
ms-help://borland.bds5/ExpressDataController.BDS5/ExpressDataController/IDH_Class_TcxDataControllerSearch.htm
Думаю, что там все достаточно несложно.
Цитата:
Вы хотите дать пользователю через механизм Drag&Drop изменять структуру дерева, добавлять новую запись, удалять запись, и вы хотите чтобы эти действия записались в БД не сразу, а по кнопке *Сохранить*, и дать пользователю возможность отменить изменения. Но при этом вы хотите чтобы структура дерева менялась (визуализировалась) сразу же, без сохранеия в БД. Верно?.
Да, верно.
crazypiggy
Цитата:
Чуть позже, подправлю ваш пример.
Цитата:
Да, верно.
Чуть позже, подправлю ваш пример.
Цитата:
Думаю, что там все достаточно несложно.
Да, всё просто, но
Код:
Var
cxDataControllerSearch: TcxDataControllerSearch;
begin
cxDataControllerSearch := TcxDataControllerSearch.Create(Grid1.DataController);
cxDataControllerSearch.Locate(Grid1.Controller.FocusedItemIndex, edSearch.Text);
vladman
Цитата:
Цитата:
Совет X11 использовать свойство InplaceEditor хорош. Но для вашего случая, установка курсора в нужную позицию, нужно понять в какой момент вы это хотите выполнить. Дело в том, что свойство InplaceEditor при неактивном редакторе (<YourcxVerticalGrid>.IsEditing = False) возвращает nil.Да, конечно, все эти проверки делаются - меня интересовал принципиальный способ достучаться до внутреннего TcxMemo.
Вот сделал такой поиск (регистронезависимый) на примере с "их" сайта. Может кто усовершенствует
Код:
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;
Код:
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;
Уважаемые господа.
Использую cxGrid V46 DBTableView.
При использовании метода OnFocusedRecordChanged метод вызывается 2 раза.
Как решить эту проблему????
Использую cxGrid V46 DBTableView.
При использовании метода OnFocusedRecordChanged метод вызывается 2 раза.
Как решить эту проблему????
Цитата:
При использовании метода OnFocusedRecordChanged метод вызывается 2 раза.
Dev 47. Подтверждаю. А вот как решить не знаю
Hi All
А можно с CxGrid сделать как на картинке
Известен скажем ID типа товара , и ID модели
ID типа вынести как заголовок
А можно с CxGrid сделать как на картинке
Известен скажем ID типа товара , и ID модели
ID типа вынести как заголовок
Цитата:
А можно с CxGrid сделать как на картинке
Известен скажем ID типа товара , и ID модели
по моему это простая группировка по ID типа и она легко делается ... или я вопрос не понял
jonikDk А если легко то какие свойства покурить ??
JohnSilver182
можно просто мышкой нужное поле (по которому ты хочешь группировать ) перетащить на Group Panel. Это можно делать как в дизайне так и в рантайме.
можно просто мышкой нужное поле (по которому ты хочешь группировать ) перетащить на Group Panel. Это можно делать как в дизайне так и в рантайме.
Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
Предыдущая тема: Delphi: tcp клиент в потоке
Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.