Формирование "креста" в Таблице Значений на форме (7.7)

Опубликовал Altair777 в раздел Программирование - Практика программирования

Пример подсвечивания активной строки и колонки в таблице значений. С возможностью имитации пиктограмм.

Версия 3С от 28.08.2009 (продолжается подготовка к четвертой версии (см 75 коммент).

Иногда в больших таблицах с большим количеством строк и мелких колонок неудобно определиться в какой же все-таки строке и/или колонке находится активная ячейка.

Для работы необходим FormEx

Последняя версия здесь 97 релиз

Огромное спасибо АЛьФу за создание этой замечательной ВК и за море советов, данных им мне в процессе программирования.

Отдельное спасибо Шёпоту теней за саму идею создать эту разработку.

Большое спасибо Ёпрсту  и Che Burashka Сергею за советы и подсказки.

 

История версий:

1 от 13.08.2009. Самая первая. Отрабатывалось только событие ПриОтжатииЛевойКнопки мыши.

2 от 14.08.2009. Новые фичи, новые глюки :-)

3 от 18.08.2009. Возможность имитации пиктограмм с помощью работы со шрифтами.

3A от 19.08.2009. Устранение глюков и существенное ускорение скорости работі. Добавлена возможность интерактивного выбора цвета для раскрашивания таблицы с предварительнім просмотром на вспомогательной ТЗ.

3B от 25.08.2009. Возможность интерактивного просмотра символа для пиктограмм и случайное заполнение при формировании ТЗ. С использование внешнего объекта MSScriptControl.ScriptControl (по идее, есть во всех Windows, начиная с 2000)

3C от 28.08.09.  Убран лишний код. И даже тот, без которого, казалось, не должно работать Smile

Файлы

Наименование Файл Версия Размер Кол. Скачив.
-
.1250150198 219,50Kb
25.09.09
239
.1250150198 219,50Kb 239 Скачать

См. также

Лучшие комментарии

32. CheBurator 13.08.2009 19:41
кстати, куда высылать исправленный рабочий вариант обработки?
забрать его можно отсюда: http://slil.ru/27899500
. и на 20 тыс строк - притормаживание является уже существенным
Ответили: (38) (37)
# Ответить
42. CheBurator 13.08.2009 20:46
последний подправленный вариант: http://slil.ru/27899647
+ 3 [ RinGo; w-divin; Pari; ]
# Ответить
6. Ёпрст 13.08.2009 12:21
Нажимаем стрелочки.. наблюдаем:
http://s39.radikal.ru/i083/0908/57/eb60e614d6c0.jpg

Не комильфо.
Ответили: (9)
+ 1 [ СССР; ]
# Ответить
13. Ёпрст 13.08.2009 12:46
(12) В лёгкую:

Перем РасшФ;

Процедура ПослеОткрытия()
.........
РасшФ=СоздатьОбъект("РасширениеФормы");
РасшФ.УстановитьФорму(Форма);
......
КонецПроцедуры

Процедура ПриНажатииЛевойКнопки(Сост,Х,У,ФСО)
РасшФ.УстановитьТекущуюЯчейку("ТЗ", Х, У);
Отрисовка();
КонецПроцедуры
Процедура ПриДвиженииМыши(Сост,Х,У,ФСО)
Если Сост=1 Тогда
РасшФ.УстановитьТекущуюЯчейку("ТЗ", Х, У);
Отрисовка();
КонецЕсли;
КонецПроцедуры

+ //Форма.Обновить() в Функция Отрисовка()
Ответили: (15)
+ 1 [ Altair777; ]
# Ответить
14. Ёпрст 13.08.2009 12:48
+ Нужно добавить аналогично в ПриНажатииПраавойКнопки +
в ПриДвиженииМыши добавить условие на Сост +
ПриНажатииКнопкиКлавиатуры "пасти" стрелочки..
Ответили: (15)
+ 1 [ Altair777; ]
# Ответить

Комментарии

1. DAVID 13.08.2009 12:08
А цвет креста можно как-то менять ?
Ответили: (4) (2)
# Ответить
2. Altair777 13.08.2009 12:11
(1) Ага :-)

Процедура Приоткрытии()
ЦветТекущий="(BRUSH["+глПолучитьЦвет(255,255,153)+"])";

Подходящие значения можно найти, например, здесь http://www.artlebedev.ru/tools/colors/
# Ответить
3. Altair777 13.08.2009 12:15
Перезалил.
Вставил в обработку функцию из Глобального модуля глПолучитьЦвет.
# Ответить
4. Ёпрст 13.08.2009 12:17
Сервис<<?>>.ВключитьРаскраскуТаблиц(1);
{\KRESTTZ.ERT(94)}: Переменная не определена (Сервис)
Ответили: (5)
# Ответить
5. Altair777 13.08.2009 12:20
(4) Сенкс за замечание. Она в Глобальнике прописана.
Ладно. Пропишу все :-)
Ответили: (10)
# Ответить
6. Ёпрст 13.08.2009 12:21
Нажимаем стрелочки.. наблюдаем:
http://s39.radikal.ru/i083/0908/57/eb60e614d6c0.jpg

Не комильфо.
Ответили: (9)
+ 1 [ СССР; ]
# Ответить
7. Шёпот теней 13.08.2009 12:22
... рАзумному - разУмное - сила ...
... НЕразумному - разУмное - глупОсть ...
... рАзумному - НЕразумное - игрА ...
... Неразумному - НЕразумное - безСмысленно ...

... однАко СИЛА ...

... вОт ...
# Ответить
8. Ёпрст 13.08.2009 12:22
И лучше красить в ПриНажатииЛевойКнопки, чем в ПриОтжатииЛевойКнопки
Ответили: (9)
# Ответить
9. Altair777 13.08.2009 12:29
(6),(8) Не комильфо как раз ПриНажатииЛевойКнопки()
Ответили: (11) (10)
# Ответить
10. Altair777 13.08.2009 12:33
+(5) Обновил :-)

+(9)
С запаздыванием на 1 клик я боролся. И спрашивал советов. Но... не получил.
Поэтому пришлось делать именно ПриОтжатииЛевойКнопки()
# Ответить
11. Ёпрст 13.08.2009 12:33
(9) Это еще почему ?
Приятнее сразу видеть результат, а не потом...
Ответили: (12)
# Ответить
12. Altair777 13.08.2009 12:40
(11) А ты сам попробуй :-)
Запаздывание на один клик.
И дай совет как побороть ;-)

P.S. Это моя первая более-менее серьезная разработка с применением FormEx'а.
До этого я только строки подсвечивал в журналах и списках справочников.
P.P.S. С радостью научусь чему-то новому. :-)
Ответили: (13)
# Ответить
13. Ёпрст 13.08.2009 12:46
(12) В лёгкую:

Перем РасшФ;

Процедура ПослеОткрытия()
.........
РасшФ=СоздатьОбъект("РасширениеФормы");
РасшФ.УстановитьФорму(Форма);
......
КонецПроцедуры

Процедура ПриНажатииЛевойКнопки(Сост,Х,У,ФСО)
РасшФ.УстановитьТекущуюЯчейку("ТЗ", Х, У);
Отрисовка();
КонецПроцедуры
Процедура ПриДвиженииМыши(Сост,Х,У,ФСО)
Если Сост=1 Тогда
РасшФ.УстановитьТекущуюЯчейку("ТЗ", Х, У);
Отрисовка();
КонецЕсли;
КонецПроцедуры

+ //Форма.Обновить() в Функция Отрисовка()
Ответили: (15)
+ 1 [ Altair777; ]
# Ответить
14. Ёпрст 13.08.2009 12:48
+ Нужно добавить аналогично в ПриНажатииПраавойКнопки +
в ПриДвиженииМыши добавить условие на Сост +
ПриНажатииКнопкиКлавиатуры "пасти" стрелочки..
Ответили: (15)
+ 1 [ Altair777; ]
# Ответить
15. Altair777 13.08.2009 13:05
(13),(14) Спасибо!
Перезалил. Но при ПриНажатииКнопкиКлавиатуры опаздывает.
А как там УстановитьТекущуюЯчейку?

Процедура ПриНажатииКнопкиКлавиатуры(КодКлавиши,Alt,Shift,Ctrl,Символ,ФСО)
Если (КодКлавиши>32) и (КодКлавиши<41) Тогда
Отрисовка();
КонецЕсли;
КонецПроцедуры
Ответили: (24) (20)
# Ответить
16. CheBurator 13.08.2009 17:51
Ребята, вы что - тормоза? ;-)
ЦветТекущий="(BRUSH["+глПолучитьЦвет(255,255,153)+"])";
- пишите проще: ЦветТекущий="(BRUSH["0xFFFFCC"])";
Ответили: (19)
# Ответить
17. CheBurator 13.08.2009 17:58
бяка.. тупое решение в лоб. Зачем перерисовывать крест для строк-колонок не отображаемых в данный момент на экране...?
Ответили: (19) (18)
# Ответить
18. Ёпрст 13.08.2009 18:05
(17) Это вам не табличное поле..
При скролинге/разворачивании, как ловить предлагаешь видимые строки/столбцы ?...

Вот в форме списка справочника,например, можно запросто отследить только видимые на экране элементы...
Ответили: (21)
# Ответить
19. Altair777 13.08.2009 18:05
(16) проще для кого? :-)

(17) между прочим, некоторые удтверждали, что это вообще почти невозможно :-) Или будет связано с большими затратами.
И не крест перерисовывается, а перезаполняется значение колонки в ТЗ.
А что будет при свертке и максимазации окна?
И как отследить видимые строки/колонки?
Ответили: (21)
# Ответить
20. Altair777 13.08.2009 18:13
+(15) Можно попытаться вычислить реальную активную ячейку.
Но... для PageUp и PageDown это затруднительно(?).
# Ответить
21. CheBurator 13.08.2009 18:43
(19) хорошо... нафига мне перезаполнять всю таблицу по координатам креста, если в данный момент я вижу около 0.1% этой таблицы?
(18) ТП или не ТП - это мну не волнует.. ;-) я показал автору на явную несуразность.. как он ее устранит и устранит ли вообще - меня вообщем-то не волнует... но на всякий случай я запомню.. ;-)
Ответили: (29) (24)
# Ответить
22. CheBurator 13.08.2009 18:46
автору - двойка! при листании курсором - подкраска запаздывает на 1 позицию!
Ответили: (24)
# Ответить
23. CheBurator 13.08.2009 18:50
а это что за бред? ;-)
ТЗ.Фиксировать(0,1);...????
автор не знает про ТЗ.ВидимостьКолонки("НомерСтроки",1);...?????
Ответили: (25)
# Ответить
24. Altair777 13.08.2009 18:53
(21) Еще не знаю как получить видимые строки.
А смысл? Сколько строк должно быть В ТЗ, что бы стало заметно торможение?
На 1'000'000 не тормозит.

(22) это описано в (15). Жду советов ;-)
Ответили: (29) (27) (26)
# Ответить
25. Altair777 13.08.2009 18:56
(23) Почему это бред?
При чем тут фиксация и видимость? Найди отличие ;-)

ТЗ.ВидимостьКолонки("1",0);
ТЗ.Фиксировать(0,1);

P.S. Я и не утверждаю, что все знаю :-)
# Ответить
26. CheBurator 13.08.2009 19:14
(24) то что это описано в 15 - мну это не волнует.. крест должен выделять активную ячейку. по факту: крест не выделяет активную ячейку - итого: обработка неработоспособна. Что у нас полагается за выкладывание неработоспособных обработок...? ;-)
.
ТЗ.ВидимостьКолонки("1",0); - прячешь колонку подкраски
ТЗ.Фиксировать(0,1); - фиксируешь колонку с номерами строк, а выше - ее определяешь и заполняешь... - нафига?
.
> P.S. Я и не утверждаю, что все знаю :-)
- а я это констатирую! ;-)
Ответили: (31)
# Ответить
27. CheBurator 13.08.2009 19:15
(24) > Сколько строк должно быть В ТЗ, что бы стал...
- вот такие и пишут уппырища всякие... ;-) обрисуйте тогда строго область применимости ;-)
Ответили: (31)
# Ответить
28. CheBurator 13.08.2009 19:21
ПриНажатииКнопкиКлавиатуры() у тебя обеспечивает отрисовку. Отрисовка у тебя осуществляется ПО СТАРЫМ КООРДИНАТАМ!! всего-то надо учесть клавиша какого движения нажата - к началу или концу ТЗ.
..
попутный вопрос: почему бы отрисовку не бросить на форму как функцию? тогда отрисовка будет выполняться по новым координатам...
Ответили: (31) (30)
# Ответить
29. DAVID 13.08.2009 19:24
(24) "(21) Еще не знаю как получить видимые строки."

старым дедовским способом.
Посмотри сколько отображается на самом большом разрешение экрана
в ширину видно 86 по горизонтали 122 (просто к примеру)
и не нужно все 10000 прорисовывать
(тупо рисуй 150 на 150 и то быстрее будет)

Формекс позволяет определять разрешение экрана (хотя здесь оно не к чему)
Ответили: (31) (30)
# Ответить
30. CheBurator 13.08.2009 19:28
(29) +1!
(28) проблема только в одном - в отлове изменения текущей ячйки - но это задача известная и решаемая...
# Ответить
31. Altair777 13.08.2009 19:38
(26) > фиксируешь колонку с номерами строк, а выше - ее определяешь и заполняешь... - нафига?

Для красоты :-) И не только. Нафик нужен крест, если непонятно к какому значению строки он относится?

(27) >обрисуйте тогда строго область применимости ;-)

Да где угодно :-) см (0)
"в больших таблицах с большим количеством строк и мелких колонок"

(28) > почему бы отрисовку не бросить на форму как функцию?

Смешно... Если строка не поменялась, то функция не срабатывает. :-)
Это даже я знаю!

(29) А вот за это спасибо!
"Я не волшебник. Я только учусь"
# Ответить
32. CheBurator 13.08.2009 19:41
кстати, куда высылать исправленный рабочий вариант обработки?
забрать его можно отсюда: http://slil.ru/27899500
. и на 20 тыс строк - притормаживание является уже существенным
Ответили: (38) (37)
# Ответить
33. CheBurator 13.08.2009 19:42
> Нафик нужен крест,
// блин, чтобы отобразить номера строк достаточно
ТЗ.ВидимостьКолонки("НомерСтроки",1) - и все!
а то отсортируют твою ТЗ - я посмотрю на красивые номера строк
Ответили: (37)
# Ответить
34. CheBurator 13.08.2009 19:43
> Смешно... Если строка не поменялась, то функция не срабатывает. :-)
Это даже я знаю!
- ну не знаю... у меня вроде все отрабатывает... смотри выложенную обработку...
# Ответить
35. Altair777 13.08.2009 19:46
про 1кк строк я поторопился....
# Ответить
36. CheBurator 13.08.2009 19:52
спакуха.. ща работаю над мгновенным заполнением 1кк строк...
# Ответить
37. Altair777 13.08.2009 19:54
(33) А если там не номер? А реальные значения? Это только пример....
ТЗ.НоваяСтрока();
ТЗ.Строка="Строка "+ИндСтрок;

(32) сенкс!!! Уже проверил, кажется работает.
Но сейчас нет времени разбираться. Код посмотрю позже.
Научусь чему-то новому :-)
# Ответить
38. DAVID 13.08.2009 19:56
(32) ЧЕловек спасибо что выложил це штуку.
А надо только Отрисовку() отключать при формирование НОВОЙ ТЗ
а то такая шняга получается- тормоза и визуально не очень красиво.
Лучше наверное будет создать ТЗВр - виртуальную а потом махом выгрузить в ТЗ а не заполнять ее сразу на форме с отрисовкой
# Ответить
39. CheBurator 13.08.2009 20:01
При формировании новойТЗ - это частность... для ускорения - на время формирования ТЗ - ее видимость д.б.=0 - ускоряет заполнение ТЗ на форме на порядки...
# Ответить
40. CheBurator 13.08.2009 20:24
про всякие неряшливости программирования (что настояшему мастеру дзен недопустимо) - как-то срабатывание позиционирование креста при тыкании мышкой в области/атрибты за пределами ТЗ - я молчу...
.
в итоге, конечно, ндо бы минус влепить...
# Ответить
41. CheBurator 13.08.2009 20:24
а если автору провести опыт по использованию вместо цикла ТЗ.УстановитьЗначение быстрый метод ТЗ.Заполнить...
# Ответить
42. CheBurator 13.08.2009 20:46
последний подправленный вариант: http://slil.ru/27899647
+ 3 [ RinGo; w-divin; Pari; ]
# Ответить
43. CheBurator 13.08.2009 20:49
уфф... замаялся...
# Ответить
44. Ish_2 13.08.2009 21:15
Отвечаю автору-семерочнику из темы "Активный крест в табличном документе".

Сравнение выделения "крестом" в 8-ке и в 7-ке было бы корректно , если бы в текущей теме использовался объект "Таблица" , аналог табличного документа в 8-ке.
По утверждению vip'a :
Компонента "TableDoc расширяет возможности таблицы в 7.7 (в 8.х аналог видимо табличный документ?) до немысленных высот."

Вот и хотелось посмотреть.. Не удалось.
Формексом никогда не пользовался.
С приветом, 8-ник.
Ответили: (46)
# Ответить
45. Ish_2 13.08.2009 21:20
Тем более там речь шла о форме выделенной фигуры как функции от координат активной ячейки.
# Ответить
46. JohnyDeath 13.08.2009 22:05
(44) Опередил немного. Я тоже не понял автора, почему он выбрал для "креста" ТЗ на форме.
Как правтльно говоришь, есть TableDoc и есть Yoksel. Первый проект - как бы надстройка над мокселем 1С, второй - новый табличный документ. В обоих есть событие "ПриАктивизацииЯчейки/АктивизацияЯчейки". Имея эти события, нарисовать что-либо в соседних (и не только) ячейках, думаю, не составит труда.
Ответили: (47)
# Ответить
47. Ish_2 13.08.2009 22:13
(46)
"Имея эти события, нарисовать что-либо в соседних (и не только) ячейках, думаю, не составит труда."

Казалось бы, бесспорно.
Но в 8-ке это не так и реализация выделения произвольной области больше походит на некий программный "выверт"(ухищрение) , чем на обычный приём. Поэтому нигде , насколько мне известно, такое выделение ранее не применялось.
# Ответить
48. Altair777 14.08.2009 09:55
to CheBurator
Большое спасибо!

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

И я выложил эту разработку не для того что бы себя показать, а что бы на других посмотреть. Научиться чему-то новому, полезному.
Не только для себя, но и для других.
Ответили: (49)
# Ответить
49. CheBurator 14.08.2009 10:37
(48) то есть, так сказать, на живца... я с тобой - в Африку не поеду! ;-)
Ответили: (51) (50)
# Ответить
50. Altair777 14.08.2009 10:56
(49) Ну что ты? :-) Я тебе очень благодарен!
Вот скажи по совести... Интересная вещь получилась? Пригодится в хозяйстве?

И, кстати, я обновил версию...
# Ответить
51. CheBurator 14.08.2009 11:03
(49) не пригодится... потому что огромные ТЗ для визуального наблюдения нужны ОЧЕНЬ редко.
.
при обновлении - описание сохранил? ;-)
Ответили: (53)
# Ответить
52. Ёпрст 14.08.2009 11:06
Не добавлено условие везде, что активный элемент - ТЗ и именно нужная..
Не добавлено условие в ПриДвиженииМыши, что зажата правая клавиша..
Ну и не работают стрелочки как надо..
Дорабатывай..
:)
Ответили: (56) (53)
# Ответить
53. Altair777 14.08.2009 11:10
(51) А почему огромные? А 300 на 50 это как... маленькая? :-)
(52) Вот теперь я смогу и сам :-) Опыта прибавилось.
# Ответить
54. Altair777 14.08.2009 11:25
(54) упс... хотел скриншот обновить, а что-то глючит.
Ответили: (54)
# Ответить
55. Altair777 14.08.2009 11:45
Нашел новый глюк :-)
После нажатия Tab прорисовка вообще ни разу больше не срабатывает.
Ответили: (57)
# Ответить
56. Altair777 14.08.2009 12:04
Обновил

(52) Про несколько ТЗ на форме я уже думал...
Но на практике. Если их несколько, значит они небольшие. И им "крест" особо не нужен. Но все равно сделаю. Чуть позже.
# Ответить
57. CheBurator 14.08.2009 18:53
(55) опять решить за вас эту задачу?
Ответили: (59) (58)
# Ответить
58. Арчибальд 14.08.2009 18:57
(57)Взялся за гуж - полезай в кузов.
# Ответить
59. Altair777 14.08.2009 18:59
(57) Я сам :-)
Обработка уже сильно обновилась, но пока не выкладывал.
Есть интересный вариант поиграться со шрифтами. Для определенных целей ;-)
Ответили: (80) (62)
# Ответить
60. Rusk51 14.08.2009 19:29
Всё пучком. Плюс обоим. А я на море :)
Ответили: (61)
# Ответить
61. Altair777 14.08.2009 19:46
(60) Спасибо!

"Ты где? А я на море" :-) (с) реклама МТС-Украина
# Ответить
62. CheBurator 15.08.2009 02:06
(59) мдя.. дорвался человек до Формекса... - ты в нем лучше на другие возможности посмотри - свежий взгляд он всегода неожиданные идеи выдает...
Ответили: (68)
# Ответить
63. DAVID 15.08.2009 18:38
а меня и не вспомнил (((
Ответили: (68)
# Ответить
64. Ish_2 15.08.2009 21:25
Вопрос : правильно ли я понял , что в текущей обработке "крест" просто закрашивается другим цветом ?
И тогда , если две ячейки имеют до выделения разный цвет , то после выделения будут иметь одинаковый (желтый).
Если это так , то
осмелюсь заметить , что выделение ячеек - это не закрашивание другим цветом. Это именно - выделение.
Т.е. если до выделения две ячейки имели разный цвет , то после выделения
они различаются по интенсивности выделения (яркости).
Ответили: (68) (66) (65)
+ 1 [ СССР; ]
# Ответить
65. DAVID 16.08.2009 22:28
(64) Он же написал - что УЧИТСЯ ! Эта обработка НЕ ИМЕЕТ ПРАКТИЧЕСКОГО применения.
Ответили: (71)
# Ответить
66. CheBurator 17.08.2009 03:50
(64) > Т.е. если до выделения две ячейки имели разный цвет , то после выделения они различаются по интенсивности выделения (яркости).
- это не столь существенно, гораздо важнее чтобы при уходе креста с ячеек - они были зарисованы так, как до попадания креста на эти ячейки...
Ответили: (69) (67)
# Ответить
67. Ish_2 17.08.2009 03:54
(66)

1.Существенно или нет .. Так всё-таки выделяется или закрашивается ?

2. "важнее чтобы при уходе креста с ячеек - они были зарисованы так, как до попадания креста на эти ячейки..."
Если это условие не выполняется , тогда о чем разговор .. ?
# Ответить
68. Altair777 17.08.2009 11:00
(62) Я еще не дорвался... я только начинаю ;-)
(63) Спасибо! :-)
(64) Меняется фон ячейки таблицы. Т.е. это выделение чисто визуальное.
# Ответить
69. CheBurator 17.08.2009 11:04
автор, а в (66) - - это не столь существенно, гораздо важнее чтобы при уходе креста с ячеек - они были зарисованы так, как до попадания креста на эти ячейки...
- ????
Ответили: (70)
# Ответить
70. Altair777 17.08.2009 11:27
(69) Да. Цвет фона у них такой же.
Это и по коду понятно.
ЦветНеТекущий="BRUSH["+глПолучитьЦвет(255,255,255)+"]";
Ответили: (72)
# Ответить
71. Altair777 17.08.2009 15:37
(65) А какое практическое применение может быть у АЛГОРИТМА? :-)
Вот когда это кто-то вставит в свою обработку, тогда и появится применение.
# Ответить
72. CheBurator 18.08.2009 12:07
(70) неееет! в раскраске таблицы ты не анализируешь какими цветами были нарисованы ячейки на том месте где прошелся крест и после ухода креста - восстанавливаются общие значенияЮ а не те которые были до этого...
или я не прав...
Ответили: (74) (73)
# Ответить
73. Altair777 18.08.2009 12:29
(72) после первого прохода все закрашены этим цветом.
По крайней мере, первые Мин(ТЗ.КоличествоСтрок(),301) :-)
# Ответить
74. Altair777 18.08.2009 12:53
(72) Или есть предложение сделать ТЗ многоцветной? :-)
Но у ячейки не может быть более одного цвета фона? Или я не прав... ;-)

И если по какому-то условию у этой ячейки должен быть определенный цвет, то какая разница, какой он был до этого?
# Ответить
75. CheBurator 18.08.2009 14:40
вот смотри, допустим есть большая ТЗ на форме, основной фон как обычно - белый. И есть допустим область ячеек, которая закрашена в зеленый цвет - ну типа какая-то зона. по ТЗ бегает желтый крест, после того как он пробежится и уйдет из зеленой зоны - какой фон будет у ячеек "зеленой зоны"...?
Ответили: (76)
# Ответить
76. Altair777 18.08.2009 15:08
(75) Если эта зона была закрашена в зеленый цвет, то, наверно, по какому-то условию.... по результатам выполнения некой функции.
И тогда при отрисовке "креста", результат этой функции должен повлиять и на их раскраску. Но... это выходит за рамки данной обработки.
Хотя, все возможно. :-)

Версия номер 3 выложена! ОГРОМНОЕ спасибо АЛьФу!
Ответили: (79) (77)
# Ответить
77. CheBurator 18.08.2009 16:03
(76) произвольная закраска могла быть сделана в момент формирования таблицы, так что конечно желательно запоминать и восстанавливать - это было бы ваще... ;-)
.
а что нового в 3 версии?
Ответили: (83) (80)
# Ответить
78. CheBurator 18.08.2009 16:04
Лучше бы такой крест в мокселе отрисовывался... ;-)
Ответили: (82)
# Ответить
79. Ёпрст 18.08.2009 16:10
(76) в ПриНажатииЛевойКнопки явный вызов Отрисовка() - лишнее...
Ответили: (82) (81)
# Ответить
80. Altair777 18.08.2009 16:12
(77) сделаю в 4-ой версии :-)
Уже придумал как.

Нового? Пиктограммки (работа со шрифтом, как я и намекал в (59) :-)
Ответили: (83)
# Ответить
81. CheBurator 18.08.2009 16:16
(79) в исправленой РАБОЧЕЙ версии, которую я ему отослал - там это я заремил...
Ответили: (94) (93) (84)
# Ответить
82. Altair777 18.08.2009 16:16
(78) Че... ты хочешь что б я и туда дорвался? (см 62) :-)
Но мысль такая была....

(79) Возможно, и так. Код менялся настолько быстро, что пока не отпимизирован. Спасибо.
# Ответить
83. CheBurator 18.08.2009 16:18
(80) по (77) - ну если сможешь - то ок.. потому как вообщем-то надо 1. определить закрашенную область и восстановить - а вот куда при восстановлении писать нужную раскраску.... ;-)
.
кстати, раз уж формекс - а вы тестировали обработку на ТЗ, с расположением строки в несколько "строк"...? а, батенька?
Ответили: (85)
# Ответить
84. Altair777 18.08.2009 16:20
(81) Там не отрабатывался Tab, F3 и Enter(?). Поэтому.. не совсем она была и рабочая... :-)
Но! Сильно продвинула меня в дальнейшем.
Ответили: (86)
# Ответить
85. Altair777 18.08.2009 16:24
(83) а зачем ее писать куда-то? Ее можно перевычислить по функции, по кторой она изначально была закрашена.

Неа, не тестировал.... Да я и с такими-то строками не работал :-(
# Ответить
86. CheBurator 18.08.2009 16:25
(84) ну, товагищи! жевать уж сами как нибудь... тем более, что она хотя бы заявленную функцию выполняла - крест двигала... и крест по таблице не елозила когда мышью за пределами ТЗ тыкаешь.. так что работайте!
.http://www.cm.ex.by/uploads/posts/1176195919_work_niggers.jpg
Ответили: (87)
# Ответить
87. Altair777 18.08.2009 16:28
(86) Спасибо за пожелание! :-)
Я и работаю... дорабатываю...
# Ответить
88. CheBurator 18.08.2009 16:28
> Ее можно перевычислить по функции
- угумс.. как же... придется тянуть пару тысяч строк допустим для обеспечения такого функционала - негламурно!!! ты вот "вычисли" ближайший браш по вертикали/горизонтали и считай оттуда отрисовку...
Ответили: (90)
# Ответить
89. Ёпрст 18.08.2009 16:30
Вообще, решение с постоянным обновлением формы не совсем удачное- грузит проц не по-детски..
Ответили: (90)
# Ответить
90. Altair777 18.08.2009 16:39
(88) А если условия сложные? Область не одна?
Типа, закрасить ячейки, у которых сумма строки и столбца делится ммм...... на 7 :-)

(89) в самой первой версии функция Отрисовка срабатывала меньше, чем за 0,004 сек. Где-то в хистори аьки есть замер производительности.
Ответили: (92) (91)
# Ответить
91. Ёпрст 18.08.2009 16:49
(90) открой диспетчер задач и поводи мышой туда сюда... удивись.
Ответили: (93)
# Ответить
92. CheBurator 18.08.2009 16:52
(90) да пофиг какой сложности условие!! я имею разукрашенную ТЗ - и не знаю по каким условиям. зато знаю координаты строки-столбца (набора) где будет крест - вот и считаю оттуда раскраску...
# Ответить
93. Altair777 18.08.2009 17:12
(91) Да, удивился...
(81) После нажатия не клавиш перемещений курсора, отрисовка блокируется... совсем...
Ответили: (94)
# Ответить
94. CheBurator 18.08.2009 17:20
(93) по (81) Все, снайпер прицелился! Пригибайся!
Ответили: (95) (4)
# Ответить
95. Altair777 18.08.2009 17:21
(94) Этоя уже исправил :)
И обновил ert
# Ответить
96. Altair777 19.08.2009 14:11
Новая версия!
Кажется, мне удалось побороть несколько старых глюков и существенно ускорить быстродействие.
# Ответить
97. Altair777 25.08.2009 13:30
Еще одна новая версия - 3B :-)
Обновлено описание программы, добавлена историй версий.
# Ответить
98. Ёпрст 28.08.2009 12:18
А нафик там цвет выделения ?
И еще левая кнопка.. ?
Ответили: (99)
# Ответить
99. Altair777 28.08.2009 17:30
(98) > А нафик там цвет выделения ?
Это подготовка к 4 версии :-)

Ой, кнопка и правда "левая". Это я проверял разные варианты генерации случайных чисел.

перезалил....
# Ответить
100. CheBurator 28.08.2009 23:50
просьба к автору в описании обработки в самой обработке все-таки указать, что первую более-менее _рабочую_ версию "создал" Che... ;-) а до этого была тьма и хаос и только дух носился над водами...
Ответили: (103)
# Ответить
101. CheBurator 28.08.2009 23:55
Ну так я тебе, вроде, еще в первом рабочем варианте заремил часть лишних операторов...
Ответили: (103)
# Ответить
102. CheBurator 29.08.2009 00:21
единственно нужная там функция - отрисовка(), а движение куросра ячейки за мышью НАЖАТОЙ - это всегда так было без всяких ухищрений
Ответили: (103)
# Ответить
103. Altair777 31.08.2009 10:43
(100) Сергей, я много благодарностей тебе уже высказал, и в описании, и в комментах. Скромней надо быть :-)
И не тьма и хаос, и не дух бесплотный носился, а ИДЕЯ. И первая моя версия была рабочей. Но с ограничением. Она срабатывала только при отжатии кнопки мыши.
Но... в четвертой версии напишу ;-)
Может, не этими словами, и не только про тебя. А еще про Альфа и Ёпрста.

(101) А я заремил ВСЕ ненужные процедуры :-) В том числе, и отработку нажатий клавиш.

(102) Там не только мыша нажатая, но и клик, и колесико, и клава.
# Ответить
104. pupkinSana 17.06.2011 14:26
глянь мою, переделал. Проще код и при нажатии клавы синхронно бегает, не догоняя курсор. http://infostart.ru/public/86260/
# Ответить
105. Altair777 15.11.2011 14:58
FormEx временно переехал на домен http://www.dorex.pro/
# Ответить
Внимание! За постинг в данном форуме $m не начисляются.
Внимание! Для написания сообщения необходимо авторизоваться
Текст сообщения*
Прикрепить файл






IE 2016