![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Создание разделителя между 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?