Страница 1 из 2

Иконки в ListBox

Добавлено: 29 Ноябрь 2010, 11:34
Jornada
Подскажите, какие есть варианты нарисовать иконку в листбоксе, так, чтобы она рисовалась от левой границы ячейки и до правой без пропусков. Имеется ввиду, что размер иконки по ширине совпадает с шириной ячейки, ресайз колонок не рассматриваем.

Re: Иконки в ListBox

Добавлено: 29 Ноябрь 2010, 11:56
Yufil
А было в доке по CW6 - надо выводить строку по формату @p pb.

Re: Иконки в ListBox

Добавлено: 29 Ноябрь 2010, 12:11
Jornada
Смотрел. На форуме даже примерчик есть. С правой границей хорошо, а левая граница иконки отступает от линии ячейки на какое то количество точек. И не побороть что то.

Re: Иконки в ListBox

Добавлено: 29 Ноябрь 2010, 12:44
Jornada
Пардон.. высота строки все портила. Все ок.

Re: Иконки в ListBox

Добавлено: 29 Ноябрь 2010, 16:28
Jornada
А такой вопрос - как убрать разметку между столбцами? Совсем)

Re: Иконки в ListBox

Добавлено: 30 Ноябрь 2010, 0:17
Admin
Jornada писал(а):А такой вопрос - как убрать разметку между столбцами? Совсем)
"Ху ис" разметка в вашем понимании?

Re: Иконки в ListBox

Добавлено: 30 Ноябрь 2010, 4:02
Admin
Jornada писал(а):А такой вопрос - как убрать разметку между столбцами? Совсем)
Тут подсказали что возможно имеется в виду правая граница столбца в листбоксе.
Тогда в форматере листа:
Right Border => off ! убирает саму полосу за которую тянем при ресайзе колонки
Resizeable => off ! соответственно отключает ресайз для столбца

Но вроде это сильно просто для вашего вопроса. Если имелось в виду другое - объясните.

Спасибо

Re: Иконки в ListBox

Добавлено: 01 Декабрь 2010, 10:27
Jornada
Сам виноват.. как спросил, так и ответили)) Объясню задачу - есть необходимость построить диаграмму ганта. Вот и думаю, как ее реализовать. Можно конечно бокс нарисовать с сеткой, но значений много и придется какой то скролл реализовывать. И практически тащить весь функционал листбокса. Если убрать правую границу галочку сняв, то сетки вобще не будет, но тогда график плохо читаемый, так как отслеживать даты по оси X становится неудобно. То есть сетка нужна, но "под" иконками. Как ее изобразить? Просто нарисовать линии? Куда то в api смотреть? Если в api, то что за функции?
Clarion 6.3 Legacy

Re: Иконки в ListBox

Добавлено: 01 Декабрь 2010, 11:09
Admin
Jornada писал(а):Сам виноват.. как спросил, так и ответили)) Объясню задачу - есть необходимость построить диаграмму ганта. Вот и думаю, как ее реализовать. Можно конечно бокс нарисовать с сеткой, но значений много и придется какой то скролл реализовывать. И практически тащить весь функционал листбокса. Если убрать правую границу галочку сняв, то сетки вобще не будет, но тогда график плохо читаемый, так как отслеживать даты по оси X становится неудобно. То есть сетка нужна, но "под" иконками. Как ее изобразить? Просто нарисовать линии? Куда то в api смотреть? Если в api, то что за функции?
Clarion 6.3 Legacy
Пришлось лезть в википедию и смотреть что такое Диаграмма Ганта (http://ru.wikipedia.org/wiki/Диаграмма_Ганта)
С ходу в голову пришел вот такой пример. без иконок...
Суть понятна. Сделать график уже дело техники. Самому было лень. Уже домой пора с работы.

Код: Выделить всё

                   PROGRAM
                   MAP
                   END

Window WINDOW('Caption'),AT(,,307,161),FONT('MS Sans Serif',8,,FONT:regular),SYSTEM,GRAY,RESIZE
       LIST,AT(0,0),USE(?List),FULL,HVSCROLL
     END
      !LIST,AT(0,0),USE(?List),FULL,HVSCROLL,FORMAT('50L(2)|M~Суть~10L(2)Y~1~@P PB@10L(2)Y~2~@P PB@10L(2)Y~3~@P PB@')

DefaultFormat      EQUATE('50L(2)|FM~Суть~')
LOC:Format         STRING(4096)

DataQueue          QUEUE
Line                 STRING(4096)
                   END

 CODE
 OPEN(Window)
 LOC:Format = DefaultFormat
 LOOP W# = 1 TO 100                !ширина     !номер !формат
   LOC:Format = CLIP(LOC:Format) & '13L(2)Y~' & W# & '~@P PB@'
 END
 ?List{PROP:Lineheight} = 10
 ?List{PROP:Format} = LOC:Format
 ?List{PROP:From} = DataQueue
 ! стилей можно наделать море разных.
 ?List{PROPSTYLE:BackColor,1} = COLOR:Red
 ?List{PROPSTYLE:BackSelected,1} = COLOR:Red
 ?List{PROPSTYLE:BackColor,2} = COLOR:Blue
 ?List{PROPSTYLE:BackSelected,2} = COLOR:Blue
 ?List{PROPSTYLE:BackColor,3} = COLOR:None
 ?List{PROPSTYLE:BackSelected,3} = COLOR:None
 LOOP W# = 1 TO 1000
   CLEAR(DataQueue)
   DataQueue.Line = 'Строка #' & FORMAT(W#,@N04)
   LOOP 99 TIMES
     ! набиваем ячейки. проявив смекалку можно сделать диаграмму
     ! RANDOM(1,3) - стиль из описанных выше
     ! |1| - просто заполнитель т.к. пусто не прокатывало у меня
     ! разбираться не стал.
     DataQueue.Line = CLIP(DataQueue.Line)&'|1|'&RANDOM(1,3)
   END
   ! делаем ячейку 100 чистой... для красоты
   DataQueue.Line = CLIP(DataQueue.Line)&'|1|0'
   ADD(DataQueue)
 END
 ACCEPT
 END
 CLOSE(Window)

Re: Иконки в ListBox

Добавлено: 01 Декабрь 2010, 11:30
BOB
Не смотрел что за ганта , но наверно графика.
Если работа разовая посмотри libsrc\cfilimage?.* если на долго то копай opengl. С ogl время уйдет больше , но оно того стоит.

Re: Иконки в ListBox

Добавлено: 01 Декабрь 2010, 17:09
Yufil
Добрый день!

Делал диаграмму Гантта, но без всякого листбокса.
Сделал скроллируемый экран и рисовал графическими контролами. Более того, покрыл регионом и позволил растягивать границы прямоугольников.

Re: Иконки в ListBox

Добавлено: 01 Декабрь 2010, 19:12
Jornada
Не.. вариант с установкой фона в ячейке не канает. Все будет сливаться, а если делать разными цетами - то рябить в глазах будет. Да и вобщем то некрасиво.
Скроллируемый экран тоже делать не хочется. т.к. предполагается, что графиков будет много и грузить их все - накладно.

Вот пример:
Изображение

Хочется сделать что то похожее в плане графики. Я думал, что можно с иконками, через листбокс, но тогда надо придумать как самому сетку нарисовать "под" иконками. Можно заморочиться и нарисовать все вручную.. но есть мнение, что при скролле этого безобразия все рябить и дергаться будет, поэтому я склоняюсь все же к листбоксу. Тем более, что функционально с этими графиками будут работать, как с листбоксом и изобретать велосипед совершенно не хочется.
Поэтому все же вопрос - как такую сетку сделать?)

Re: Иконки в ListBox

Добавлено: 01 Декабрь 2010, 19:55
Дед Пахом
Могу предложить как вариант http://ingasoftplus.com/id133.htm, правда не бесплатный и потрахаться тоже придётся, чтобы графики начертить.

Re: Иконки в ListBox

Добавлено: 01 Декабрь 2010, 19:57
Jornada
Не.. мне интересно самому сделать) я ж не готовое решение спрашиваю, а в какую сторону смотреть)

Re: Иконки в ListBox

Добавлено: 01 Декабрь 2010, 21:09
Дед Пахом
Jornada писал(а):Не.. мне интересно самому сделать) я ж не готовое решение спрашиваю, а в какую сторону смотреть)
Так бы и сказал, что денег нет :D