Форум: "Основная";
Текущий архив: 2011.11.13;
Скачать: [xml.tar.bz2];
ВнизWordWrap в TMemo c фиксированным количеством строк Найти похожие ветки
← →
alexvan © (2010-04-30 10:04) [0]Вот код, но дело в том что он корректно работает только в случае если WordWrap=false, в случае true как только происходит WordWrap в последней строке, вылетает EOverFlow.
Подскажите варианты как с этим бороться.
procedure TForm1.Memo1Change(Sender: TObject);
const
MaxLineCount = 3;
begin
if Memo1.Lines.Count > MaxLineCount then
Memo1.Perform(EM_UNDO, 0, 0);
Memo1.Perform(EM_EMPTYUNDOBUFFER, 0, 0);
end;
Спасибо
← →
alexvan © (2010-04-30 12:40) [1]Нашёл другое решение только здесь ещё один косяк
procedure TFMain.Memo1KeyPress(Sender: TObject; var Key: Char);
var
l, w: Integer;
b: TBitmap;
begin
b:=TBitmap.Create;
try
l:=Memo1.Perform(EM_LINEFROMCHAR, -1, 0);
b.Canvas.Font:=Memo1.Font;
w:=b.Canvas.TextWidth(Memo1.Lines[l]);
if ((w>=Memo1.ClientWidth) AND (l>=1)) then
begin
case Key of
" "..#255, #13: key:=#0;
end;
end;
finally
b.Free;
end;
end;
Странно как то с ClientWidth строка Сanvas.TextWidth(Memo1.Lines[l] при переносе получается значительно больше чем видимая часть Memo - что это баг или както фиксится?
← →
{RASkov} © (2010-04-30 12:44) [2]
procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);
begin
if (Key=#13) and (Memo1.Lines.Count>=3) then Key:=#0;
end;
← →
{RASkov} © (2010-04-30 12:46) [3]Хотя нет... от вордврап не спасет...
← →
{RASkov} © (2010-04-30 12:54) [4]еще один дурацкий вариант:
procedure TForm1.Memo1Change(Sender: TObject);
begin
if Memo1.Lines.Count>2 then Memo1.Lines.Delete(3);
end;
А какая конкретно задача? Может есть другие решения....
← →
alexvan © (2010-04-30 12:57) [5]Задача n-строк и не больше и WordWrap true
← →
Leonid Troyanovsky © (2010-04-30 12:58) [6]
> {RASkov} © (30.04.10 12:54) [4]
> еще один дурацкий вариант:
Дурацких вариантов еще больше.
> А какая конкретно задача? Может есть другие решения....
Вот.
Пусть объяснится, чем ему 3 edit или 1 stringgrid не угодил.
--
Regards, LVT.
← →
alexvan © (2010-04-30 13:08) [7]А если 10 строк то 10 Edit? А вообще на телегу вместо колеса можно лыжу приделать.
← →
Leonid Troyanovsky © (2010-04-30 13:16) [8]
> alexvan © (30.04.10 13:08) [7]
> А если 10 строк то 10 Edit
Хоть 100. T*Grid, T*View.
--
Regards, LVT.
← →
alexvan © (2010-04-30 13:28) [9]Вообще постановка вопроса в 2-х первых постах. Это вообще-то работает - только в 1 случае WordWrap не идёт а во втором случае всё ок кроме странностей с шириной строки и ClientWidth. Я пытаюсь разобраться в данном вопросе а не в практикуме использования различных компонентов при наталкивании на первый же подводный камень.
← →
{RASkov} © (2010-04-30 13:34) [10]> [9] alexvan © (30.04.10 13:28)
Тогда создавай свой TMyMemo, а тык ты действительно лыжу приделываешь...
← →
Демо © (2010-04-30 13:35) [11]
>{RASkov} © (30.04.10 12:54) [4]
> еще один дурацкий вариант:
Тогда уж так:procedure TForm1.Memo1Change(Sender: TObject);
begin
while Memo1.Lines.Count>MaxCount then Memo1.Lines.Delete(Memo1.Lines.Count-1);
end;
← →
Leonid Troyanovsky © (2010-04-30 13:40) [12]
> alexvan © (30.04.10 13:28) [9]
> Я пытаюсь разобраться в данном вопросе
Попытайся сначала разобраться, для каких целей
используются те или иные контролы.
--
Regards, LVT.
← →
alexvan © (2010-04-30 14:05) [13]
> Попытайся сначала разобраться, для каких целей
> используются те или иные контролы.
Что я пытаюсь или не пытаюсь - судить об этом мне. Выбор конечного и оптимального решения и наиболее правильного с моей точки зрения - тоже дело моё, другой вопрос что это может в действительности оказаться заблуждением, но это уже мои трудности. В данном случае TMemo именно то что надо. А то что над Вами висит MASTER DELPHI совсем не означает, что все должны беспрекословно следовать вашему мнению и рекомендациям.
With Regards!!!
← →
Leonid Troyanovsky © (2010-04-30 14:37) [14]
> alexvan © (30.04.10 14:05) [13]
> уже мои трудности. В данном случае TMemo именно то что
> надо.
Флаг в руки и барабан на шею.
--
Regards, LVT.
← →
alexvan © (2010-04-30 14:42) [15]тема закрыта - задача решена! Вариант №2 рулит.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2011.11.13;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.005 c