Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > автоматическая установка ширены Memo


Автор: Zero 25.3.2005, 23:42
САБЖ.
Есть mdb-файл. В нём один из атрибутов типа Memo.
Нужно вывести содержимое ячейки в Memo так, чтобы размер Memo при этом автоматически установился и ни каких ползунков при этом быть не должно.
Ширена определяется по размеру экрана, но дальше постоянная.

Автор: p0s0l 26.3.2005, 20:56
Выставляй высоту Memo как произведение строк в мемо (Memo1.Lines.Count) на высоту одной строки...
А ширина должны быть постоянной...

Автор: Zero 27.3.2005, 12:02
p0s0l а ты не можеш предположить почему в одних местах высота устанавливается как надо, а в других то не хватает, то перебор.
Хотя по такому коду наверно не определишь, но наверно лучше чем ничего:
Код

//Установить нужную ширену поста
      buf:=FloatToStr(StrToFloat(IntToStr(Say[i].Lines.Count))*13.6);  
      Delete(buf,Pos(',',buf),length(buf));
      if Say[i].Lines.Count>22 then  
        ps[i].Height:=StrToInt(buf);

Автор: p0s0l 27.3.2005, 13:40
Мдя smile... Классные у тебя манипуляции с числами smile
Причина я думаю в числе 13.6 - откуда его взял ? Если у тебя бывает, что не хватает высоты, значит надо большее число брать... В принципе, его надо определять программно, а не просто так подбирать число экспериментально...

Автор: Zero 27.3.2005, 16:49
Цитата(p0s0l @ 27.3.2005, 13:40)
В принципе, его надо определять программно, а не просто так подбирать число экспериментально...

Ето как и зачем?
У меня высота офицально, ну покрайней мере в свойстве фонт как по умолчанию поставилось, вроде 12 так я его и не меняю, за исключением того, что числа могут быть заглавными. Но если тут поставить 12, что при большем количестве строк последние не видны становятся. Это опять делфи вроде глючит... smile Или как ты говорил "фича" чтоли... smile
Цитата(p0s0l @ 27.3.2005, 13:40)
Классные у тебя манипуляции с числами

Да блин, вроде где то видел преобразование вещественных чисел в целые, но сюдня целый час переискивал в Фаронове, и как всегда когда что надо никогда не найдёшь, smile Вот и решил что быстрее сам изобрету функцию чем найду. smile
Вообщем если ты знаешь как програамно определить число заместо "13.6", то напиши пожалуйста. smile
А так на всякий случай щас скину тебе на мыло прогу, для наглядности.

Автор: FRAGNATIC 27.3.2005, 17:05
Цитата
как програамно определить число заместо "13.6"

а Round() не подходит?

Автор: Zero 27.3.2005, 17:29
Цитата(FRAGNATIC @ 27.3.2005, 17:05)
а Round() не подходит?

А причём тут раунд и ширена шрифта smile

Автор: FRAGNATIC 27.3.2005, 17:31
ой точно) вообще я это к тому вместо всех тех манипуляций с цифрами предложил) но он тож не подходит)

Автор: Zero 27.3.2005, 17:37
Да мне главное придумать что за месть "13.6" надо ставить, smile а манипуляция с цифрами это фигня.

Автор: Zero 28.3.2005, 21:51
Спасибо большое г-н Посол, теперь всё работает. smile
Только я не пойму, почему твоим способом работает а моим нет, вроде у меня тоже всё достаточно лигично написано? smile

Автор: p0s0l 28.3.2005, 23:16
Цитата(Zero @ 28.3.2005, 21:51)
Только я не пойму, почему твоим способом работает а моим нет, вроде у меня тоже всё достаточно лигично написано?
Не совсем...
У тебя выставляется высота не Memo, а Panel'и, на которой лежит несколько панелей, и на одной из них наше Memo... Поэтому высота главной панели должна высчитываться как высота всех дочерних панелей + высота Memo...


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)