Page 4 of 7

Re: Excel в Kolibri

Posted: Mon Oct 06, 2008 6:39 am
by Leency
Будет мелькание, но даже в Кьему без акселератора kaqemu его будет очень сложно заметить.
А рисовать в буфер, а потом выводить сложно, учитывая что тогда большую часть проги придётся переписать с нуля. Если я не ошибаюсь, только KFAR сейчас такое умеет.

Re: Excel в Kolibri

Posted: Mon Oct 06, 2008 11:40 am
by bw
И тут оффтопом занялись :-).
Собственно - один раз написал и используй этот код пока не надоест.

..bw

Re: Excel в Kolibri

Posted: Mon Oct 06, 2008 4:53 pm
by mike.dld
Может помочь ещё и следующее (http://kolibrios.org/?p=Documentation&s ... ons&sfp=00):
  • edx = 0xXYRRGGBB, где:
    • X = DCBA (биты)
      • C = 1 - не закрашивать рабочую область при отрисовке окна
Используется в KFAR, Tinypad. Суть в том, что если программа рисует *всё* в окне сама - ОС нет смысла заливать фон при вызове 0-й функции (из-за чего и наблюдается фликеринг)

Re: Excel в Kolibri

Posted: Mon Oct 06, 2008 11:41 pm
by barsuk
Leency, вот исходники текущей версии.

Re: Excel в Kolibri

Posted: Wed Oct 08, 2008 11:33 pm
by barsuk
Следующий вариант: добавлена прокрутка колесиком, сохранение текста при выделении другой ячейки (не нужно больше нажимать Enter, а чтобы отменить ввод, нажмите Escape).
mike.dld wrote:если программа рисует *всё* в окне сама - ОС нет смысла заливать фон при вызове 0-й функции (из-за чего и наблюдается фликеринг)
Сделал, помогло.
bw wrote:еще лучше использовать "буфер" и отрисовывать в него, когда изображение будет полностью построено вывести его на экран.
Этот прием годится не для всех приложений, так как приходится переписывать процедуры рисования всех примитивов (в том числе вывода текста).
Leency wrote:Кстати, оказывается что горизонтальные стрелки - это 0x1A / 0x1B
Leency wrote:Там, где на рисунке обведено - неплохо бы сделать по-центру.
Исправил.

Re: Excel в Kolibri

Posted: Thu Oct 09, 2008 12:33 am
by bw
> Этот прием годится не для всех приложений, так как приходится переписывать процедуры рисования всех примитивов (в том числе вывода текста).
Для всех. Просто не нужно, каждый раз, выделять буфер вновь и перерисовавать его полностью. Пусть он остается и ты просто дописываешь в него изменения, а после выводишь буфер на экран. При этом нет необходимости выводить весь буфер на экран, можешь вывести тольку ту часть, в которой произошли изменения. Да, это усложняет задачу и можно, в большинстве случаев, обойтись без такой особенности.

..bw

Re: Excel в Kolibri

Posted: Thu Oct 09, 2008 4:17 am
by Leency
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(); или что-то в этом роде - перерисовка только ячеек и полос прокрутки без перерисовки всего окна - так будет намного быстрее. Далее, надо сделать вывод сетки полосами.
ИМХО надо дофиксить баги и заняться этим...

Re: Excel в Kolibri

Posted: Thu Oct 09, 2008 7:59 pm
by barsuk
Leency, спасибо за помощь в разработке.
Leency wrote:4. Строка if (redraw) draw_window();осталась для меня загадкой. Зачем переменная если можно просто вместо redraw=1 вставить draw_window().Это сделано для того чтобы окно не перерисовывалось 2 раза?
Эта строка больше не нужна, а раньше, действительно, служила для однократной перерисовки.

Re: Excel в Kolibri

Posted: Fri Oct 10, 2008 11:58 pm
by Heavyiron
прямоугольник под панелью сохранения\загрузки файлов нужно расширить на 1 пиксел вправо и вниз

Re: Excel в Kolibri

Posted: Sun Oct 12, 2008 9:48 pm
by Leency
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;
}
или что-то типа этого, похожий код ДО рисования окна убрать, он тоже приводит к вылетанию на маленьких размерах.

Re: Excel в Kolibri

Posted: Sun Oct 12, 2008 10:24 pm
by barsuk
Heavyiron, Leency
Исправлено :)

Re: Excel в Kolibri

Posted: Mon Oct 13, 2008 10:23 pm
by barsuk
Реализовано чтение CSV-файлов, в связи с чем номер версии увеличен до 0.9. Также кое-что исправлено.
Для сохранения файла в CSV-формате нужно указать расширение csv, и, соответственно, при загрузке файла с этим расширением он воспринимается как CSV-файл.

Re: Excel в Kolibri

Posted: Mon Oct 13, 2008 10:36 pm
by ДедОк
при пересчёте формулы результат печатается без заливки фона, поэтому получается наложение шрифта...

Re: Excel в Kolibri

Posted: Wed Oct 15, 2008 12:39 am
by barsuk
Исправил этот и еще пару багов.

+еще 1 баг

Re: Excel в Kolibri

Posted: Wed Oct 15, 2008 3:02 pm
by barsuk
Оказалось, в предыдущей версии не работают полосы прокрутки, поправил.