Можно ли выводит текст, на кнопках навигации на cxGrid
» Использование DevExpress
Какой простой способ управлять свойствами групп одинаковых компонентов из набора DevExpress, например, есть на форме как управлять сразу всей группой (простой перебор не предлагать), интересен аналог cxStyleRepository
Привет ВСЕМ!
ВОПРОС:
Использую TcxTreeList. При добавлении в него TcxTreeListNode хочу, чтоб запись распологалась по нескольким клолнка. Типа как у них: если стоит +, то колонки выглядят как объединенные. Подскажите, можно ли это сделать?
СПАСИБО!
ВОПРОС:
Использую TcxTreeList. При добавлении в него TcxTreeListNode хочу, чтоб запись распологалась по нескольким клолнка. Типа как у них: если стоит +, то колонки выглядят как объединенные. Подскажите, можно ли это сделать?
СПАСИБО!
DimonXP
Цитата:
cxPropertiesStory
Добавлено:
clear2121
Цитата:
Читать про свойство CategorizedColumn
Цитата:
Какой простой способ управлять свойствами групп одинаковых компонентов из набора DevExpress
cxPropertiesStory
Добавлено:
clear2121
Цитата:
Типа как у них: если стоит +, то колонки выглядят как объединенные. Подскажите, можно ли это сделать?
Читать про свойство CategorizedColumn
uranic2
Я кажется на совсем корректно сформулировал вопрос
Необходимо изменять свойства группы компонентов в одном месте, а не по отдельности каждый компонент.
Я кажется на совсем корректно сформулировал вопрос
Необходимо изменять свойства группы компонентов в одном месте, а не по отдельности каждый компонент.
Кто- нибудь пробовал прикрутить ещё одну кнопку к cxDBLookUpComboBoх ? Подскажите пожалуйста как проще это можно сделать.
Други мои , как мне собственно вставить иконку в каждую строчку при выводе датасета в cxGrid -е(как в Explorer е - режим таблица)
Заранее спасибо!
Заранее спасибо!
Dauren111
Обрабатываешь, например, OnCustomDrawCell и там рисуешь
Код: ImageList1.Draw(ACanvas.Canvas, AViewInfo.Bounds.Left,
AViewInfo.Bounds.Top, 1{Номер иконки в листе}, dsNormal, itImage);
Обрабатываешь, например, OnCustomDrawCell и там рисуешь
Код: ImageList1.Draw(ACanvas.Canvas, AViewInfo.Bounds.Left,
AViewInfo.Bounds.Top, 1{Номер иконки в листе}, dsNormal, itImage);
vshersh
ты сам пробовал у меня не получ-ся
может поподробней
ты сам пробовал у меня не получ-ся
может поподробней
Dauren111
Если бы не пробовал - не писал бы.
Цитата:
Я привел работающий кусок кода.
Что не получается? Создай на гриде колонки и для одной из них напиши указанный обработчик.
Если бы не пробовал - не писал бы.
Цитата:
может поподробней
Я привел работающий кусок кода.
Что не получается? Создай на гриде колонки и для одной из них напиши указанный обработчик.
IgorXI
Это смотря где делать. Если редактор стоит отдельно на форме, то проще поставить рядом кнопку. Если как редактор ячейки, то сложнее. Тут уже обсуждался подобные вопрос, не помню к какому конкретно редактору это относилось. Поищи, может и для данного случая подойдет.
Это смотря где делать. Если редактор стоит отдельно на форме, то проще поставить рядом кнопку. Если как редактор ячейки, то сложнее. Тут уже обсуждался подобные вопрос, не помню к какому конкретно редактору это относилось. Поищи, может и для данного случая подойдет.
Dauren111
Вот рабочая процедура которую я использую
Переопределяя у конки CustomDrawCell
[more]
procedure TFrmeSprBelaz.browserDBViewMACHINE_IDCustomDrawCell(
Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
begin
ACanvas.Canvas.Brush.Style := bsSolid;
ACanvas.Canvas.Brush.Color := $00F7EAD9;
ACanvas.Canvas.FillRect(AViewInfo.Bounds);
frmMain.ImageSmall.Draw(ACanvas.Canvas,AViewInfo.Bounds.Left,ViewInfo.Bounds.Top,1);
ADone:= True;
end;
[/more]
Вот рабочая процедура которую я использую
Переопределяя у конки CustomDrawCell
[more]
procedure TFrmeSprBelaz.browserDBViewMACHINE_IDCustomDrawCell(
Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
begin
ACanvas.Canvas.Brush.Style := bsSolid;
ACanvas.Canvas.Brush.Color := $00F7EAD9;
ACanvas.Canvas.FillRect(AViewInfo.Bounds);
frmMain.ImageSmall.Draw(ACanvas.Canvas,AViewInfo.Bounds.Left,ViewInfo.Bounds.Top,1);
ADone:= True;
end;
[/more]
jicoff
Ура! Получилось
cxDBLookupComboBox1->Properties->Buttons->Add();
Остальное сделаю в виде отдельного компонента
Ура! Получилось
cxDBLookupComboBox1->Properties->Buttons->Add();
Остальное сделаю в виде отдельного компонента
IgorXI
Предлагался, например, такой вариант. Хотя можно найти и другие, похожие.
[more]
Here are som code to hide and add button on difrent editors.
type
TcxPopupEditPropertiesAccess = class(TcxPopupEditProperties);
TcxCustomEditPropertiesAccess = class(TcxCustomEditProperties);
TcxLookupComboBoxPropertiesAccess = class(TcxLookupComboBoxProperties);
procedure TForm1.AddButton(Control: TObject; OnButtonClick:
TcxEditButtonClickEvent; TypeId: integer = 1);
var
PopupEditProp: TcxPopupEditPropertiesAccess;
LookupComboBoxProp: TcxLookupComboBoxPropertiesAccess;
Prop: TcxCustomEditPropertiesAccess;
Btn: TcxEditButton;
begin
if Control is TcxGridDBColumn then
Prop := TcxCustomEditPropertiesAccess(TcxGridDBColumn(Control).Properties);
if Control is TcxPopupEdit then
Prop := TcxCustomEditPropertiesAccess(TcxPopupEdit(Control).Properties);
if Control is TcxDBLookupComboBox then
Prop := TcxCustomEditPropertiesAccess(TcxDBLookupComboBox(Control).Properties);
Btn := Prop.Buttons.Add as TcxEditButton;
case TypeId of
1: Btn.Kind := bkEllipsis;
2:
begin
Btn.Kind := bkGlyph;
// Btn.Glyph.Assign(Bitmap);
end;
end;
Prop.OnButtonClick := OnButtonClick;
end;
function TForm1.GetButton(Control: TObject; Index: integer): TcxEditButton;
var
Prop: TcxCustomEditPropertiesAccess;
Btn: TcxEditButton;
begin
if Control is TcxGridDBColumn then
Prop :=TcxCustomEditPropertiesAccess(TcxGridDBColumn(Control).Properties);
if Control is TcxPopupEdit then
Prop := TcxCustomEditPropertiesAccess(TcxPopupEdit(Control).Properties);
if Control is TcxDBLookupComboBox then
Prop := TcxCustomEditPropertiesAccess(TcxDBLookupComboBox(Control).Properties);
if Prop.Buttons.Count > Index then
result := Prop.Buttons[Index]
else
result := nil;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
AddButton(cxPopupEdit1, cxButtonEdit1PropertiesButtonClick);
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
GetButton(cxPopupEdit1, 0).Visible := false;
end;
procedure TForm1.cxButtonEdit1PropertiesButtonClick(Sender: TObject;
AButtonIndex: Integer);
begin
ShowMessage(inttostr(AButtonIndex));
end;
[/more]
Предлагался, например, такой вариант. Хотя можно найти и другие, похожие.
[more]
Here are som code to hide and add button on difrent editors.
type
TcxPopupEditPropertiesAccess = class(TcxPopupEditProperties);
TcxCustomEditPropertiesAccess = class(TcxCustomEditProperties);
TcxLookupComboBoxPropertiesAccess = class(TcxLookupComboBoxProperties);
procedure TForm1.AddButton(Control: TObject; OnButtonClick:
TcxEditButtonClickEvent; TypeId: integer = 1);
var
PopupEditProp: TcxPopupEditPropertiesAccess;
LookupComboBoxProp: TcxLookupComboBoxPropertiesAccess;
Prop: TcxCustomEditPropertiesAccess;
Btn: TcxEditButton;
begin
if Control is TcxGridDBColumn then
Prop := TcxCustomEditPropertiesAccess(TcxGridDBColumn(Control).Properties);
if Control is TcxPopupEdit then
Prop := TcxCustomEditPropertiesAccess(TcxPopupEdit(Control).Properties);
if Control is TcxDBLookupComboBox then
Prop := TcxCustomEditPropertiesAccess(TcxDBLookupComboBox(Control).Properties);
Btn := Prop.Buttons.Add as TcxEditButton;
case TypeId of
1: Btn.Kind := bkEllipsis;
2:
begin
Btn.Kind := bkGlyph;
// Btn.Glyph.Assign(Bitmap);
end;
end;
Prop.OnButtonClick := OnButtonClick;
end;
function TForm1.GetButton(Control: TObject; Index: integer): TcxEditButton;
var
Prop: TcxCustomEditPropertiesAccess;
Btn: TcxEditButton;
begin
if Control is TcxGridDBColumn then
Prop :=TcxCustomEditPropertiesAccess(TcxGridDBColumn(Control).Properties);
if Control is TcxPopupEdit then
Prop := TcxCustomEditPropertiesAccess(TcxPopupEdit(Control).Properties);
if Control is TcxDBLookupComboBox then
Prop := TcxCustomEditPropertiesAccess(TcxDBLookupComboBox(Control).Properties);
if Prop.Buttons.Count > Index then
result := Prop.Buttons[Index]
else
result := nil;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
AddButton(cxPopupEdit1, cxButtonEdit1PropertiesButtonClick);
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
GetButton(cxPopupEdit1, 0).Visible := false;
end;
procedure TForm1.cxButtonEdit1PropertiesButtonClick(Sender: TObject;
AButtonIndex: Integer);
begin
ShowMessage(inttostr(AButtonIndex));
end;
[/more]
Есть cxDBLookupComboBox. В Properties в свойстве ListFieldNames установленно 2 поля. Как грамотно можно получить доступ к значению 2-го поля, того, которое отображается только когда выпадающий список открыт?
Dennica
Задавать KeyFieldNames = этим двум полям, другого не нашел способа.
Добавлено:
Alex47
А почему бы сразу в процедуре AddButton(Control: TObject; ...) первым параметром не поставить TcxCustomEditProperties вместо TObject ? По-моему получится лучше: у кого есть свойство Properties, тот и может добавить 2-ю кнопку.
Задавать KeyFieldNames = этим двум полям, другого не нашел способа.
Добавлено:
Alex47
А почему бы сразу в процедуре AddButton(Control: TObject; ...) первым параметром не поставить TcxCustomEditProperties вместо TObject ? По-моему получится лучше: у кого есть свойство Properties, тот и может добавить 2-ю кнопку.
Люди проблема!
Вылезло в двух едитах, TcxButtonEditи TcxDateEdit.
На второй и более раз создания и показа формы в Едитах не отображаются данные, хотя значения присвоены и при изменении(после клика по кнопке) и последующем считывании они правильные. Редактировать чего либо в редакторе тоже нельзя, курсор даже не становиться в виде каретки, просто стрелка, и если установлено свойство Autosize в true, то едитор сворачивается в горизонтальную полоску.
Что за фигня и как с ней бороться?(Использую Builder C++ 6.0 со всеми патчами, девки Express Editiros v 5.17).
Вылезло в двух едитах, TcxButtonEditи TcxDateEdit.
На второй и более раз создания и показа формы в Едитах не отображаются данные, хотя значения присвоены и при изменении(после клика по кнопке) и последующем считывании они правильные. Редактировать чего либо в редакторе тоже нельзя, курсор даже не становиться в виде каретки, просто стрелка, и если установлено свойство Autosize в true, то едитор сворачивается в горизонтальную полоску.
Что за фигня и как с ней бороться?(Использую Builder C++ 6.0 со всеми патчами, девки Express Editiros v 5.17).
Откуда можно взять DevExpress Инвойс?
Вопросик по TcxTreeList.
Создаю TcxTreeListNode и внем дочернюю TcxTreeListNode. Если дочерних несколько, то ->FocusedNode->Delete(); удаляет выделенную строчку, а если дочерняя одна, то вылетает ошибка доступа. Как удалить одну НОДУ?
СПАСИБО!
Создаю TcxTreeListNode и внем дочернюю TcxTreeListNode. Если дочерних несколько, то ->FocusedNode->Delete(); удаляет выделенную строчку, а если дочерняя одна, то вылетает ошибка доступа. Как удалить одну НОДУ?
СПАСИБО!
clear2121
А просто вызвать деструктор ноде не работает?
А просто вызвать деструктор ноде не работает?
jicoff
Не пробовал. Но зачем тады методы? Кроме Delete() есть еще и ->DeleteSelection(). Что то не получается удалить.
Не пробовал. Но зачем тады методы? Кроме Delete() есть еще и ->DeleteSelection(). Что то не получается удалить.
Есть такая проблемка:
Есть компонент XtraEditors.LookUpEdit DataSource кототорого настроен на таблицу DataSet'а а EditValue забиндено на поле из другой таблицы этого-же DataSet'а.
Так вот при измнении значения в выпадающеи списке невозможно его заставить нормально сохранить EditValue в DataSet.DataTable. Может кто сталкивался с подобным поведением? Как решить это?
Заранее благодарен.
Есть компонент XtraEditors.LookUpEdit DataSource кототорого настроен на таблицу DataSet'а а EditValue забиндено на поле из другой таблицы этого-же DataSet'а.
Так вот при измнении значения в выпадающеи списке невозможно его заставить нормально сохранить EditValue в DataSet.DataTable. Может кто сталкивался с подобным поведением? Как решить это?
Заранее благодарен.
clear2121
Delete - удаляет сам узел и его дочерные узлы, DeleteSelection - удаляет все выделенные вместе с дочерные узлами. Возможно срабатывает какое-нибудь событие, где нет проверки на отсутствие дочерних узлов.
Delete - удаляет сам узел и его дочерные узлы, DeleteSelection - удаляет все выделенные вместе с дочерные узлами. Возможно срабатывает какое-нибудь событие, где нет проверки на отсутствие дочерних узлов.
jicoff
вообщем после всяких проверок и кучи попыток выяснилось, что если создать нод, а внем несколько дочерних нодов, то все можно удалить, кроме последнего. Вылетает ошибка доступа в памяти. Вот такая хрень. Через задницу сделал. Но нужно нормально. Работаю методом DeleteSelection().
Спасибо за участие!
вообщем после всяких проверок и кучи попыток выяснилось, что если создать нод, а внем несколько дочерних нодов, то все можно удалить, кроме последнего. Вылетает ошибка доступа в памяти. Вот такая хрень. Через задницу сделал. Но нужно нормально. Работаю методом DeleteSelection().
Спасибо за участие!
Цитата:
Люди проблема!
Вылезло в двух едитах, TcxButtonEditи TcxDateEdit.
На второй и более раз создания и показа формы в Едитах не отображаются данные, хотя значения присвоены и при изменении(после клика по кнопке) и последующем считывании они правильные. Редактировать чего либо в редакторе тоже нельзя, курсор даже не становиться в виде каретки, просто стрелка, и если установлено свойство Autosize в true, то едитор сворачивается в горизонтальную полоску.
Что за фигня и как с ней бороться?(Использую Builder C++ 6.0 со всеми патчами, девки Express Editiros v 5.17).
Неужели никто с таким не сталкивался?
Люди добрые, подскажите - использую QuantumGrid, пытаюсь загрузить в таблицу порядка 400000 записей - валится с ошибкой Out of Memory. Что не так? Где поправить?
ivyanushkevich
Ничего себе а зачем так много то, наверно нужно подправить все таки количесто того чт ты грузиш.
Просто представляю себе человека просматривающего 400000 тисяч записей . Это если на экране умещается 30 записей примерно нужно 13333 тисяч раз пролистать экранов ничего себе получается.
Ничего себе а зачем так много то, наверно нужно подправить все таки количесто того чт ты грузиш.
Просто представляю себе человека просматривающего 400000 тисяч записей . Это если на экране умещается 30 записей примерно нужно 13333 тисяч раз пролистать экранов ничего себе получается.
Ну насколько я знаю, в IBExpert'у используется именно этот грид, и он нормально грузит эту таблицу целиком. Жрет конечно памяти много, но грузит. Значит как-то можно?
Конечно я столько не буду грузить, но просто сам факт того, что валится с нехваткой памяти ставит вопрос о том, а сколько же записей она потянет? Для меня это критично....
Конечно я столько не буду грузить, но просто сам факт того, что валится с нехваткой памяти ставит вопрос о том, а сколько же записей она потянет? Для меня это критично....
ivyanushkevich
А сче ты взял что он сразу все грузит он грузит порциями кстати у него чуть выше есть лабел куда он пишет количество зафетчены записей.
Правда если опуститца до конца.
А сче ты взял что он сразу все грузит он грузит порциями кстати у него чуть выше есть лабел куда он пишет количество зафетчены записей.
Правда если опуститца до конца.
ivyanushkevich
Смотря в каком режиме. Если не нужны основные фичи как то фильтрация и сортировка, то пользуй GirdMode. Но даже в этом случае разумное количество загружаемых данных - наипервейшее требование, логика приложения должна учитывать физические способности человека, а они явно не потянут обработку 400К записей. У твоих юзеров Out of Memory случится гораздо раньше чем у железки
Смотря в каком режиме. Если не нужны основные фичи как то фильтрация и сортировка, то пользуй GirdMode. Но даже в этом случае разумное количество загружаемых данных - наипервейшее требование, логика приложения должна учитывать физические способности человека, а они явно не потянут обработку 400К записей. У твоих юзеров Out of Memory случится гораздо раньше чем у железки
Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
Предыдущая тема: Kylix
Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.