Дополнения пользователей Класс хидера + индексирование таблицы.
|
[+][?] |
Aries
09.09.03 09:14:26 |
|
Да забыл дополнить это работает в VFP8.0 В семерке не проверял. Кстати этот класс можна переделать
и под VFP6 только вот картинки не будет.
Если вдруг кому-то непонятно как работает класс или как им пользоваться пишите, помогу раскажу!
|
|
Agishev Baiguzha
10.09.03 14:24:58 |
|
Хотел опробовать на семерке, но базу открыть не может, и форму тоже...
|
|
Николай
10.09.03 14:53:59 |
|
Как сделать программно одним махом для всех столбцов ?
|
|
Aries
10.09.03 17:03:01 |
|
Вот пытаюсь решить эту проблему :(
|
|
Aries
10.09.03 17:29:18 |
|
Это для того чтобы вставить програмно Хидер
Первый цикл это удаление старого хидера и добавление нового
Второй это вернуть заголовки назад
********************************
SET PROCEDURE TO MyHeader.prg
FOR lnI=1 TO THIS.oGrid.ColumnCount
FOR lnK=1 TO THIS.oGrid.Columns(lnI).ControlCount
IF THIS.oGrid.Columns(lnI).Objects(lnK).BaseClass=="Header"
aCaption(lnI,1)=THIS.oGrid.Columns(lnI).Header1.Caption
THIS.oGrid.Columns(lnI).RemoveObject(THIS.oGrid.Columns(lnI).Objects(lnK).Name)
THIS.oGrid.Columns(lnI).AddObject("MyHeader1","MyHeader")
endIF
endFOR
endFOR
FOR lnI=1 TO THIS.oGrid.ColumnCount
FOR lnK=1 TO THIS.oGrid.Columns(lnI).ControlCount
IF THIS.oGrid.Columns(lnI).Objects(lnK).BaseClass=="Header"
THIS.oGrid.Columns(lnI).Objects(lnK).Caption=aCaption(lnI,1)
endIF
endFOR
endFOR
|
|
Aries
10.09.03 17:32:53 |
|
Сори фигню написал, так правильнее
****************************
FOR lnI=1 TO THIS.oGrid.ColumnCount
FOR lnK=1 TO THIS.oGrid.Columns(lnI).ControlCount
IF THIS.oGrid.Columns(lnI).Objects(lnK).BaseClass=="Header"
lcCaption=THIS.oGrid.Columns(lnI).Header1.Caption
THIS.oGrid.Columns(lnI).RemoveObject(THIS.oGrid.Columns(lnI).Objects(lnK).Name)
THIS.oGrid.Columns(lnI).AddObject("MyHeader1","MyHeader")
THIS.oGrid.Columns(lnI).MyHeader1.Caption=lcCaption
endIF
endFOR
endFOR
|
|
Николай
11.09.03 09:10:18 |
|
Поясни пожалуйста куда вставить этот цикл ?
|
|
Aries
11.09.03 09:12:50 |
|
В инит грида.
|
|
Николай
11.09.03 09:49:16 |
|
на команде
THIS.oGrid.Columns(lnI).AddObject("MyHeader1","MyHeader")
Класс MyHeader не создан ?
Как и где поправить ?
А так вообще не плохо.
|
|
Aries
11.09.03 14:38:07 |
|
Проставь перед циклом такую строку
************************
SET PROCEDURE TO MyHeader.prg
|
|
Николай
11.09.03 14:47:52 |
|
В цикле на строке
lcCaption=THIS.oGrid.Columns(lnI).Header1.Caption
выдает Unknown member Header1.
|
|
Aries
11.09.03 14:56:55 |
|
Посмотри Name своего старого хидера.
lcCaption=THIS.oGrid.Columns(lnI).Header1.Caption
В этой строке ты в lcCaption сохраняешь каптион старого хидера.
THIS.oGrid.Columns(lnI).RemoveObject(THIS.oGrid.Columns(lnI).Objects(lnK).Name)
В этой строке удалее старого хидера.
THIS.oGrid.Columns(lnI).AddObject("MyHeader1","MyHeader")
Здесь добавление нового хидера.
THIS.oGrid.Columns(lnI).MyHeader1.Caption=lcCaption
За ним присвоение ему заголовка.
|
|
Владимир
11.09.03 19:53:08 |
|
Нормально сделано
Но - хотел бы узнать
Я обычно в Хидере Грида по клику прописывал -
Select People
Set order to Fio
И все правильно работало
Зачем собственно этот класс, если наблюдается избыточность кода ?
|
|
Aries
12.09.03 08:49:25 |
|
И что ты так делаешь для каждого столбца в поле??
Меня лично хе*ит так делать.
Во вторых невижу никакой избыточности. Обращение всегда только к этому классу, и никакого дубляжа
кода.
|
|
Aries
12.09.03 08:51:40 |
|
Забыл еще вот что. А что ты делаешь если таблица не имеет составного индекса, вообще неимеет
индексов, тогда как.
Или имеет только по одному полю??
|
|
Игорь Королёв
17.09.03 18:39:26 |
|
Предлагаю посмотреть заодно и такую вещицу как SortGridSample с сайта UniversalThread.com
Сам чуток подкорректировал под свои потребности и юзаю - идея та-же, но он ещё и сам рисует
индикатор сортировки (работает в VFP7 и даже VFP6)
|
|
Aries
18.09.03 09:13:06 |
|
а ссылочку поточнее можна кинуть, посмотрю.
Кстати мой класс хидера изначально был написан под VFP6 только вот не рисовался треугольник
сортировки. Поэтому можна его переделать и под 6-ку.
|
|
Nikolai Kremko
10.10.03 13:45:37 |
|
и даже нужно :) а треугольники можно и символами заменить
а то те , у кого нет VFP8 не могут посмотреть...
|
|
Aries
13.10.03 15:55:08 |
|
Ты прав Николай. В течении двух-трех дней выложу новое решение. Где будет версии для 6-ки и для 8-ки
|
|
Nikolai Kremko
21.10.03 16:04:12 |
|
Посмотрел код...
1) перетащить колонку без того ,чтобы не перестроить индекс по перетаскиваемой колонке
Проверил -- так и есть.
2) индекс строиться в любом слечае...А ведь можно и проверить ...зачем строить индекс , если он
уже есть в таблице?
3) при сетевом режиме работы с временными индексами, построенными на машине у пользователя,далеко
не всегда будем иметь корректную информацию.
4) не знаю ,может это и не так у других, но у меня пользователи привыкли, что при смене сортировки
указатель остается на той же записи ...
****************************************************
у меня есть идеи как порешеть некоторые из этих проблемм... если интересно -- скину то что у меня
получилось...
|
|
Nikolai Kremko
21.10.03 16:12:38 |
|
Посмотрел код...
1) перетащить колонку без того ,чтобы не перестроить индекс по перетаскиваемой колонке
Проверил -- так и есть.
2) индекс строиться в любом слечае...А ведь можно и проверить ...зачем строить индекс , если он
уже есть в таблице?
3) при сетевом режиме работы с временными индексами, построенными на машине у пользователя,далеко
не всегда будем иметь корректную информацию.
4) не знаю ,может это и не так у других, но у меня пользователи привыкли, что при смене сортировки
указатель остается на той же записи ...
****************************************************
у меня есть идеи как порешеть некоторые из этих проблемм... если интересно -- скину то что у меня
получилось...
|
|
Aries
21.10.03 16:19:29 |
|
Кидай буду очень признателен :)
|
|
Nikolai Kremko
21.10.03 16:28:43 |
|
Посмотрел код...
1) перетащить колонку без того ,чтобы не перестроить индекс по перетаскиваемой колонке
Проверил -- так и есть.
2) индекс строиться в любом слечае...А ведь можно и проверить ...зачем строить индекс , если он
уже есть в таблице?
3) при сетевом режиме работы с временными индексами, построенными на машине у пользователя,далеко
не всегда будем иметь корректную информацию.
4) не знаю ,может это и не так у других, но у меня пользователи привыкли, что при смене сортировки
указатель остается на той же записи ...
****************************************************
у меня есть идеи как порешеть некоторые из этих проблемм... если интересно -- скину то что у меня
получилось...
|
|
Nikolai Kremko
21.10.03 17:28:06 |
|
Посмотрел код...
1) перетащить колонку без того ,чтобы не перестроить индекс по перетаскиваемой колонке
Проверил -- так и есть.
2) индекс строиться в любом слечае...А ведь можно и проверить ...зачем строить индекс , если он
уже есть в таблице?
3) при сетевом режиме работы с временными индексами, построенными на машине у пользователя,далеко
не всегда будем иметь корректную информацию.
4) не знаю ,может это и не так у других, но у меня пользователи привыкли, что при смене сортировки
указатель остается на той же записи ...
****************************************************
у меня есть идеи как порешеть некоторые из этих проблемм... если интересно -- скину то что у меня
получилось...
|
|
Nikolai Kremko
21.10.03 17:29:49 |
|
Бред..... такого у меня еще не было.... при боновлении страницы дублируется дополнение... сорри
|
|
Игорь Королёв
17.12.03 17:13:56 |
|
Да ещё - удалять старый хедер при доблении нового не нужно - фокс это сделает автоматом, как
только ты попытаешься добавить в колонку новый объект класса Header.
|
|
Aries
18.12.03 11:53:32 |
|
Не надо только для 8-й версии, а для 6-ки надо
|
|
Deil
24.11.05 15:56:27 |
|
на VFP 9 тоже работает
Хорошая весчь... прикрутил к своей проге.
Все работает если к гриду подцеплен обычный курсор/таблица,
This.Grid1.Column1.ControlSource='fio'
Но вот так уже не работает:
This.Grid1.Column1.ControlSource='Alltr(family)+Alltr(name)'
Если не затруднит подправьте плиз...
|
|
Aries
24.11.05 17:25:28 |
|
Прив Deil
В классе MyHeader есть свойство ControlSource
Это как раз для того сделано, если ControlSource колонки
составное выражение.
Поэтому пропишите в ControlSource хидера поле из таблицы
что бы по нему шла сортировка.
Прим:
This.Grid1.Column1.MyHeader1.ControlSource='tTable.family'
Удачи!
|
|