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




Принцип обмена данными из 1С с сайтом (на MySQL) и выдачи (публикации) этих данных по запросу.
PHP-Скрипт автоматической загрузки данных из файла данных в формате CSV в базу данных сайта работающего на WordPress.

В продолжение моей темы: 1С:Альфа-Авто Автосалон Автосервис: обмен с сайтом.
С помощью данного скрипта можно загружать в автоматическом режиме, по расписанию, данные сервисных книжек (ремонтов авто) из 1С:Альфа-Авто Автосалон Автосервис.
Также можно загружать данные в ручном режиме: для этого делается скрытая страница, где размещается специальная кнопка.
Комментарии размещенные внутри скрипта разъяснят логику и порядок действия.
Комментарии с "/////    echo" использовались для отладки.
Дополнительно создана таблица для журналирования результатов загрузки данных.
Скрипт включает в себя защиту от SQL инъекций (думаю безопасность соблюдена в полной мере).
В кратце:
1. Пишется скрипт, который запускает этот.
2. Создается регламентное задание в WordPress, по которому запускается скрипт из п.1. 
3. Этот скрипт осуществляет проверку на существование файла обмена в папке.
4. Если данные не новые, загрузка не производится.
5. Если данные новые, очищается таблица сервисных книжек.
6. Загружаются новые данные.

Собственно сам скрипт:

<?php // Полная загрузка сервисных книжек, создан 2024-01-05 12:44:55

global $wpdb2;
global $failure;
global $file_hist;

/////  echo '<H2><b>Старт загрузки</b></H2><br>';

$failure=FALSE;
//подключаемся к базе
$wpdb2 = include_once 'connection.php'; ; // подключаемся к MySQL
// если не удалось подключиться, и нужно оборвать PHP с сообщением об этой ошибке
if (!empty($wpdb2->error))
{
/////   echo '<H2><b>Ошибка подключения к БД, завершение.</b></H2><br>';
$failure=TRUE;
wp_die( $wpdb2->error );
}

$m_size_file=0;
$m_mtime_file=0;
$m_comment='';
/////проверка существования файлов выгрузки из 1С
////файл выгрузки сервисных книжек
$file_hist = ABSPATH.'/_1c_alfa_exchange/AA_hist.csv';
if (!file_exists($file_hist))
{
/////   echo '<H2><b>Файл обмена с сервисными книжками не существует.</b></H2><br>';
$m_comment='Файл обмена с сервисными книжками не существует';
$failure=TRUE;
}

/////инициируем таблицу лога
/////если не существует файла то возврат и ничего не делаем
if ($failure){
///включает защиту от SQL инъекций и данные можно передавать как есть, например: $_GET['foo']
/////   echo '<H2><b>Попытка вставить запись в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>$m_comment));
wp_die();
/////    echo '<H2><b>Возврат в начало.</b></H2><br>';
return $failure;
}
/////проверка лога загрузки, что бы не загружать тоже самое
$masiv_data_file=stat($file_hist);   ////передаем в массив свойство файла
$m_size_file=$masiv_data_file[7];    ////получаем размер файла
$m_mtime_file=$masiv_data_file[9];   ////получаем дату модификации файла
////создаем запрос на получение последней удачной загрузки
////выбираем по штампу времени создания (редактирования) файла загрузки AA_hist.csv, $m_mtime_file

/////   echo '<H2><b>Размер файла: '.$m_size_file.'</b></H2><br>';
/////   echo '<H2><b>Штамп времени файла: '.$m_mtime_file.'</b></H2><br>';
/////   echo '<H2><b>Формирование запроса на выборку из лога</b></H2><br>';
////препарируем запрос
$text_zaprosa=$wpdb2->prepare("SELECT * FROM `vin_logs` WHERE `last_mtime_upload` = %s", $m_mtime_file);
$results=$wpdb2->get_results($text_zaprosa);

if ($results)
{   foreach ( $results as $r)
{
////если штамп времени и размер файла совпадают, возврат
if (($r->last_mtime_upload==$m_mtime_file) && ($r->last_size_upload==$m_size_file))
{////echo '<H2><b>Возврат в начало, т.к. найдена запись в логе.</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>'Загрузка отменена, новых данных нет, т.к. найдена запись в логе.'));
wp_die();
return $failure;
}
}
}
////если данные новые, пишем в лог запись о начале загрузки
/////echo '<H2><b>Попытка вставить запись о начале загрузки в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>0, 'last_size_upload'=>$m_size_file, 'comment'=>'Начало загрузки'));

////очищаем таблицу
$clear_tbl_zap=$wpdb2->prepare("TRUNCATE TABLE %s", 'vin_history');
$clear_tbl_zap_repl=str_replace("'","`",$clear_tbl_zap);
$results=$wpdb2->query($clear_tbl_zap_repl);
/////   echo '<H2><b>Очистка таблицы сервисных книжек</b></H2><br>';
if (empty($results))
{
/////   echo '<H2><b>Ошибка очистки таблицы книжек, завершение.</b></H2><br>';
//// если очистка не удалась, возврат
$failure=TRUE;
wp_die();
return $failure;
}

////загружаем данные
$table='vin_history';         // Имя таблицы для импорта
//$file_hist Имя CSV файла, откуда берется информация     // (путь от корня web-сервера)
$delim=';';          // Разделитель полей в CSV файле
$enclosed='"';      // Кавычки для содержимого полей
$escaped='\

99 Comments

  1. СССР

    А цвет креста можно как-то менять ?

    Reply
  2. Altair777

    (1) Ага 🙂

    Процедура Приоткрытии()

    ЦветТекущий=»(BRUSH[«+глПолучитьЦвет(255,255,153)+»])»;

    Подходящие значения можно найти, например, здесь http://www.artlebedev.ru/tools/colors/

    Reply
  3. Altair777

    Перезалил.

    Вставил в обработку функцию из Глобального модуля глПолучитьЦвет.

    Reply
  4. Ёпрст

    Сервис<<?>>.ВключитьРаскраскуТаблиц(1);

    {KRESTTZ.ERT(94)}: Переменная не определена (Сервис)

    Reply
  5. Altair777

    (4) Сенкс за замечание. Она в Глобальнике прописана.

    Ладно. Пропишу все 🙂

    Reply
  6. Ёпрст

    Нажимаем стрелочки.. наблюдаем:

    http://s39.radikal.ru/i083/0908/57/eb60e614d6c0.jpg

    Не комильфо.

    Reply
  7. Шёпот теней

    … рАзумному — разУмное — сила …

    … НЕразумному — разУмное — глупОсть …

    … рАзумному — НЕразумное — игрА …

    … Неразумному — НЕразумное — безСмысленно …

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

    … вОт …

    Reply
  8. Ёпрст

    И лучше красить в ПриНажатииЛевойКнопки, чем в ПриОтжатииЛевойКнопки

    Reply
  9. Altair777

    (6),(8) Не комильфо как раз ПриНажатииЛевойКнопки()

    Reply
  10. Altair777

    +(5) Обновил 🙂

    +(9)

    С запаздыванием на 1 клик я боролся. И спрашивал советов. Но… не получил.

    Поэтому пришлось делать именно ПриОтжатииЛевойКнопки()

    Reply
  11. Ёпрст

    (9) Это еще почему ?

    Приятнее сразу видеть результат, а не потом…

    Reply
  12. Altair777

    (11) А ты сам попробуй 🙂

    Запаздывание на один клик.

    И дай совет как побороть 😉

    P.S. Это моя первая более-менее серьезная разработка с применением FormEx’а.

    До этого я только строки подсвечивал в журналах и списках справочников.

    P.P.S. С радостью научусь чему-то новому. 🙂

    Reply
  13. Ёпрст

    (12) В лёгкую:

    Перем РасшФ;

    Процедура ПослеОткрытия()

    ………

    РасшФ=СоздатьОбъект(«РасширениеФормы»);

    РасшФ.УстановитьФорму(Форма);

    ……

    КонецПроцедуры

    Процедура ПриНажатииЛевойКнопки(Сост,Х,У,ФСО)

    РасшФ.УстановитьТекущуюЯчейку(«ТЗ», Х, У);

    Отрисовка();

    КонецПроцедуры

    Процедура ПриДвиженииМыши(Сост,Х,У,ФСО)

    Если Сост=1 Тогда

    РасшФ.УстановитьТекущуюЯчейку(«ТЗ», Х, У);

    Отрисовка();

    КонецЕсли;

    КонецПроцедуры

    + //Форма.Обновить() в Функция Отрисовка()

    Reply
  14. Ёпрст

    + Нужно добавить аналогично в ПриНажатииПраавойКнопки +

    в ПриДвиженииМыши добавить условие на Сост +

    ПриНажатииКнопкиКлавиатуры «пасти» стрелочки..

    Reply
  15. Altair777

    (13),(14) Спасибо!

    Перезалил. Но при ПриНажатииКнопкиКлавиатуры опаздывает.

    А как там УстановитьТекущуюЯчейку?

    Процедура ПриНажатииКнопкиКлавиатуры(КодКлавиши,Alt,Shift,Ctrl,Символ,ФСО)

    Если (КодКлавиши>32) и (КодКлавиши<41) Тогда

    Отрисовка();

    КонецЕсли;

    КонецПроцедуры

    Reply
  16. CheBurator

    Ребята, вы что — тормоза? 😉

    ЦветТекущий=»(BRUSH[«+глПолучитьЦвет(255,255,153)+»])»;

    — пишите проще: ЦветТекущий=»(BRUSH[«0xFFFFCC»])»;

    Reply
  17. CheBurator

    бяка.. тупое решение в лоб. Зачем перерисовывать крест для строк-колонок не отображаемых в данный момент на экране…?

    Reply
  18. Altair777

    (16) проще для кого? 🙂

    (17) между прочим, некоторые удтверждали, что это вообще почти невозможно 🙂 Или будет связано с большими затратами.

    И не крест перерисовывается, а перезаполняется значение колонки в ТЗ.

    А что будет при свертке и максимазации окна?

    И как отследить видимые строки/колонки?

    Reply
  19. Ёпрст

    (17) Это вам не табличное поле..

    При скролинге/разворачивании, как ловить предлагаешь видимые строки/столбцы ?…

    Вот в форме списка справочника,например, можно запросто отследить только видимые на экране элементы…

    Reply
  20. Altair777

    +(15) Можно попытаться вычислить реальную активную ячейку.

    Но… для PageUp и PageDown это затруднительно(?).

    Reply
  21. CheBurator

    (19) хорошо… нафига мне перезаполнять всю таблицу по координатам креста, если в данный момент я вижу около 0.1% этой таблицы?

    (18) ТП или не ТП — это мну не волнует.. 😉 я показал автору на явную несуразность.. как он ее устранит и устранит ли вообще — меня вообщем-то не волнует… но на всякий случай я запомню.. 😉

    Reply
  22. CheBurator

    автору — двойка! при листании курсором — подкраска запаздывает на 1 позицию!

    Reply
  23. CheBurator

    а это что за бред? 😉

    ТЗ.Фиксировать(0,1);…????

    автор не знает про ТЗ.ВидимостьКолонки(«НомерСтроки»,1);…?????

    Reply
  24. Altair777

    (21) Еще не знаю как получить видимые строки.

    А смысл? Сколько строк должно быть В ТЗ, что бы стало заметно торможение?

    На 1’000’000 не тормозит.

    (22) это описано в (15). Жду советов 😉

    Reply
  25. Altair777

    (23) Почему это бред?

    При чем тут фиксация и видимость? Найди отличие 😉

    ТЗ.ВидимостьКолонки(«1»,0);

    ТЗ.Фиксировать(0,1);

    P.S. Я и не утверждаю, что все знаю 🙂

    Reply
  26. CheBurator

    (24) то что это описано в 15 — мну это не волнует.. крест должен выделять активную ячейку. по факту: крест не выделяет активную ячейку — итого: обработка неработоспособна. Что у нас полагается за выкладывание неработоспособных обработок…? 😉

    .

    ТЗ.ВидимостьКолонки(«1»,0); — прячешь колонку подкраски

    ТЗ.Фиксировать(0,1); — фиксируешь колонку с номерами строк, а выше — ее определяешь и заполняешь… — нафига?

    .

    > P.S. Я и не утверждаю, что все знаю 🙂

    — а я это констатирую! 😉

    Reply
  27. CheBurator

    (24) > Сколько строк должно быть В ТЗ, что бы стал…

    — вот такие и пишут уппырища всякие… 😉 обрисуйте тогда строго область применимости 😉

    Reply
  28. CheBurator

    ПриНажатииКнопкиКлавиатуры() у тебя обеспечивает отрисовку. Отрисовка у тебя осуществляется ПО СТАРЫМ КООРДИНАТАМ!! всего-то надо учесть клавиша какого движения нажата — к началу или концу ТЗ.

    ..

    попутный вопрос: почему бы отрисовку не бросить на форму как функцию? тогда отрисовка будет выполняться по новым координатам…

    Reply
  29. СССР

    (24) «(21) Еще не знаю как получить видимые строки.»

    старым дедовским способом.

    Посмотри сколько отображается на самом большом разрешение экрана

    в ширину видно 86 по горизонтали 122 (просто к примеру)

    и не нужно все 10000 прорисовывать

    (тупо рисуй 150 на 150 и то быстрее будет)

    Формекс позволяет определять разрешение экрана (хотя здесь оно не к чему)

    Reply
  30. CheBurator

    (29) +1!

    (28) проблема только в одном — в отлове изменения текущей ячйки — но это задача известная и решаемая…

    Reply
  31. Altair777

    (26) > фиксируешь колонку с номерами строк, а выше — ее определяешь и заполняешь… — нафига?

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

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

    Да где угодно 🙂 см (0)

    «в больших таблицах с большим количеством строк и мелких колонок»

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

    Смешно… Если строка не поменялась, то функция не срабатывает. 🙂

    Это даже я знаю!

    (29) А вот за это спасибо!

    «Я не волшебник. Я только учусь»

    Reply
  32. CheBurator

    кстати, куда высылать исправленный рабочий вариант обработки?

    забрать его можно отсюда: http://slil.ru/27899500

    . и на 20 тыс строк — притормаживание является уже существенным

    Reply
  33. CheBurator

    > Нафик нужен крест,

    // блин, чтобы отобразить номера строк достаточно

    ТЗ.ВидимостьКолонки(«НомерСтроки»,1) — и все!

    а то отсортируют твою ТЗ — я посмотрю на красивые номера строк

    Reply
  34. CheBurator

    > Смешно… Если строка не поменялась, то функция не срабатывает. 🙂

    Это даже я знаю!

    — ну не знаю… у меня вроде все отрабатывает… смотри выложенную обработку…

    Reply
  35. Altair777

    про 1кк строк я поторопился….

    Reply
  36. CheBurator

    спакуха.. ща работаю над мгновенным заполнением 1кк строк…

    Reply
  37. Altair777

    (33) А если там не номер? А реальные значения? Это только пример….

    ТЗ.НоваяСтрока();

    ТЗ.Строка=»Строка «+ИндСтрок;

    (32) сенкс!!! Уже проверил, кажется работает.

    Но сейчас нет времени разбираться. Код посмотрю позже.

    Научусь чему-то новому 🙂

    Reply
  38. СССР

    (32) ЧЕловек спасибо что выложил це штуку.

    А надо только Отрисовку() отключать при формирование НОВОЙ ТЗ

    а то такая шняга получается- тормоза и визуально не очень красиво.

    Лучше наверное будет создать ТЗВр — виртуальную а потом махом выгрузить в ТЗ а не заполнять ее сразу на форме с отрисовкой

    Reply
  39. CheBurator

    При формировании новойТЗ — это частность… для ускорения — на время формирования ТЗ — ее видимость д.б.=0 — ускоряет заполнение ТЗ на форме на порядки…

    Reply
  40. CheBurator

    про всякие неряшливости программирования (что настояшему мастеру дзен недопустимо) — как-то срабатывание позиционирование креста при тыкании мышкой в области/атрибты за пределами ТЗ — я молчу…

    .

    в итоге, конечно, ндо бы минус влепить…

    Reply
  41. CheBurator

    а если автору провести опыт по использованию вместо цикла ТЗ.УстановитьЗначение быстрый метод ТЗ.Заполнить…

    Reply
  42. CheBurator

    последний подправленный вариант: http://slil.ru/27899647

    Reply
  43. CheBurator

    уфф… замаялся…

    Reply
  44. Ish_2

    Отвечаю автору-семерочнику из темы «Активный крест в табличном документе».

    Сравнение выделения «крестом» в 8-ке и в 7-ке было бы корректно , если бы в текущей теме использовался объект «Таблица» , аналог табличного документа в 8-ке.

    По утверждению vip’a :

    Компонента «TableDoc расширяет возможности таблицы в 7.7 (в 8.х аналог видимо табличный документ?) до немысленных высот.»

    Вот и хотелось посмотреть.. Не удалось.

    Формексом никогда не пользовался.

    С приветом, 8-ник.

    Reply
  45. Ish_2

    Тем более там речь шла о форме выделенной фигуры как функции от координат активной ячейки.

    Reply
  46. JohnyDeath

    (44) Опередил немного. Я тоже не понял автора, почему он выбрал для «креста» ТЗ на форме.

    Как правтльно говоришь, есть TableDoc и есть Yoksel. Первый проект — как бы надстройка над мокселем 1С, второй — новый табличный документ. В обоих есть событие «ПриАктивизацииЯчейки/АктивизацияЯчейки». Имея эти события, нарисовать что-либо в соседних (и не только) ячейках, думаю, не составит труда.

    Reply
  47. Ish_2

    (46)

    «Имея эти события, нарисовать что-либо в соседних (и не только) ячейках, думаю, не составит труда.»

    Казалось бы, бесспорно.

    Но в 8-ке это не так и реализация выделения произвольной области больше походит на некий программный «выверт»(ухищрение) , чем на обычный приём. Поэтому нигде , насколько мне известно, такое выделение ранее не применялось.

    Reply
  48. Altair777

    to CheBurator

    Большое спасибо!

    Надо понимать, что это не готовая программа, а алгоритм, пример программирования. С большими недостатками, это я понимаю.

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

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

    Не только для себя, но и для других.

    Reply
  49. CheBurator

    (48) то есть, так сказать, на живца… я с тобой — в Африку не поеду! 😉

    Reply
  50. Altair777

    (49) Ну что ты? 🙂 Я тебе очень благодарен!

    Вот скажи по совести… Интересная вещь получилась? Пригодится в хозяйстве?

    И, кстати, я обновил версию…

    Reply
  51. CheBurator

    (49) не пригодится… потому что огромные ТЗ для визуального наблюдения нужны ОЧЕНЬ редко.

    .

    при обновлении — описание сохранил? 😉

    Reply
  52. Ёпрст

    Не добавлено условие везде, что активный элемент — ТЗ и именно нужная..

    Не добавлено условие в ПриДвиженииМыши, что зажата правая клавиша..

    Ну и не работают стрелочки как надо..

    Дорабатывай..

    🙂

    Reply
  53. Altair777

    (51) А почему огромные? А 300 на 50 это как… маленькая? 🙂

    (52) Вот теперь я смогу и сам 🙂 Опыта прибавилось.

    Reply
  54. Altair777

    (54) упс… хотел скриншот обновить, а что-то глючит.

    Reply
  55. Altair777

    Нашел новый глюк 🙂

    После нажатия Tab прорисовка вообще ни разу больше не срабатывает.

    Reply
  56. Altair777

    Обновил

    (52) Про несколько ТЗ на форме я уже думал…

    Но на практике. Если их несколько, значит они небольшие. И им «крест» особо не нужен. Но все равно сделаю. Чуть позже.

    Reply
  57. CheBurator

    (55) опять решить за вас эту задачу?

    Reply
  58. Арчибальд

    (57)Взялся за гуж — полезай в кузов.

    Reply
  59. Altair777

    (57) Я сам 🙂

    Обработка уже сильно обновилась, но пока не выкладывал.

    Есть интересный вариант поиграться со шрифтами. Для определенных целей 😉

    Reply
  60. Rusk51

    Всё пучком. Плюс обоим. А я на море 🙂

    Reply
  61. Altair777

    (60) Спасибо!

    «Ты где? А я на море» 🙂 (с) реклама МТС-Украина

    Reply
  62. CheBurator

    (59) мдя.. дорвался человек до Формекса… — ты в нем лучше на другие возможности посмотри — свежий взгляд он всегода неожиданные идеи выдает…

    Reply
  63. СССР

    а меня и не вспомнил (((

    Reply
  64. Ish_2

    Вопрос : правильно ли я понял , что в текущей обработке «крест» просто закрашивается другим цветом ?

    И тогда , если две ячейки имеют до выделения разный цвет , то после выделения будут иметь одинаковый (желтый).

    Если это так , то

    осмелюсь заметить , что выделение ячеек — это не закрашивание другим цветом. Это именно — выделение.

    Т.е. если до выделения две ячейки имели разный цвет , то после выделения

    они различаются по интенсивности выделения (яркости).

    Reply
  65. СССР

    (64) Он же написал — что УЧИТСЯ ! Эта обработка НЕ ИМЕЕТ ПРАКТИЧЕСКОГО применения.

    Reply
  66. CheBurator

    (64) > Т.е. если до выделения две ячейки имели разный цвет , то после выделения они различаются по интенсивности выделения (яркости).

    — это не столь существенно, гораздо важнее чтобы при уходе креста с ячеек — они были зарисованы так, как до попадания креста на эти ячейки…

    Reply
  67. Ish_2

    (66)

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

    2. «важнее чтобы при уходе креста с ячеек — они были зарисованы так, как до попадания креста на эти ячейки…»

    Если это условие не выполняется , тогда о чем разговор .. ?

    Reply
  68. Altair777

    (62) Я еще не дорвался… я только начинаю 😉

    (63) Спасибо! 🙂

    (64) Меняется фон ячейки таблицы. Т.е. это выделение чисто визуальное.

    Reply
  69. CheBurator

    автор, а в (66) — — это не столь существенно, гораздо важнее чтобы при уходе креста с ячеек — они были зарисованы так, как до попадания креста на эти ячейки…

    — ????

    Reply
  70. Altair777

    (69) Да. Цвет фона у них такой же.

    Это и по коду понятно.

    ЦветНеТекущий=»BRUSH[«+глПолучитьЦвет(255,255,255)+»]»;

    Reply
  71. Altair777

    (65) А какое практическое применение может быть у АЛГОРИТМА? 🙂

    Вот когда это кто-то вставит в свою обработку, тогда и появится применение.

    Reply
  72. CheBurator

    (70) неееет! в раскраске таблицы ты не анализируешь какими цветами были нарисованы ячейки на том месте где прошелся крест и после ухода креста — восстанавливаются общие значенияЮ а не те которые были до этого…

    или я не прав…

    Reply
  73. Altair777

    (72) после первого прохода все закрашены этим цветом.

    По крайней мере, первые Мин(ТЗ.КоличествоСтрок(),301) 🙂

    Reply
  74. Altair777

    (72) Или есть предложение сделать ТЗ многоцветной? 🙂

    Но у ячейки не может быть более одного цвета фона? Или я не прав… 😉

    И если по какому-то условию у этой ячейки должен быть определенный цвет, то какая разница, какой он был до этого?

    Reply
  75. CheBurator

    вот смотри, допустим есть большая ТЗ на форме, основной фон как обычно — белый. И есть допустим область ячеек, которая закрашена в зеленый цвет — ну типа какая-то зона. по ТЗ бегает желтый крест, после того как он пробежится и уйдет из зеленой зоны — какой фон будет у ячеек «зеленой зоны»…?

    Reply
  76. Altair777

    (75) Если эта зона была закрашена в зеленый цвет, то, наверно, по какому-то условию…. по результатам выполнения некой функции.

    И тогда при отрисовке «креста», результат этой функции должен повлиять и на их раскраску. Но… это выходит за рамки данной обработки.

    Хотя, все возможно. 🙂

    Версия номер 3 выложена! ОГРОМНОЕ спасибо АЛьФу!

    Reply
  77. CheBurator

    (76) произвольная закраска могла быть сделана в момент формирования таблицы, так что конечно желательно запоминать и восстанавливать — это было бы ваще… 😉

    .

    а что нового в 3 версии?

    Reply
  78. CheBurator

    Лучше бы такой крест в мокселе отрисовывался… 😉

    Reply
  79. Ёпрст

    (76) в ПриНажатииЛевойКнопки явный вызов Отрисовка() — лишнее…

    Reply
  80. Altair777

    (77) сделаю в 4-ой версии 🙂

    Уже придумал как.

    Нового? Пиктограммки (работа со шрифтом, как я и намекал в (59) 🙂

    Reply
  81. CheBurator

    (79) в исправленой РАБОЧЕЙ версии, которую я ему отослал — там это я заремил…

    Reply
  82. Altair777

    (78) Че… ты хочешь что б я и туда дорвался? (см 62) 🙂

    Но мысль такая была….

    (79) Возможно, и так. Код менялся настолько быстро, что пока не отпимизирован. Спасибо.

    Reply
  83. CheBurator

    (80) по (77) — ну если сможешь — то ок.. потому как вообщем-то надо 1. определить закрашенную область и восстановить — а вот куда при восстановлении писать нужную раскраску…. 😉

    .

    кстати, раз уж формекс — а вы тестировали обработку на ТЗ, с расположением строки в несколько «строк»…? а, батенька?

    Reply
  84. Altair777

    (81) Там не отрабатывался Tab, F3 и Enter(?). Поэтому.. не совсем она была и рабочая… 🙂

    Но! Сильно продвинула меня в дальнейшем.

    Reply
  85. Altair777

    (83) а зачем ее писать куда-то? Ее можно перевычислить по функции, по кторой она изначально была закрашена.

    Неа, не тестировал…. Да я и с такими-то строками не работал 🙁

    Reply
  86. CheBurator

    (84) ну, товагищи! жевать уж сами как нибудь… тем более, что она хотя бы заявленную функцию выполняла — крест двигала… и крест по таблице не елозила когда мышью за пределами ТЗ тыкаешь.. так что работайте!

    .http://www.cm.ex.by/uploads/posts/1176195919_work_niggers.jpg

    Reply
  87. Altair777

    (86) Спасибо за пожелание! 🙂

    Я и работаю… дорабатываю…

    Reply
  88. CheBurator

    > Ее можно перевычислить по функции

    — угумс.. как же… придется тянуть пару тысяч строк допустим для обеспечения такого функционала — негламурно!!! ты вот «вычисли» ближайший браш по вертикали/горизонтали и считай оттуда отрисовку…

    Reply
  89. Ёпрст

    Вообще, решение с постоянным обновлением формы не совсем удачное- грузит проц не по-детски..

    Reply
  90. Altair777

    (88) А если условия сложные? Область не одна?

    Типа, закрасить ячейки, у которых сумма строки и столбца делится ммм…… на 7 🙂

    (89) в самой первой версии функция Отрисовка срабатывала меньше, чем за 0,004 сек. Где-то в хистори аьки есть замер производительности.

    Reply
  91. Ёпрст

    (90) открой диспетчер задач и поводи мышой туда сюда… удивись.

    Reply
  92. CheBurator

    (90) да пофиг какой сложности условие!! я имею разукрашенную ТЗ — и не знаю по каким условиям. зато знаю координаты строки-столбца (набора) где будет крест — вот и считаю оттуда раскраску…

    Reply
  93. Altair777

    (91) Да, удивился…

    (81) После нажатия не клавиш перемещений курсора, отрисовка блокируется… совсем…

    Reply
  94. CheBurator

    (93) по (81) Все, снайпер прицелился! Пригибайся!

    Reply
  95. Altair777

    (94) Этоя уже исправил 🙂

    И обновил ert

    Reply
  96. Altair777

    Новая версия!

    Кажется, мне удалось побороть несколько старых глюков и существенно ускорить быстродействие.

    Reply
  97. Altair777

    Еще одна новая версия — 3B 🙂

    Обновлено описание программы, добавлена историй версий.

    Reply
  98. Ёпрст

    А нафик там цвет выделения ?

    И еще левая кнопка.. ?

    Reply
  99. Altair777

    (98) > А нафик там цвет выделения ?

    Это подготовка к 4 версии 🙂

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

    перезалил….

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *