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