Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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?


Наверх

Титульная страница Поиск, карта сайта Написать письмо