Вверх ↑
Этот топик читают: Гость
Ответов: 2200
Рейтинг: 673
#256: 2015-07-08 00:12:57 ЛС | профиль | цитата
nesco писал(а):
заметил баг
Так в MST_UseEditCtrl функция WndProcTabGrid тоже обрабатывает события, наверно не поделят.
------------ Дoбавленo в 00.11:
nesco писал(а):
Тут похоже на мое упущение.
Там с этими индексами иконок все очень запутано. Надо все хорошенько перепроверить. Как минимум то что прописывается нулевой индекс при смене другого значения, уже признак не правильной работы.
------------ Дoбавленo в 00.12:
nesco писал(а):
Тут надо бы не упустить все взаимодействия строк Clist с таблицей.
Смотрел внимательно, криминального ничего не обнаружил. Но проверить и хорошенько протестировать нужно.
карма: 11

0
Разработчик
Ответов: 26066
Рейтинг: 2120
#257: 2015-07-08 00:14:09 ЛС | профиль | цитата
sla8a писал(а):
наверно не поделят

Это не есть хорошо.
карма: 22

0
Ответов: 2200
Рейтинг: 673
#258: 2015-07-08 00:22:52 ЛС | профиль | цитата
Если MST_UseEditCtrl перенести на задний план, то ошибка не будет. Но и изменить ширину столбцов тоже не получится.
карма: 11

0
Ответов: 824
Рейтинг: 138
#259: 2015-07-08 12:28:06 ЛС | профиль | цитата
А вот мне не хватает такого функционала - MST_EnsureVisible

Он как-бы есть в компоненте MST_FindText.
Но тут сначала нужно найти строку с определенным текстом и только потом сделать найденную строку видимой.
А если мне ничего не нужно искать, или не известно, что искать...
карма: 1

0
Ответов: 2200
Рейтинг: 673
#260: 2015-07-08 12:45:21 ЛС | профиль | цитата
sashaoli, поставьте свой велосипед в сарай и катайтесь на уже имеющемся:
code_35980.txt
карма: 11

0
файлы: 1code_35980.txt [1.8KB] [875]
Ответов: 824
Рейтинг: 138
#261: 2015-07-08 14:23:29 ЛС | профиль | цитата
sla8a писал(а):
катайтесь на уже имеющемся:
Чего-то этот "лисапет" я раньше в гараже не видел...
sla8a, спасибо. Мой идет на разборку...
карма: 1

0
Ответов: 824
Рейтинг: 138
#262: 2015-07-12 18:27:14 ЛС | профиль | цитата
nesco, Очень прошу Вас - Сделайте что-то с раскраской строк...
Вот намедни, я питался раскрасить табличку (ColorsRow) и у меня ничего не получалось. 2,5 суток мучился пока вспомнил, что к строке в таблице обязательно нужно приатачить этот [тут матюк] нолик....
Пусть таблица сама доставляет его, или как...
Еще есть такая штука как "Индекс цвета текста" - неужели нельзя просто цвет указывать?
В тоже время, цвет заливки строки указывается нормально...


карма: 1

0
Разработчик
Ответов: 26066
Рейтинг: 2120
#263: 2015-07-12 19:12:48 ЛС | профиль | цитата
sashaoli писал(а):
Еще есть такая штука как "Индекс цвета текста" - неужели нельзя просто цвет указывать?

Нет, нельзя. Цвет хранится в ресурсах таблицы, это всего 16 бит. 12 бит занимает цвет ячейки, остальные четыре -- это индекс стандартных цветов.
sashaoli писал(а):
Пусть таблица сама доставляет его, или как...

Вообще-то, считается, что цвет ты должен проинициализировать в строке при ее добавлении. Что-то сейчас менять, это перелопачивать весь алгоритм, всей таблицы. Сейчас у меня на это совсем нет времени.
карма: 22

0
Ответов: 94
Рейтинг: 2
#264: 2016-05-25 11:40:11 ЛС | профиль | цитата
Уже задавали вопрос ровно 4 года назад - http://forum.hiasm.com/forum.html?q=3&p=230578
Radio писал(а):
Подскажите возможно ли в StringTableMT сделать вывод первого вертикального заполненного столбца без возможности редактирования а остальные ячейки должны быть редактируемыми

Делаю БД учета заказов. Есть необходимость в формировании заказов с перечнем номенклатуры. Отдельно реализована БД номенклатуры.
По двойному клику в таблице "Номенклатура", подгружаются данные в таблицу заказа, по следующим столбцам: №, Артикул, Наименование, Количество, Ед.изм., Цена, Сумма. Так вот, необходимо, что-бы была возможность редактировать только "Количество".
Сейчас реализовал это перезаписью строки через вызов дочерней формы, но было-бы гораздо удобнее, если бы при создании таблицы,можно было указать в параметрах 1/0, что означало бы возможность редактирования.
P.S. Примеры смотрел, в том числе этот:
nesco писал(а):
%HiAsm%\Elements\Delphi\Example\Forms\MTStrTbl\With_EditCtrl.sha

Сильно громоздко, ради подобного функционала, получается: либо один лишний элемент дочерней формы, либо целая дополнительная схема.
[flood]а мог бы быть всего один лишний параметр [/flood]
карма: 0

0
Разработчик
Ответов: 26066
Рейтинг: 2120
#265: 2016-05-25 11:53:22 ЛС | профиль | цитата
lipKAI писал(а):
если бы при создании таблицы,можно было указать в параметрах 1/0, что означало бы возможность редактирования.

Это не так просто, как кажется. Тут требуется перелопатить весь модуль ListEdit, что бы сначала понять как он работает, а потом как сделать то, что требуется.
карма: 22

0
Ответов: 94
Рейтинг: 2
#266: 2016-05-25 12:28:13 ЛС | профиль | цитата
nesco писал(а):
Это не так просто, как кажется.

Я не буду с этим спорить - это очевидно.
Я к тому, что такая функция, в некоторых случаях, необходима.
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#267: 2016-05-25 17:42:09 ЛС | профиль | цитата
lipKAI писал(а):
Так вот, необходимо, что-бы была возможность редактировать только "Количество".
Когда-то аналогичную задачу решал на StringTable.
Решил очень просто - при выделении строки, на месте ячейки "Количество" появлялась Edit, вводились данные и, по нажатию Enter, производился расчет, перезапись строки в БД и перечитывание StringTable Заказов.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 94
Рейтинг: 2
#268: 2016-05-26 12:10:31 ЛС | профиль | цитата
Tad писал(а):
Решил очень просто - при выделении строки, на месте ячейки "Количество" появлялась Edit, вводились данные и, по нажатию Enter, производился расчет, перезапись строки в БД и перечитывание StringTable Заказов.

Решил похожим методом из примера nesco и схожему с вышеописанным принципом.
Вдруг кому-то пригодится.
Add(MainForm,15443588,378,133)
{
link(onCreate,1976442:doEnum,[])
}
Add(MTStrTbl,15391708,476,84)
{
Top=40
Width=385
Height=220
Name="tabs"
Columns=#1:№|4:Name|5:Price|
Point(ItemAtPos)
Point(onDblClick)
}
Add(StrList,4383086,413,77)
{
Strings=#13:1;Name1;10.00|13:2;Name2;50.00|13:3;Name3;12.00|13:4;Name4;17.00|
}
Add(ArrayEnum,1976442,427,147)
{
link(onItem,3918269:doMTString,[])
link(Array,4383086:Array,[])
}
Add(MT_String,3918269,476,133)
{
link(onResult,3476225:doRowAction,[])
}
Add(MST_RowAction,3476225,518,133)
{
MSTControl="tabs"
}
Add(Edit,6793014,532,217)
{
Left=10
Top=10
Width=135
Visible=1
WinStyle=1
Text=""
DataType=4
Point(doLeft)
Point(doTop)
Point(doWidth)
Point(doHeight)
Point(doVisible)
Point(doSetFocus)
Point(doBringToFront)
Point(doPosition)
Point(onKillFocus)
link(onChange,11974708:doData,[(576,223)(576,200)(264,200)(264,230)])
link(onEnter,8315683:doWork1,[(575,230)])
link(Str,7799279:Cell,[(538,205)(437,205)(437,273)(349,273)])
link(onKillFocus,8315683:doWork2,[])
}
Add(MST_UseEditCtrl,7799279,322,224)
{
MSTControl="tabs"
Point(doClientRect)
PColor(onCellSize,8421440)
PColor(onEscCell,32768)
link(onCellSize,14541477:doCompare,[])
}
Add(DoData,11974708,273,224)
{
link(onEventData,7799279:doSetData,[])
link(Data,6793014:Text,[(279,206)(409,206)(409,304)(538,304)])
}
Add(MT_MultiData,2622840,448,231)
{
Count=4
link(onData1,6793014:doLeft,[])
link(onData2,6793014:doTop,[])
link(onData3,6793014:doWidth,[])
link(onData4,12356216:doEvent1,[])
}
Add(Hub,12356216,497,252)
{
OutCount=5
link(onEvent1,6793014:doHeight,[])
link(onEvent2,6010293:doWork2,[])
link(onEvent3,6793014:doSetFocus,[])
link(onEvent4,6793014:doBringToFront,[])
link(onEvent5,6793014:doPosition,[])
}
Add(Hub,4296656,413,224)
{
link(onEvent1,6793014:doText2,[])
link(onEvent2,2622840:doSeparateMT,[])
}
Add(HubEx,8315683,571,231)
{
Angle=1
link(onEvent,12057740:doClear,[(575,265)])
}
Add(If_else,14541477,371,224)
{
Op2=Integer(2)
link(onTrue,4296656:doEvent1,[])
link(Op1,7799279:SubItem,[(377,212)(359,212)(359,263)(335,263)])
}
Add(Memory,12057740,588,252)
{
Default=Integer(0)
link(onData,6010293:doWork1,[(626,258)(626,295)(522,295)])
}
Add(HubEx,6010293,518,259)
{
link(onEvent,6793014:doVisible,[])
}

Кстати, схему можно сразу копировать в свою и она сразу будет работать. Нужно только изменить название таблицы в компоненте MST_UseEditCtrl и в If поставить свой номер столбца. При необходимости можно добавить If'ы и увеличить кол-во редактируемых столбцов.
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#269: 2016-05-28 16:03:24 ЛС | профиль | цитата
lipKAI писал(а):
Делаю БД учета заказов.

А так (набросок черновой за полчаса)?
zakaz.rar

P.S. Блокировок не делал ( Например: Блокировать кнопку "Включить в заказ" при не выбранном товаре.)
и др.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
файлы: 1zakaz.rar [2.9KB] [455]
Ответов: 165
Рейтинг: 6
#270: 2017-02-09 07:36:20 ЛС | профиль | цитата
nesco, если в пример из справки по компоненту MST_DrawManager добавить компонент StyleXP и включить у таблицы двойную буферизацию, при наведении мыши во всех столбцах текст начнёт сдвигаться влево. Как с этим бороться?

Редактировалось 1 раз(а), последний 2017-02-09 07:37:13
карма: 4

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