Вверх ↑
Этот топик читают: Гость
Ответов: 3655
Рейтинг: 69
#181: 2007-04-13 18:20:49 ЛС | профиль | цитата
nesco писал(а):
Только вместо этих кнопок скролинг таблицы.

А чем скроллинг круче
nesco писал(а):
А вот теперь подробнее, что может выдавать таблица

Зачем если это всё выдаёт запрос.
nesco писал(а):
+ немного для скролинга

Зачем Ну сделай запрос не на 20 строк, а на 100 скролл сам появится.

Вот если сделать компонент который будет сам формировать запросы по желанию.
Это ещё понятно.
карма: 0

0
Разработчик
Ответов: 26163
Рейтинг: 2127
#182: 2007-04-13 18:22:06 ЛС | профиль | цитата
Вячеслав писал(а):
Зачем если это всё выдаёт запрос

Так запросу данные нужны, а кто ему их будет давать?
карма: 22

0
Ответов: 3655
Рейтинг: 69
#183: 2007-04-13 18:34:26 ЛС | профиль | цитата
nesco писал(а):
Так запросу данные нужны, а кто ему их будет давать?

Ну я так понимаю что данные должны быть записаны в БД ,а таблица просто парсит их.
карма: 0

0
Разработчик
Ответов: 26163
Рейтинг: 2127
#184: 2007-04-13 18:53:31 ЛС | профиль | цитата
Вячеслав, я повторю еще раз -- я предлагал экранный кэш базы, в роли которого выступает таблица. Она не хранит никаких данных, кроме небольшого количества необходимых для отображения строк. И, если данных ей не хватает для отображения, то выдает параметры для оформления запроса к базе. После поиска, база в ответ выдает свои параметры таблице. И что здесь непонятного? Запрос таблицы к базе -- ответ базы таблице. Это все происходит постоянно, в прозрачном режиме. К таблице приклеивается один элемент запросов к базе, который и выполняет все эти функции постоянного обмена.

[size=-2]------ Добавлено в 18:53
Правда есть одно "но". Я не знаю, насколько все это будет быстро работать. Не будет ли моргать экран? Это надо просто попробовать.
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#185: 2007-04-13 19:04:11 ЛС | профиль | цитата
nesco, наконеч то понял, что тебе надо
Для того чтобы менять OFFSET нужно иметь позицию скрола.
А тебе не кажется, что процессор будет загружен на 100% при закольцовке БД с StringTable ?

[size=-2]------ Добавлено в 19:04
по типу PageUp/PageDown проще сделать и опрос только при нажатии
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 3655
Рейтинг: 69
#186: 2007-04-13 19:18:55 ЛС | профиль | цитата
nesco,
А не проще просто отследить позицию скрола,
если конец - выполнить запрос.(программно нажать кнопку)
и ненадо никаких постоянных запросов.
К стати в Гриде есть функции
property VisibleColCount: Integer read GetVisibleColCount;
    property VisibleRowCount: Integer read GetVisibleRowCount;
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#187: 2007-04-13 19:26:04 ЛС | профиль | цитата
select * from <table> limit 40,20
а такой формат запроса попроще (40 - начать вывод с 41-й и вывести 20 строк)
Вперед Limit 40+20,20; Назад Limit 40-20,20.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26163
Рейтинг: 2127
#188: 2007-04-13 20:00:09 ЛС | профиль | цитата
Tad, спасибо за пример реализации запросов. Скажу, что таблица для отрисовки не постоянно шлет данные, а только в момент изменения экрана, или клацанья по таблице мышью. Постоянно запрашивается для отрисовки только, если пункт выбран, но его можно и не посылать для запроса, достаточно иметь внутренний буфер. После клацанья, выбор всегда находится в районе экрана, а значит -- во внутреннем буфере.

[size=-2]------ Добавлено в 20:00
Вячеслав, но не постоянно, может не так выразился, а регулярно, по мере надобности.
карма: 22

0
Ответов: 485
Рейтинг: 86
#189: 2007-04-14 01:13:46 ЛС | профиль | цитата
Кажется перепутаны комментарии к точкам в ini-файле StringTable (hiStringTable_003.zip)
doDelete=Удаляет строку из строкового накопителя с индексом из потока|1|int
*doDeleteStrLst=Удаляет строку таблицы с индексом из потока|1|int
По возможности, хотелось бы увидеть точку onChange.
1) У ListBox вон она есть, а чем StringTable хуже?
2) У StringTable есть onChangeStrLst, а onChange нету...
3) По счетчику Count контролировать изменние количества строк можно, конечно,
и обвески не много...
Для двух методов так:
Add(MainForm,16407501,175,315)
{
Left=20
Top=105
Width=607
Height=211
Position=1
link(onCreate,8218197:doWork3,[(291,356)])
}
Add(StringTable,9968574,315,210)
{
Left=80
Top=25
Width=395
Height=115
IconsCheck=[]
MiscIcons=[]
Icons=[]
Columns=#1:1|1:2|
StringsStrLst=#3:111|3:222|
AutoTblStrLst=0
Point(doInitTxtTab)
Point(doInsert)
Point(doLoadFStream)
Point(doMT_Add)
}
Add(Button,1517288,175,210)
{
Left=15
Top=25
Caption="doAdd"
Data=String(new;new)
link(onClick,9055412:doEvent1,[(222,216)(222,216)])
}
Add(HubEx,8218197,287,287)
{
link(onEvent,13316249:doData,[])
}
Add(Edit,7496807,483,294)
{
Left=485
Top=65
Width=110
Text="onChange"
}
Add(Check,13042707,371,294)
{
Caption="onChange"
link(onEvent,7496807:doText,[])
}
Add(Hub,9055412,231,210)
{
link(onEvent1,9968574:doAdd,[(299,216)(299,216)])
link(onEvent2,8218197:doWork1,[(291,223)])
}
Add(ChangeMon,13316249,315,294)
{
Data=Integer(0)
link(onData,13042707:doWork,[])
link(Data,9968574:Count,[(321,278)(321,278)])
}
Add(Button,6052601,176,259)
{
Left=15
Top=50
Caption="doClear"
link(onClick,7492367:doEvent1,[])
}
Add(Hub,7492367,231,259)
{
link(onEvent1,9968574:doClear,[(303,265)(303,223)])
link(onEvent2,8218197:doWork2,[(276,272)(276,300)])
}
Только самих методов, затрагивающих количество строк, удвоилось, как минимум...
карма: 0

0
Разработчик
Ответов: 26163
Рейтинг: 2127
#190: 2007-04-14 14:39:51 ЛС | профиль | цитата
filyaxxxcom писал(а):
Кажется перепутаны комментарии к точкам в ini-файле

Спасибо, я уже тоже увидел и поправил. Приму к сведению насчет onChange. Почему есть оnChangeStrLst, так потому, что в таблице есть -- встроенный независимый StringList, он применяется как промежуточный хранитель строк, но может использоваться и для других целей.

[size=-2]------ Добавлено в 14:39
Внимание всем!
Я приступил к переводу StringTabl'a на MT-технологию. Для совместимости останутся только штатные точки. Все остальные, имеющие на входе и выходе более чем один параметр, будут переведены на MT. Это коснется и ico-редактора (все его методы будут переведены на MT). Соответственно, будет прилагаться пример работы с новыми методами.
P.S. Кто еще не начал изучать MT, тому -- самое время начать.
карма: 22

0
Ответов: 485
Рейтинг: 86
#191: 2007-04-14 15:24:26 ЛС | профиль | цитата
nesco,
У StringTable событие onClick не происходит, если строка таблицы до клика уже выделена.
У того же ListBox, например, onClick происходит всегда:
code_1294.txt
1) Стоит ли это испарвить?
2) Или сделать настраиваемым (если нужна совместимость со старым StringTable)
карма: 0

0
файлы: 1code_1294.txt [804B] [293]
Ответов: 499
Рейтинг: 1
#192: 2007-04-14 15:37:55 ЛС | профиль | цитата
nesco писал(а):
P.S. Кто еще не начал изучать MT, тому -- самое время начать.

а куда пошлете за инфой? я пока что методом, извиняюсь, тыка ее осваиваю.

[size=-2]------ Добавлено в 15:37
про отсутствие onClick при уже выделенной строке - подтверждаю.
карма: 0

0
Разработчик
Ответов: 26163
Рейтинг: 2127
#193: 2007-04-14 16:42:08 ЛС | профиль | цитата
filyaxxxcom, да есть такое, но хуже другое. Я проверил, событие OnLVStateChange, отвечающее за изменение состояния, не вызывается на уже выбранной строке, а потому, надо править KOL, и нужно ли это? Писать из-за этого свой обработчик не имеет никакого смысла. ИМХО.

[size=-2]------ Добавлено в 16:42
HikeR, попробуй загнать два параметра в MT-поток, а затем его адекватно считать. Сначала попробуй с простыми типами, затем загони картинку и нормально ее считай на выходе. Можешь выложить пример. Посмотрим.
карма: 22

0
Ответов: 499
Рейтинг: 1
#194: 2007-04-15 01:39:48 ЛС | профиль | цитата
nesco, вопросик. MultiSelect как свойство работает, строки выделяет. но откуда снять значение этих строк? одну - понятно, но если их несколько?
карма: 0

0
Разработчик
Ответов: 26163
Рейтинг: 2127
#195: 2007-04-16 22:33:12 ЛС | профиль | цитата
HikeR, через массив SelectArray (выбранная строка=1, не выбранная=0). Есть прямой метод, но его не применяй, он будет заменен.

[size=-2]------ Добавлено в 22:33
Народ! Вопрос есть.
Нужен ли StringTabl'y ComboBox, ну, хотя бы, на выбранный столбец?
Вот на каждый никак не получается. У него получить текущий SubItem -- это целая тоска. Загрузку предполагал сделать из встроенного StringList'a. Так, ненароком прицепил для пробы -- вроде работает и текст выбирает, и откисает вроде без ошибки.
Можно устанавливать колонку извне. Клацнул на столбце -- включил редактирование через ComboBox текущего столбца. Это так, ну ум пришло.
карма: 22

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)