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




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

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

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

<?php // Полная загрузка сервисных книжек, создан 2026-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 не будет опубликован. Обязательные поля помечены *