Форум: "Начинающим";
Текущий архив: 2006.10.22;
Скачать: [xml.tar.bz2];
ВнизTPanel с возможностью копирования текста Найти похожие ветки
← →
Alex_C © (2006-10-03 14:19) [0]Что нужно изменить в стандартном компоненте TPanel, чтобы текст с него можно было копировать как с обычного TMemo? Т.е. выделить текст на панели - правая кнопка мыши -> меню Copy.
← →
Джо © (2006-10-03 14:20) [1]А почему нельзя использовать TMemo?
← →
Alex_C © (2006-10-03 14:22) [2]По некоторым соображениям :)
Ну в общем я видел, что такие компоненты Panel есть на torry.ru, но они очень большие и разобраться именно в этом куске не получились.
← →
Ketmar © (2006-10-03 14:24) [3]а просто редактор тоже нельзя? который TEdit и ReadOnly?
← →
Джо © (2006-10-03 14:25) [4]Значит так, делаем следующее.
1. Кладем на форму TPanel.
2. Убираем у нее Caption.
3. На панель кладем TMemo.
4. Ему, по вкусу: Color := Panel1.Color; ReadOnly := True; Alignment := taCenter.
Наслаждаемся.
← →
Джо © (2006-10-03 14:26) [5]> [4] Джо © (03.10.06 14:25)
+BorderStyle := bsNone
← →
Alex_C © (2006-10-03 14:39) [6]Этот вариант конечно понятен, но сейчас объясню, почему не использую мемо: хочу создать следующий в общем простой элемент, но только не соображу как сделать:
нужно от устройства выводить текстовую информацию в окошко без возможности редактирования (тут вроде все как просто - memo+ReadOnly), однако надо чтобы оператор мог выделять и копировать с него текст (тут вроде тоже все просто - с мемо текст копировать.) Но вот в чем проблема - данные с ус-ва идут достаточно быстро раз в 1-2 секунды, и когда данные мемо обновляются методом Text := Text + intext или же SelText := intext, то выделение естетсвенно сбрасывается. При попытке сохранять, а потом восстанавливать выделение происходит сильное мелькание выделенного куска (то сбрасывается, то восстанавливается выделение). Вот и думаю, как это все можно реализовать без мелькания.
← →
Джо © (2006-10-03 14:42) [7]> Вот и думаю, как это все можно реализовать без мелькания.
Memo1.Lines.BeginUpdate;
try
// тут много-много меняем
// и много-много добавляем
finally
Memo1.Lines.EndUpdate;
end
← →
Alex_C © (2006-10-03 14:42) [8]Ди и еще необходимо, чтобы при добавлении текста из ус-ва выделение не сбрасывалось. Т.е. текст далее добавляяется, а пользователь выделять продолжает, пока не выделит весь кусок текста что ему нужен.
← →
Alex_C © (2006-10-03 14:51) [9]То Джо: Большое спасибо! Вроде то что надо!
← →
Alex_C © (2006-10-03 17:02) [10]Сейчас попробовал в реальной программе описанный выше метод. Мерцание стало конечно меньше, но все равно осталось. Причем причиной мерцания как я понимаю является то, что мемо при добавлении строк полностью очащает все видимое поле, заполняя его фоном, а затем выводит строки. Как этого избежать?
ControlStyle:= ControlStyle + [csOpaque]; - не помогает
← →
Korneley © (2006-10-04 10:04) [11]Может
Memo1.DoubleBuffered := true;
поможет?
← →
Alex_C © (2006-10-04 16:02) [12]
> Может
> Memo1.DoubleBuffered := true;
> поможет?
Да вот так помогает!
Но только для Memo, жалко что на RichEdit это не действует...
← →
Korneley © (2006-10-04 16:43) [13]К сведению: совместное применение DoubleBuffered := true и Begin/EndUpdate на некоторых компонентах приводит к некоторой своеобразности поведения компонента. Например: TListView мерцать перестал, но заголовок (ListView1.ViewStyle := vsReport) мигает уверено. Если убрать Begin/EndUpdate мигание пропадает, но скорость обновления, соответственно ... :(
← →
guav © (2006-10-04 16:53) [14]LockWindowUpdate - и ничего вообще не перерисовывается. Не забыть только потом убрать.
← →
MsGuns © (2006-10-04 17:07) [15]А почему бы Мемо, "смутно" распознающее строки, не заменить на TListView или стрингрид без заголовка ?
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.10.22;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.052 c