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

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

Создание разделителя между RichEdit'ами.


Fenix ©   (2006-03-14 15:29:00) 

Доброго времени суток.
Подскажите плз как можзно создать разделитель между двумя RichEdit'ами, притом что у них Align=Client, и они создаються динамически. Мне нужно, что бы можно было перетаскиванием менять им размеры (перетаскивание вертикально). Что то вроде как в Проводнике (между деревом каталогов и рабочим окном), но мне надо горизонтально так сделать.


Fenix   (2006-03-14 18:42:00) [1]

все я понял алгоритм увеличения шрифта и изменение его стиля. Еще меня интересует как снять выделение?
Richedit1.SlectAll;//Это что бы выделить весь текст
Richedtt1.SelLength:=0;// что бы снять выделение.

Но потом у меня он не окрашивает следующую строку. я пишу:
Richedit1.SelAttributes.Color:=clBlue;
Richedit1.Lines.Add('Сообщение от  ' +Form1.Caption);
Richedit1.SelAttributes.Color:=clBlue;
Richedit1.Lines.Add(Message);
Вторую строку он окрашивает в синий, а первую нет(


clickmaker   (2006-03-14 18:22:00) [2]


> Fenix ©   (14.03.06 18:02) [15]

ну так работает рич эдит... нельзя в лоб ему менять шрифт. Только через SelAttributes. Тем более, что "если будет много текста в RichEdit, то его прорисвка может занять много времени".


Fenix   (2006-03-14 18:02:00) [3]

не я так делаю..... проблема как я сказал заключаеться в том, что после изменения размера шрифта, у меня все дывеления сбиваються (заного прорисовывать как то неохото...) и у меня идет прорисовка при добавлении нового сообщения. Просто если будет много текста в RichEdit, то его прорисвка может занять много времени.... Мне интересно как можно сохранить форматирование, если я просто пишу:
HistoriChat[PageControl1.ActivePageIndex].Font.Size:=FontDialog1.Font.Size;
HistoriChat[PageControl1.ActivePageIndex].Font.FontAdapter:=FontDialog1.Font.Fon tAdapter;

По идее меняеться только размер и тип шрифта, но почему сбиваеться цветовая раскраска непонятно :(


clickmaker   (2006-03-14 17:54:00) [4]


> Fenix ©   (14.03.06 17:44) [13]

SelStart, SelLength
SelAttributes.Color


Fenix   (2006-03-14 17:44:00) [5]

с owner разобрался :)
теперь остался вопрос про сохранение форматированного текста....
Fenix ©   (14.03.06 17:18) [10]


clickmaker   (2006-03-14 17:38:00) [6]


> Fenix ©   (14.03.06 17:21) [11]

внимательней читай clickmaker ©   (14.03.06 15:48) [3]


Fenix   (2006-03-14 17:21:00) [7]

Мне пишеться что св-во Owner предназначено только для чтения...... может я чтото не так делаю... вот код:

Page[PageControl1.PageCount]:=TTabSheet.Create(Self);
Page[PageControl1.PageCount].Caption:=ActiveUIN;
Page[PageControl1.PageCount].PageControl := PageControl1;
HistoriChat[PageControl1.PageCount-1]:=Trichedit.Create(self);
HistoriChat[PageControl1.PageCount-1].Parent := Page[PageControl1.PageCount-1];
HistoriChat[PageControl1.PageCount-1].Align:=alClient;
HistoriChat[PageControl1.PageCount-1].owner:=Page[PageControl1.PageCount-1];


Fenix   (2006-03-14 17:18:00) [8]

Еще возникла проблемка... я сделал что бы отправленные сообщения были красного цвета, а принятые синего, но когда я меняю шрифт у RichEdit'а, то у меня сбиваются все цвета.... Посоветуйте как можно это избежать....


clickmaker   (2006-03-14 17:12:00) [9]


> Fenix ©   (14.03.06 17:10) [8]

ну сделай владельцем не PageControl, а TabSheet. Это даже логичней


Fenix   (2006-03-14 17:10:00) [10]

нет закрытие чата означает удаление одной страницы из PageControl. Просто у меня на страницах открываються разные контакты....


clickmaker   (2006-03-14 17:03:00) [11]


> Fenix ©   (14.03.06 16:54) [6]

если закрытие чата означает удаление PageControl, то проще через Owner.


Fenix   (2006-03-14 16:54:00) [12]

Я разрабатываю клиент ICQ, и у меня это создаються окна чатов, на PAgeControl и пользователь может в любое время закрыть чат... Что посоветуете? просто если через Owner, то по идее меньше кода будет, но что больше подходит для моей задачи?


clickmaker   (2006-03-14 16:48:00) [13]


> А как мне лучше сдалать???

Принудительный Free обычно делают для недолгоживущих объектов. Если у тебя контролы используются вплоть до выхода из проги, то смысла нет, лучше через Owner


Fenix   (2006-03-14 16:14:00) [14]


> если в качестве Owner в конструктор передашь, то освободит.
>  А Parent - не владелец, а просто окно-контейнер

А как мне лучше сдалать???
используя Owner? или все по отдельности освобождать?
вот как щас у меня:

HistoriChat[PageControl1.PageCount-1].Free;
mess[PageControl1.PageCount-1].Free;
Page[PageControl1.PageCount-1].Free;
Splitter[PageControl1.PageCount-1].Free;

со Splitter все работает СПС :)


clickmaker   (2006-03-14 15:48:00) [15]


> И еще вопрос. Т.к. у меня указан Page[PageControl1.PageCount-
> 1] в виде предка, то если уничтожу его, то и все что на
> нем находиться тоже освободит память?

если в качестве Owner в конструктор передашь, то освободит. А Parent - не владелец, а просто окно-контейнер


> Да, но как мне привязать их?

один эдит alTop, другой alClient, например. Сплиттер - alTop


Fenix   (2006-03-14 15:37:00) [16]

Да, но как мне привязать их?

вот код создания моих RichEdit
HistoriChat[PageControl1.PageCount-1]:=Trichedit.Create(self);
HistoriChat[PageControl1.PageCount-1].Parent := Page[PageControl1.PageCount-1];
HistoriChat[PageControl1.PageCount-1].Align:=alClient;
mess[PageControl1.PageCount-1]:=Trichedit.Create(self);
mess[PageControl1.PageCount-1].Parent := Page[PageControl1.PageCount-1];
mess[PageControl1.PageCount-1].Align:=alClient;

Как мне прописать туда TSplitter?

И еще вопрос. Т.к. у меня указан Page[PageControl1.PageCount-1] в виде предка, то если уничтожу его, то и все что на нем находиться тоже освободит память?


Джо   (2006-03-14 15:31:00) [17]

TSplitter?


Наверх

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