Вверх ↑
Этот топик читают: Гость
Ответов: 409
Рейтинг: 17
#106: 2009-04-16 20:31:38 ЛС | профиль | цитата
nesco писал(а):
При использовании метода doSelect или doSelEndStr делается автоматически doEnsureVisible к индексу выбранной строки, те, его делать необязательно

Ёлки-палки, а чтоже мне сразу никто не сказал про замечательную точку doSelEndStr - ведь с ней и никаких схем мудрить ненадо - просто подключаешь к ней кнопку и все!

nesco - а скажи пожалуйста, может и точка есть для простой расцевтки строк? А то у меня для этого схема из 6 элементов работает.
И еще... можно ли сделать так, чтобы при нажатии на название столбца таблица сортировалась по нему... как в коммандерах (Total Commander и т.д.)?
И раз уже вопросы по таблице пошли, как сделать заданную ширину столбцов при использовании БД?
карма: 0

0
Разработчик
Ответов: 26151
Рейтинг: 2127
#107: 2009-04-16 21:44:50 ЛС | профиль | цитата
Pirr писал(а):
как сделать заданную ширину столбцов при использовании БД?

Используй алиасы вида:


SELECT
ico,
color,
id AS №_80__2,
name AS Имя_100__2,
tel AS Телефон_100__2,
adr AS Адрес___2,
FROM
tab1

Здесь, знак "_" используется в качестве знака "=" для форматирования столбца

Pirr писал(а):
чтобы при нажатии на название столбца таблица сортировалась по нему... как в коммандерах (Total Commander и т.д.)

Для этого есть три метода -- doSort, doSortDigit, doSortExtCmp. Внимательно почитай описание к этим точкам.

Вот небольшой пример по сортировке строк, как чисел, при клике на столбце


Add(MainForm,2953706,147,168)
{
link(onCreate,4242310:doFor,[])
}
Add(StringTableMT,13070531,420,203)
{
Left=10
Top=10
Width=370
Height=210
Columns=#9:Col_1=100|9:Col_3=100|9:Col_4=100|
ColumnClick=1
IconsCheck=[]
MiscIcons=[]
Icons=[]
Point(doMT_Add)
Point(doSortDigit)
Point(onColumnClick)
link(onColumnClick,13070531:doSortDigit,[(461,216)(461,265)(410,265)(410,251)])
}
Add(For,4242310,203,182)
{
End=50
IncludeEnd=1
link(onEvent,9379274:doEvent1,[])
}
Add(Random,13166642,287,182)
{
link(onRandom,8596066:doRandom,[])
}
Add(Random,8596066,329,182)
{
Max=1000
link(onRandom,1225592:doRandom,[])
}
Add(Random,1225592,371,182)
{
Max=10000
}
Add(MT_AddData,11020186,322,238)
{
Count=3
link(onAdd,13070531:doMT_Add,[])
link(Data1,13166642:Random,[(328,226)(293,226)])
link(Data2,8596066:Random,[])
link(Data3,1225592:Random,[(342,226)(377,226)])
}
Add(Hub,9379274,252,182)
{
link(onEvent1,13166642:doRandom,[])
link(onEvent2,11020186:doAdd,[(275,195)(275,244)])
}


Да, совсем забыл добавить, что при сортировке есть еще одна особенность -- свойство MethodSort

Pirr писал(а):
может и точка есть для простой расцевтки строк?

Не понял -- зачем Цвет в этой таблице передается как элемент строки в форматированном виде.
И зачем там шесть компонентов, я тоже не понял


карма: 22

0
Ответов: 409
Рейтинг: 17
#108: 2009-04-17 20:34:44 ЛС | профиль | цитата
nesco писал(а):
Используй алиасы вида:

id AS №_80__2, - в заголевке столбца и пишет №_80__2 - наверное в MySQL по другому как-то надо. Полистал справочники, там нет ничего про это, или все очень просто и об этом несчитают нужным упоминать или этого нельзя добится SQL формулой

nesco писал(а):
Вот небольшой пример по сортировке строк, как чисел, при клике на столбце

Попробовал сделать на своем примере... но названия столбцов нехотят нажиматься, пришлось скопировать твою StringTableMT только тогда столбцы начали нажиматься (при этом пропала расцветка строк).
Как я понял сортируются только столбцы с цифрами и датой, текстовые не сортируются?

nesco писал(а):
Не понял -- зачем Цвет в этой таблице передается как элемент строки в форматированном виде.
И зачем там шесть компонентов, я тоже не понял

Для удобства навигации:
code_12830.txt

На основе своей тренировочной схемы, сделал реальное приложение для реальной задачи - все вроде получилось, но... возникла куча вопросов и проблем:
1. Как текстовую строку ввода сделать многострочной? И можно ли сделать многострочными строки таблицы в StringTableMT?
2. Можно ли сделать чтобы внутри тексового поля ввода был шаблон ввода для даты "__.__.____" - чтобы пользователь забивал только цыфры даты без точек?
3. У меня в таблице 10 столбцов, часть из них обязательная для заполнения а часть нет. Я сделал чтобы после нажатия клавиши "Добавить" - строка добавлялась, и в случе если успешно выпонен запрос, поля ввода очищались (приделал к элементу dbMySQL_Exec.onResult поток обнуляющий поля) Но при тестировании программы заметил что независимо добавились данные в БД или нет поля очищаются. Прикинул как решить проблему, и первое что пришло на ум, поставить счетчик строк и если он изменился после нажатия "Добавить" - очищать поля ввода, но.... а если базу будут вести 10 пользователей, то база будет все время обновлятся... Как решить эту проблему?
карма: 0

0
файлы: 1code_12830.txt [2.2KB] [235]
Разработчик
Ответов: 26151
Рейтинг: 2127
#109: 2009-04-17 21:41:55 ЛС | профиль | цитата
Pirr писал(а):
Попробовал сделать на своем примере... но названия столбцов нехотят нажиматься

Приколы свойства Flat

Pirr писал(а):
в заголевке столбца и пишет №_80__2

Нужно использовать точку doMT_AddCols, а не обычную doAddColumn

Pirr писал(а):
при этом пропала расцветка строк

Включи свойство ColorItems

Pirr писал(а):
Как я понял сортируются только столбцы с цифрами и датой, текстовые не сортируются?

Мдааа... Уж. А это я для кого писал

nesco писал(а):
Для этого есть три метода -- doSort, doSortDigit, doSortExtCmp. Внимательно почитай описание к этим точкам.

Ключевая фраза -- внимательно почитай описание к этим точкам

Pirr писал(а):
Для удобства навигации:

Вау! А чего сразу нельзя, что ли


Add(MainForm,771177,161,301)
{
Width=655
Height=556
link(onCreate,15659195:doFor,[])
}
Add(StringTableMT,10245140,483,315)
{
Left=145
Top=15
Width=380
Height=390
Columns=#1:1|1:2|1:3|1:4|1:5|
ColorItems=0
IconsCheck=[]
MiscIcons=[]
Icons=[]
Point(onChange)
Point(doMT_ColorsStr)
}
Add(For,15659195,210,315)
{
End=30
IncludeEnd=1
link(onEvent,1201617:doOperation,[])
}
Add(Edit,3522152,364,252)
{
Left=250
Top=450
Width=300
Text="15329769"
}
Add(ColorDialog,15190188,308,252)
{
link(onSelect,3522152:doText,[])
}
Add(Button,4925960,259,252)
{
Left=45
Top=450
Width=195
Caption="Цвет строки"
link(onClick,15190188:doOpen,[])
}
Add(Math,1201617,259,315)
{
OpType=8
Op2=2
link(onResult,5563250:doCase,[])
link(Op1,10245140:Count,[(265,296)(152,296)(152,372)(489,372)])
}
Add(FormatStr,15852350,427,315)
{
Mask="0#%1;aaaaaaaaa;bbbbbbbbb;ccccc;ddddddd;eeeeeeeeeeeeeeeeeee"
link(onFString,10245140:doAdd,[])
}
Add(DoData,14601834,364,315)
{
link(onEventData,9550810:doWork2,[])
link(Data,3522152:Text,[])
}
Add(Case,5563250,308,315)
{
Value=Integer(0)
DataOnTrue=Integer(0)
link(onNextCase,14601834:doData,[])
link(onTrue,9550810:doWork3,[(351,328)(351,355)(410,355)])
}
Add(HubEx,9550810,406,308)
{
link(onEvent,15852350:doString,[])
}

Pirr писал(а):
Как текстовую строку ввода сделать многострочной?

1. В этой версии таблицы никак
2. Не понял, а к таблице это как относится
3. Тоже, не понял.
карма: 22

0
Ответов: 409
Рейтинг: 17
#110: 2009-04-17 22:54:27 ЛС | профиль | цитата
nesco писал(а):
Приколы свойства Flat

Что-то непойму этого прикола: в твоей схеме Flat=true и у меня Flat=true, у тебя нажимаются столбцы, у меня нет. Ставлю у себя Flat=false - начинают и у меня нажиматься.
Сравнил твой StringTableMT и свой - отличий ненашол, далее завожу точку doSortDigit на onColumnClick - эфекта ноль, doSort завожу на onColumnClick - сортируется но только при первом нажатии и както странно те поля которые должны быть первыми выстраиваются в середине а от них вверх и вниз в алфавитном порядке остальные строки.
Перенес свой StringTableMT в твою схему эфект тотже, сортируется, но... только при первом нажатии.

nesco писал(а):
Нужно использовать точку doMT_AddCols, а не обычную doAddColumn

А я вообще эти точки неиспользую у меня данные запроса из элемента dbMySQL_ShowQuery через точку StringTable попадают StringTableMT

nesco писал(а):
Мдааа... Уж. А это я для кого писал

Внимательно прочитал, но на слух... не понял. Попробавл - понял. Вот только как сделать чтобы числовые строки сортировались методом doSortDigit а текстовые doSort в одной таблице?

nesco писал(а):
1. В этой версии таблицы никак
2. Не понял, а к таблице это как относится
3. Тоже, не понял.

Это вопросы уже не конкретно по StringTableMT а по моему новому (или модифицырованному старому) проекту.
карма: 0

0
Разработчик
Ответов: 26151
Рейтинг: 2127
#111: 2009-04-17 23:16:10 ЛС | профиль | цитата
Pirr писал(а):
Что-то непойму этого прикола: в твоей схеме Flat=true и у меня Flat=true, у тебя нажимаются столбцы, у меня нет. Ставлю у себя Flat=false - начинают и у меня нажиматься

Я же говорил -- приколы.

Pirr писал(а):
через точку StringTable попадают StringTableMT

В таком случае не будет, тогда надо программировать свойства самому, читай, есть такие точки управления шириной столбцов.

Pirr писал(а):
Вот только как сделать чтобы числовые строки сортировались методом doSortDigit а текстовые doSort в одной таблице?

Элементарно, Ватсон


Add(MainForm,2953706,133,133)
{
link(onCreate,16510033:doEnum,[])
}
Add(StringTableMT,7107674,259,147)
{
Left=10
Top=15
Width=365
Height=220
Columns=#6:Number|6:String|6:Number|6:String|
ColumnClick=1
Flat=1
IconsCheck=[]
MiscIcons=[]
Icons=[]
Point(onColumnClick)
Point(doSortDigit)
Point(doSort)
link(onColumnClick,5232029:doValue,[])
}
Add(StrList,6530331,189,84)
{
Strings=#14:1;aaaaa;9;bbbb|13:3;cccc;8;dddd|13:4;bbbb;7;aaaa|13:5;dddd;2;cccc|13:8;ffff;1;rrrr|
}
Add(ArrayEnum,16510033,203,147)
{
link(onItem,7107674:doAdd,[])
link(Array,6530331:Array,[])
}
Add(IndexToChanel,10703874,350,154)
{
Count=4
Point(Data)
link(onEvent1,5176490:doWork1,[(410,160)])
link(onEvent2,15549177:doWork1,[(396,167)])
link(onEvent3,5176490:doWork2,[])
link(onEvent4,15549177:doWork2,[])
link(Data,5232029:Value,[(356,142)(335,142)(335,198)(314,198)])
}
Add(HubEx,5176490,406,161)
{
Angle=1
link(onEvent,7107674:doSortDigit,[(410,227)(237,227)(237,188)])
}
Add(HubEx,15549177,392,168)
{
Angle=1
link(onEvent,7107674:doSort,[(396,219)(247,219)(247,195)])
}
Add(Memory,5232029,308,154)
{
link(onData,10703874:doEvent,[])
}

карма: 22

0
Ответов: 409
Рейтинг: 17
#112: 2009-04-19 12:28:35 ЛС | профиль | цитата
nesco писал(а):
Элементарно, Ватсон

Для кого - как

Мой прогресс в освоении HIASM дошел до того, что я обновился из SVN!
Увидел несколько новых элементов и возникли вопросы:
1. Может кто нибудь показать пример с MTStrTbl - демонстрирующий основные приимущества этого элемента при отображении запросов из БД?
2. В разделе "Печать документов" есть элемент "Печать таблицы" - тоже хотелось бы пример с этим элементом.

карма: 0

0
Разработчик
Ответов: 26151
Рейтинг: 2127
#113: 2009-04-19 13:55:40 ЛС | профиль | цитата
Pirr писал(а):
демонстрирующий основные приимущества этого элемента при отображении запросов из БД?

Ты пример смотрел -- ElementsDelphiExampleFormsMTStrTblMTStrTbl_with_db_SQLite.sha


карма: 22

0
Ответов: 16884
Рейтинг: 1239
#114: 2009-04-19 14:10:06 ЛС | профиль | цитата
nesco писал(а):
Ты пример смотрел

nesco, нет конечно.
Ему сразу "ключи от квартиры, где деньги лежат."
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 409
Рейтинг: 17
#115: 2009-04-19 19:20:31 ЛС | профиль | цитата
nesco писал(а):
Ты пример смотрел -- ElementsDelphiExampleFormsMTStrTblMTStrTbl_with_db_SQLite.sha

Сорри... почемуто я думал, что обновлялись только элементы - без примеров
Аж стыдно за свою невнимательность


карма: 0

0
Ответов: 409
Рейтинг: 17
#116: 2009-04-20 20:03:16 ЛС | профиль | цитата
Лучшеб мне не видеть MTStrTbl
Еще не до конца разобравшись с StringTableMT я теперь поглащен ей

Подскажите:
1. Есть ли у MTStrTbl аналог StringTableMT.doMT_ColorsStr? (игрался с цветами элемента MTStrTbl - но добится черезстрочной раскраски несмог)
2. Чем отличается точка Select у MTStrTbl от StringTableMT?
3. Вот упрощенная схема вывода запросов из БД в таблицу. Можно ли передавать запрос из БД в таблицу не через точку StringTableMT.StringTable или даже без элемента dbMySQL_ShowQuery?
code_12906.txt
4. И еще... из за чего возникает ошибка Runtime error 216? (только что схема работала... бац и уже ошибка, а я ведь ничего не менял )
карма: 0

0
файлы: 1code_12906.txt [2KB] [200]
Разработчик
Ответов: 26151
Рейтинг: 2127
#117: 2009-04-20 21:07:34 ЛС | профиль | цитата
Pirr писал(а):
1. Есть ли у MTStrTbl аналог StringTableMT.doMT_ColorsStr?

1. Юзай MST_RowAction -- клиент строк и его метод ColorsRow.
Педупреждение! Цвет является первым элементом дополнительных MT-данных, которые таблица позволяет хранить как кортеж к каждой строке. Цвет больше не передается в формате XX#YY, а передается упакованными данными, вот так


Add(MainForm,2953706,133,196)
{
link(onCreate,8042718:doEvent1,[])
}
Add(MST_RowAction,11651593,357,217)
{
MSTControl="123"
}
Add(MTStrTbl,6461993,357,175)
{
Left=35
Top=25
Width=325
Height=200
Name="123"
Columns=#4:Tab1|4:Tab2|
ColorItems=0
}
Add(MT_AddData,8409417,238,217)
{
Count=3
link(onAdd,11651593:doRowAction,[])
link(Data1,6214789:Value,[(244,195)(195,195)])
link(Data2,15123843:Value,[])
link(Data3,13124130:Result,[(258,191)(349,191)])
}
Add(Memory,6214789,189,147)
{
Default=String(Привет)
}
Add(Memory,15123843,245,147)
{
Default=String(HiAsm)
}
Add(Memory,1560784,259,70)
{
Default=Integer(9)
}
Add(SelectColor,5167494,371,70)
{
Color=-16777194
}
Add(Hub,8042718,189,210)
{
link(onEvent1,7101690:doOperation,[(231,216)(231,139)])
link(onEvent2,8409417:doAdd,[])
}
Add(Math,7101690,294,133)
{
OpType=9
Op2=24
ResultType=0
link(onResult,13124130:doOperation,[])
link(Op1,1560784:Value,[(300,117)(265,117)])
}
Add(Math,13124130,343,133)
{
OpType=5
Op2=24
ResultType=0
link(Op2,5167494:Result,[(356,117)(377,117)])
}
Add(InfoTip,11743932,343,49)
{
Info=#11:Цвет строки|
Width=99
Height=60
}
Add(InfoTip,11656834,217,49)
{
Info=#19:Индекс цвета текста|
Width=120
Height=60
}

2. Надо попытаться подключить к MySQL источник данных DB_OLE или DB_ODBC, но тут надо знать строку подключения, может Nic поможет. Dilma обещался сделать отдельный источник данных DB_MySQL, но пока его нет
карма: 22

0
Ответов: 409
Рейтинг: 17
#118: 2009-04-20 21:56:58 ЛС | профиль | цитата
nesco - а можно как нибудь по простому объяснить: "Что есть многомерный поток и его синтаксис?"
карма: 0

0
Ответов: 4641
Рейтинг: 334
#119: 2009-04-20 22:03:09 ЛС | профиль | цитата
Pirr писал(а):
nesco - а можно как нибудь по простому объяснить: "Что есть многомерный поток и его синтаксис?"

Технология MultiThread
а читать справку не учили?
карма: 1
Время верстки: %cr_time% Текущее время: %time%
0
Разработчик
Ответов: 26151
Рейтинг: 2127
#120: 2009-04-20 22:06:16 ЛС | профиль | цитата
Pirr, тебе еще учится и учится для понимания работы с таблицой пятого поколения, потренировался бы ты сначал на "кошках", то бишь на StringTableMT, в силу ее универсальности
карма: 22

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