Table

...
  • И тут оффтопом занялись :-).
    Собственно - один раз написал и используй этот код пока не надоест.

    ..bw
  • Может помочь ещё и следующее (http://kolibrios.org/?p=Documentation&s ... ons&sfp=00):
    • edx = 0xXYRRGGBB, где:
      • X = DCBA (биты)
        • C = 1 - не закрашивать рабочую область при отрисовке окна
    Используется в KFAR, Tinypad. Суть в том, что если программа рисует *всё* в окне сама - ОС нет смысла заливать фон при вызове 0-й функции (из-за чего и наблюдается фликеринг)
    in code we trust
  • Leency, вот исходники текущей версии.
    Attachments
    excel-src.7z (44.07 KiB)
    Downloaded 397 times
  • Следующий вариант: добавлена прокрутка колесиком, сохранение текста при выделении другой ячейки (не нужно больше нажимать Enter, а чтобы отменить ввод, нажмите Escape).
    mike.dld wrote:если программа рисует *всё* в окне сама - ОС нет смысла заливать фон при вызове 0-й функции (из-за чего и наблюдается фликеринг)
    Сделал, помогло.
    bw wrote:еще лучше использовать "буфер" и отрисовывать в него, когда изображение будет полностью построено вывести его на экран.
    Этот прием годится не для всех приложений, так как приходится переписывать процедуры рисования всех примитивов (в том числе вывода текста).
    Leency wrote:Кстати, оказывается что горизонтальные стрелки - это 0x1A / 0x1B
    Leency wrote:Там, где на рисунке обведено - неплохо бы сделать по-центру.
    Исправил.
    Attachments
    table-0.89.7z (44.55 KiB)
    программа+исходники
    Downloaded 397 times
  • > Этот прием годится не для всех приложений, так как приходится переписывать процедуры рисования всех примитивов (в том числе вывода текста).
    Для всех. Просто не нужно, каждый раз, выделять буфер вновь и перерисовавать его полностью. Пусть он остается и ты просто дописываешь в него изменения, а после выводишь буфер на экран. При этом нет необходимости выводить весь буфер на экран, можешь вывести тольку ту часть, в которой произошли изменения. Да, это усложняет задачу и можно, в большинстве случаев, обойтись без такой особенности.

    ..bw
  • 1. Уменьшил перерисовку окна при перемотке колёсиком, одновременно успростил код.

    2. Таки поставил стрелки на место)

    3. При правке текста в ячейке, сделал так что текст не подпрыгивает вверх. Обнаружил баг: из-за того что размер ячеек можно менять, строка 135
    kos_WriteTextToWindow(editbox_x, editbox_y+3,0x80,0,edit_text,0);
    должна выглядеть так:
    kos_WriteTextToWindow(editbox_x, editbox_h/2-3+editbox_y,0x80,0,edit_text,0);

    4. Строка if (redraw) draw_window();
    осталась для меня загадкой. Зачем переменная если можно просто вместо redraw=1 вставить draw_window().
    Это сделано для того чтобы окно не перерисовывалось 2 раза?

    Кстати, везде используется draw_window(); - это не труъ. Дожно быть dwaw_grid(); или что-то в этом роде - перерисовка только ячеек и полос прокрутки без перерисовки всего окна - так будет намного быстрее. Далее, надо сделать вывод сетки полосами.
    ИМХО надо дофиксить баги и заняться этим...
    Attachments
    table-0.89b.zip (69.51 KiB)
    Downloaded 396 times
    Из хаоса в космос
  • Leency, спасибо за помощь в разработке.
    Leency wrote:4. Строка if (redraw) draw_window();осталась для меня загадкой. Зачем переменная если можно просто вместо redraw=1 вставить draw_window().Это сделано для того чтобы окно не перерисовывалось 2 раза?
    Эта строка больше не нужна, а раньше, действительно, служила для однократной перерисовки.
  • прямоугольник под панелью сохранения\загрузки файлов нужно расширить на 1 пиксел вправо и вниз
  • dword wi = WND_W, he = WND_H;
    надо заменить на
    int wi = WND_W, he = WND_H;

    т.к. из-за строчки
    he -= kos_GetSkinHeight() + MENU_PANEL_HEIGHT;
    прога на маленьких размерах окна вылетает.

    После
    kos_DefineAndDrawWindow(10,40,WND_W,WND_H,0x33,0x40FFFFFF,0,0,(Dword)"Table v0.89b");
    надо вставить код
    if (he + MENU_PANEL_HEIGHT<= 8)
    {
    kos_WindowRedrawStatus(2);
    return;
    }
    или что-то типа этого, похожий код ДО рисования окна убрать, он тоже приводит к вылетанию на маленьких размерах.
    Из хаоса в космос
  • Heavyiron, Leency
    Исправлено :)
    Attachments
    table-0.89c.7z (45.5 KiB)
    Downloaded 384 times
  • Реализовано чтение CSV-файлов, в связи с чем номер версии увеличен до 0.9. Также кое-что исправлено.
    Для сохранения файла в CSV-формате нужно указать расширение csv, и, соответственно, при загрузке файла с этим расширением он воспринимается как CSV-файл.
    Attachments
    table-0.9.7z (44.91 KiB)
    Downloaded 402 times
  • при пересчёте формулы результат печатается без заливки фона, поэтому получается наложение шрифта...
    *****:
    ;дух машины, мой бубен сильнее твоей тупости

    *****:
  • Исправил этот и еще пару багов.

    +еще 1 баг
    Attachments
    table-0.92.7z (45.68 KiB)
    Downloaded 392 times
  • Оказалось, в предыдущей версии не работают полосы прокрутки, поправил.
    Attachments
    table-0.91c.7z (45.76 KiB)
    Downloaded 385 times
  • Who is online

    Users browsing this forum: No registered users and 5 guests