powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Автоматическая ширина столбцов
11 сообщений из 11, страница 1 из 1
Автоматическая ширина столбцов
    #36670786
Kosoblik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!
Поделитесь пожалуйста скриптом для установки ширины колонки по максимальной длине ее записи
...
Рейтинг: 0 / 0
Автоматическая ширина столбцов
    #36671006
Изучайте в хелпе
AllowAutoColumnFit
AutoFit.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Автоматическая ширина столбцов
    #37915771
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите, что-то не врубаюсь. Делаю автофит, но колонки после этого располагаются впритык друг к другу. Некрасиво. Дописываю автофит() вот так:
Код: sql
1.
2.
3.
4.
5.
dodefault()

For ii=1 To This.ColumnCount
  This.Columns[ii].Width = This.Columns[ii].Width + 10
Endfor

Результат нулевой. Как были колонки впритык, таки остались. Что странно - если посмотреть ширину первой колонки до цикла и после, разница есть. Однако если вывести ширину колонки после того, как таблица отобразилась, то эта ширина равна исходной (без +10). Такое впечатление, что перед отображением откуда-то ещё вызывается неотмодифицированный автофит, но откуда?
upd. Ещё интересней. Сделал кнопку с вызовом автофита, дебажу уже пошагово и слежу за шириной колонки. Пока находимся внутри метода, всё прекрасно - было 305, стало 315. Выходим обратно в кнопку - и внезапно ширина первой колонки опять равна 305. Что за?..
...
Рейтинг: 0 / 0
Автоматическая ширина столбцов
    #37916261
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ahchor не используется? Он может гадить.
Попробуй свой код вынести из AutoFit(), т.е. сначала вызвать AutoFit() а потом выполнить код.
...
Рейтинг: 0 / 0
Автоматическая ширина столбцов
    #37916458
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TAhchor не используется? Он может гадить.Используется. Завтра попробую его убрать, гляну, что получится.
...
Рейтинг: 0 / 0
Автоматическая ширина столбцов
    #37916857
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я
Дело не в анкоре.
Дело не в том, что этот код вызывается из инита - сделал отдельную кнопку с вызовом автофит, когда таблица уже гарантированно отрисована.
Дело не в том, что я использую свой класс таблицы - проверил на базовом.

Вот весь код автофита:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
DoDefault()

Local qwe
qwe=This.Columns[1].Width
For ii=1 To This.ColumnCount
  This.Columns[ii].Width = This.Columns[ii].Width + 10
Endfor

Messagebox(Str(qwe)+Chr(13)+Str(This.Columns[1].Width))

Так вот, когда на экране появляется меседжбокс с цифрами "284 294", столбцы действительно расширены на эти долбаные 10 пикселей. Это видно. Но!
Закрываем окно меседжбокса, и ВНЕЗАПНО столбцы снова сходятся вплотную.
WTF??!

ЗЫ. Приложил тестовую форму.
ЗЗЫ. Нет, я понимаю, что можно вручную задать каждому столбцу ширину, но мне интересно, что же тут происходит?
...
Рейтинг: 0 / 0
Автоматическая ширина столбцов
    #37916873
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все работает если сначала вызвать AutoFit() а потом выполнить твой код. Напиши в Form.Init()
Код: sql
1.
2.
3.
4.
5.
6.
...
thisform.grid1.AutoFit()

For ii=1 To thisform.grid1.ColumnCount
  thisform.grid1.Columns[ii].Width = thisform.grid1.Columns[ii].Width + 10
Endfor



Почему так - не знаю. Грид в фоксе вообще странная штука.
...
Рейтинг: 0 / 0
Автоматическая ширина столбцов
    #37916874
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T, спасибо!
...
Рейтинг: 0 / 0
Автоматическая ширина столбцов
    #37917518
ЛДПР
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima T,

авторГрид в фоксе вообще странная штука.

Что да то да,но в данном случае просто вызывается 2 раза autofit один раз принудительно через dodefault() и второй раз по умолчанию после выполнения кода в методе autofit, все что надо было это поставить в конце кода в методе autofit Nodefault
...
Рейтинг: 0 / 0
Автоматическая ширина столбцов
    #37917629
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛДПРDima T,

авторГрид в фоксе вообще странная штука.

Что да то да,но в данном случае просто вызывается 2 раза autofit один раз принудительно через dodefault() и второй раз по умолчанию после выполнения кода в методе autofit, все что надо было это поставить в конце кода в методе autofit Nodefault
Что-то не догадался Nodefault попробовать, спасибо, будем знать.
...
Рейтинг: 0 / 0
Автоматическая ширина столбцов
    #37918081
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛДПР, точно, чёрт побери :)
Спасибо за инфу, так, конечно, лучше будет, чем выносить код невесть куда.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Автоматическая ширина столбцов
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]