Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.10.28;
Скачать: [xml.tar.bz2];

Вниз

dxdbgrid - выделенный столбец   Найти похожие ветки 

 
battar   (2002-09-20 22:45) [0]

как определить какой выделен столбец в данный момент.
На старом добром дбгриде это было так:

mytext:=DBGird1.SelectedField.AsString.

ЗЫЖ Доку на английском не могу читать.


 
battar   (2002-09-24 15:25) [1]

Quantum Grid

че ни как?


 
Black Cat   (2002-09-24 15:34) [2]

dxDBGrid1.FocusedField.AsString


 
battar   (2002-09-25 21:13) [3]

Большое Спасибо...

А теперь проблема - как подсчитать сумму по выделенным документам?

Я понимаю что можно как то извратиться и махом подсчитать, но у меня что-то не получается, а вот как я в гриде считаю:


procedure TfrmCheif.mnCountClick(Sender: TObject);
var
i,all:Integer;
summ:Real;
bm:TBookMark;
begin
WITH (DM.T_DOC) DO
BEGIN
all:=0;
Summ:=0;
DisableControls;
bm:=GetBookMark;
try
for i:=0 to DBGrid1.SelectedRows.Count-1 do
Begin
BookMark := DBGrid1.SelectedRows[i];
Inc(all);
Summ:=Summ+DM.T_DOC.FindField("SUM").AsFloat;
End;
finally
GotoBookMark(bm);
FreeBookMark(bm);
EnableControls;
end;
ShowEvent("Документов выделенных..."+#13+#13+
"Всего - "+IntToStr(all)+#13+
"На сумму - "+Format("%m",[Summ])+#13+#13+
MoneyToString(Summ,true,false),
1);
END;
end;


Интересует анолог выделенной функции...


 
battar   (2002-10-01 20:31) [4]

савсем никак?


 
vuk   (2002-10-01 21:22) [5]

см. SelectedCount, SelectedNodes


 
Awex   (2002-10-02 10:02) [6]

2battar
1. Дело в синхронизация текущей записи в наборе данных и в отображаемой гриде в режиме LoadAllRecord контролируются самой гридой. И нет гарантии что запись в фокусе гриде не сответствует
текущей записи в наборе данных. Для принудительной синхронизации
существует оптиция OptionsDB -> флаг edgoSyncSelection.

2. Для прохода по всем выделенным записям можно использовать следующую конструкцию:

with dxDBGrid1
for i := 0 to SelectedCount - 1 do
begin
if SelectedNodes[i] <> nil then
begin
SelectedNodes[i].Focused := True;
<-Получаем данные из набора данных ->
end;
end


 
vuk   (2002-10-02 10:47) [7]

Во-первых, SelectedNodes будет что-то содержать только в режиме LoadAllRecords, в обычном же режиме используется свойство SelectedRows, содержащее набор закладок для DataSet(bookmark).

Во-вторых, если все-таки используется режим LoadAllRecords, то синхронизировать положение в гриде с позицией в DataSet вовсе не обязательно. Дело в том, что все данные уже гридом подгружены и можно работать с ними не обращаясь к набору данных и не дергая его лишний раз. Достаточно просто выбирать нужные данные из ноды. При этом нужно помнить, что может быть включен режим группировки и нужно пропускать ноды групп.


var
i, n : integer;
Node : TdxTreeListNode;
s : string;
value : integer;
begin
n := GridColumn.Index; //индекс колонки для получения данных
value := 0;
for i := 0 to grid.SelectedCount - 1 do
begin
Node := grid.SelectedNodes[i];
if not Node.HasChildren then //пропускаем группирующие ноды
Value := Value + Node.Values[n]; //возможно придется привести variant к нужному типу данных
end;



 
battar   (2002-10-03 21:11) [8]

спасибо за помощь, теперь разбираюсь в индексах колонки.

В DataSet я обращался как
DM.T_DOC.FindField("SUM").AsFloat
и суммировал по нему, в вашем же ответе ( vuk ©)
используется номер, но если пользователь перенесет столбец,
то суммируется по другому...
:(


 
battar   (2002-10-03 21:29) [9]

о решил как:

for i:=0 to dxgrdDoc.ColumnCount-1 do
if upperCase(dxgrid1.Columns[i].FieldName)="SUMM" then nCol:=i;


но все-таки мож есть стандартное решение...


 
battar   (2002-10-03 21:33) [10]

кстати насчет синхронизации, у меня почему то какой-странный глюк - по Ф2 на ячейки - пока не нажал одно значение показывал, как нажал - другое.
edgoSyncSelection включено...
Это глюк или опция?


 
vuk   (2002-10-03 22:34) [11]

to battar:
>используется номер, но если пользователь перенесет столбец,
>то суммируется по другому...
В моем коде так не будет, я Вас уверяю. Я только что проверил это еще раз и все работает правильно.

Чтобы разобраться что к чему нужно знать как QuantumGrid хранит информацию. Там все данные содержатся в нодах(TdxTreeListNode), причем на каждую строчку (в том числе и заголовки групп) в гриде имеется одна нода. Данные колонок хранятся внутри ноды и доступны через свойство-массив Values. Индексом в этом массиве является индекс колонки. Причем, этот индекс при перемещении колонки будет меняться, поэтому перед вычислениями нужно взять правильный индекс. Что у меня и сделано.

>но все-таки мож есть стандартное решение...
Стандартное решение я уже Вам написал.


 
battar   (2002-10-04 17:38) [12]


> n := GridColumn.Index; //индекс колонки для получения данных

хех... к примеру в таблице у меня это поле SUMM, то как найти его индекс?

или я что-то не умею читать :)


 
vuk   (2002-10-04 18:03) [13]

>хех... к примеру в таблице у меня это поле SUMM, то как найти
>его индекс?
Вы столбец, который это поле отображает знаете? Если нет, то у грида есть метод FindColumnByFieldName.



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2002.10.28;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.009 c
3-92342
RDA
2002-10-05 13:51
2002.10.28
Мастер - Деталь


6-92631
Руль
2002-08-27 01:41
2002.10.28
Снова вопрос по извлечению текста из сайта


1-92477
Magic
2002-10-17 13:19
2002.10.28
Типы потомки от стандартных


4-92823
Tihas
2002-09-11 06:15
2002.10.28
Как можно имянить с помощью WIN API ширену бордюра окного элемент


14-92718
mifi
2002-10-08 19:30
2002.10.28
как получить список всех накопителей





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский