View previous topic :: View next topic |
Author |
Message |
Марина
Joined: 27 Aug 2002 Posts: 501 Location: Кондрина Марина Александровна Occupation: ОАО БКО программист Interests: Боровичи Новгородской обл
|
Posted: 18 Oct 2005 10:27 Post subject: Хвосты от длинных названий в Initlist |
|
|
Я вывожу для просмотра список наименований товаров по InitList.
Одни названия длинные, другие короткие. В результате на экране после долгого листания остаются хвосты от длинных названий, которые не пролистываются. В чем тут может быть дело, возможно в setcolor? |
|
Back to top |
|
|
nordk
Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
|
Posted: 18 Oct 2005 13:24 Post subject: |
|
|
Марина а как Вы выодите названия - можно кусок текста взглянуть ?
Вы случайно их не режете типа ALLTRIM() ? |
|
Back to top |
|
|
Марина
Joined: 27 Aug 2002 Posts: 501 Location: Кондрина Марина Александровна Occupation: ОАО БКО программист Interests: Боровичи Новгородской обл
|
Posted: 18 Oct 2005 15:46 Post subject: |
|
|
vv:=dialog("Наименование: ","XXXXXXXXXXXXX"," ")
if lastkey()=27
return .f.
endif
mlabel->(ordsetfocus("mlabel_t"))
mlabel->(dbseek(" "+upper(vv),.t.))
DISPBOX(5,20,24,70,( Chr( 201 ) + Chr( 205 ) + Chr( 187 ) + Chr( 186 ) + Chr( 188 ) + Chr( 205 ) + Chr( 200 ) + Chr( 186 )+' ' ) ,"W+/B")
@ 6,21 say "Нажмите Enter на нужном товаре или Esc для отказа" color "n/w"
mlabel->(initlist(7,23,{" Номер Наименование "},;
{{{||field->nnum},0},{{||left(field->name,30)},14}},,;
,,,,,,,{||.f.}))
Правда этот кусок внутри функции, которая вызывается из другой функции, а перед этим
setcolor("w+/b,n/w") |
|
Back to top |
|
|
nordk
Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
|
Posted: 18 Oct 2005 17:27 Post subject: |
|
|
Марина попробуйте полное обновление экрана положить в InitList |
|
Back to top |
|
|
Behemoth
Joined: 15 Mar 2002 Posts: 155 Location: Новиков Алексей Юрьевич Occupation: ПБОЮЛ Interests: Пермь
|
Posted: 18 Oct 2005 18:21 Post subject: |
|
|
Добрый день.
Третий параметр initlist "волшебным" образом отвечает за ширину окна вывода. Поэтому длина строки заголовка должна быть не менее длины выводимых Вами полей.
Если Вы не приукрасили свою программу перед постингом, похоже, что длина строки " Номер Наименование " значительно меньше чем
{{||left(field->name,30)},14}}. 30 символов от 14-ой колонки заканчиваются на колонке 43. Именно такой (или большей) должна быть длина строки " Номер Наименование ". _________________ С уважением, Новиков Алексей. |
|
Back to top |
|
|
nordk
Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
|
Posted: 18 Oct 2005 19:37 Post subject: |
|
|
Тогда бы она вообще не писала....
Неполный заголовок влияет на центровку изображения, т.е. не скраю пишет, вы можете вообще заголовок сделать из одного пробела и что вообще писать не будет ? - будет, так как программа выполняет EVAL каждого указанного Вами блока кода, а вот координаты смещаются - это есть такое.
А вот режим обновления экрана при нажатии клавиши надо обязательно указывать - это 5 параметр. Иначе он просто не перерисовывается. - Вы нажали пролистать страницу и экран полностью не перерисовался потому что не вернули 2 - вот Вам и хвосты.... |
|
Back to top |
|
|
Behemoth
Joined: 15 Mar 2002 Posts: 155 Location: Новиков Алексей Юрьевич Occupation: ПБОЮЛ Interests: Пермь
|
Posted: 18 Oct 2005 20:05 Post subject: |
|
|
Добрый день.
Уважаемая Марина, попробуйте оба варианта по-отдельности и вынесите свой вердикт. _________________ С уважением, Новиков Алексей. |
|
Back to top |
|
|
nordk
Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
|
Posted: 18 Oct 2005 20:18 Post subject: |
|
|
А Вы сами попробуйте с пробелом в заголовке
Когда будем проходить расщепление окна на два Инитлиста - Вы сами с отладчиком пройдете и увидите наглядно как работает 5 параметр и как не влияет длина заголовка
По уму тут надо было бы еще кусок исходника InitList() привести - боюсь не успею... |
|
Back to top |
|
|
nordk
Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
|
Posted: 18 Oct 2005 20:25 Post subject: |
|
|
AEVAL(aBlockCols,{|x|aBlockCols[++nCo,2]:=x[2]+_nLeft}) //Пересчет aBlockCols
Это внутри Инитлист выполнения блоков кода - как видите здесь нет никакой зависимости от заголовка кроме как координаты отражения |
|
Back to top |
|
|
Behemoth
Joined: 15 Mar 2002 Posts: 155 Location: Новиков Алексей Юрьевич Occupation: ПБОЮЛ Interests: Пермь
|
Posted: 18 Oct 2005 20:34 Post subject: |
|
|
Добрый день.
nordk wrote: | А Вы сами попробуйте с пробелом в заголовке
|
Попробовал. Аккурат остаются длинные хвосты. Вся та часть строки, которая длиннее 1. Это при движении за пределы первого экрана.
Скроллируется только экран шириной 1 символ.
Ой не зря в документации про ширину области вывода написано...
"03.cColHead – строка или массив строк – заголовок над полями, или если число, тогда считается, что заголовка нет и это ширина области вывода InitList" _________________ С уважением, Новиков Алексей. |
|
Back to top |
|
|
nordk
Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
|
Posted: 18 Oct 2005 20:38 Post subject: |
|
|
Я Вам привел код из текста Инитлист - у меня вся строка скролируется без проблем.... |
|
Back to top |
|
|
nordk
Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
|
Posted: 18 Oct 2005 20:39 Post subject: |
|
|
Приведите Ваш текс |
|
Back to top |
|
|
Behemoth
Joined: 15 Mar 2002 Posts: 155 Location: Новиков Алексей Юрьевич Occupation: ПБОЮЛ Interests: Пермь
|
Posted: 18 Oct 2005 21:04 Post subject: |
|
|
Добрый день.
function mymain()
Private A1,cColHead,aBlock
a1:= Chr(201)+Chr(205)+Chr(187)+Chr(186)+Chr(188)+Chr(205)+Chr(200)+Chr(186)+' '
@ 2,0,22,79 BOX a1 COLOR "W+/B+"
cColHead := " Группа Ном. номер Наименование "
// cColHead := padr(" Группа Ном. номер Наименование ",7
aBlock := {}
AADD(aBlock,{{|| grup},1})
AADD(aBlock,{{|| nnum},7})
AADD(aBlock,{{|| left(name,40)},21})
mlabel->(InitList(3,21,cColHead,aBlock,,,,,,,0,,,,,,,,,,0))
return _________________ С уважением, Новиков Алексей. |
|
Back to top |
|
|
Behemoth
Joined: 15 Mar 2002 Posts: 155 Location: Новиков Алексей Юрьевич Occupation: ПБОЮЛ Interests: Пермь
|
Posted: 18 Oct 2005 21:06 Post subject: |
|
|
Добрый день.
Там в ccolhead вместо смайлика было "8 )". _________________ С уважением, Новиков Алексей. |
|
Back to top |
|
|
nordk
Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
|
Posted: 18 Oct 2005 21:12 Post subject: |
|
|
Вот а теперь добавьте в пятый параметр {||"2"} и посмотрите что получится |
|
Back to top |
|
|
|