Форум: "Начинающим";
Текущий архив: 2006.03.26;
Скачать: [xml.tar.bz2];
ВнизСоздание разделителя между RichEdit ами. Найти похожие ветки
← →
Fenix © (2006-03-14 15:29) [0]Доброго времени суток.
Подскажите плз как можзно создать разделитель между двумя RichEdit"ами, притом что у них Align=Client, и они создаються динамически. Мне нужно, что бы можно было перетаскиванием менять им размеры (перетаскивание вертикально). Что то вроде как в Проводнике (между деревом каталогов и рабочим окном), но мне надо горизонтально так сделать.
← →
Джо © (2006-03-14 15:31) [1]TSplitter?
← →
Fenix © (2006-03-14 15:37) [2]Да, но как мне привязать их?
вот код создания моих 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] в виде предка, то если уничтожу его, то и все что на нем находиться тоже освободит память?
← →
clickmaker © (2006-03-14 15:48) [3]
> И еще вопрос. Т.к. у меня указан Page[PageControl1.PageCount-
> 1] в виде предка, то если уничтожу его, то и все что на
> нем находиться тоже освободит память?
если в качестве Owner в конструктор передашь, то освободит. А Parent - не владелец, а просто окно-контейнер
> Да, но как мне привязать их?
один эдит alTop, другой alClient, например. Сплиттер - alTop
← →
Fenix © (2006-03-14 16:14) [4]
> если в качестве 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 16:48) [5]
> А как мне лучше сдалать???
Принудительный Free обычно делают для недолгоживущих объектов. Если у тебя контролы используются вплоть до выхода из проги, то смысла нет, лучше через Owner
← →
Fenix © (2006-03-14 16:54) [6]Я разрабатываю клиент ICQ, и у меня это создаються окна чатов, на PAgeControl и пользователь может в любое время закрыть чат... Что посоветуете? просто если через Owner, то по идее меньше кода будет, но что больше подходит для моей задачи?
← →
clickmaker © (2006-03-14 17:03) [7]
> Fenix © (14.03.06 16:54) [6]
если закрытие чата означает удаление PageControl, то проще через Owner.
← →
Fenix © (2006-03-14 17:10) [8]нет закрытие чата означает удаление одной страницы из PageControl. Просто у меня на страницах открываються разные контакты....
← →
clickmaker © (2006-03-14 17:12) [9]
> Fenix © (14.03.06 17:10) [8]
ну сделай владельцем не PageControl, а TabSheet. Это даже логичней
← →
Fenix © (2006-03-14 17:18) [10]Еще возникла проблемка... я сделал что бы отправленные сообщения были красного цвета, а принятые синего, но когда я меняю шрифт у RichEdit"а, то у меня сбиваются все цвета.... Посоветуйте как можно это избежать....
← →
Fenix © (2006-03-14 17:21) [11]Мне пишеться что св-во 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];
← →
clickmaker © (2006-03-14 17:38) [12]
> Fenix © (14.03.06 17:21) [11]
внимательней читай clickmaker © (14.03.06 15:48) [3]
← →
Fenix © (2006-03-14 17:44) [13]с owner разобрался :)
теперь остался вопрос про сохранение форматированного текста....
Fenix © (14.03.06 17:18) [10]
← →
clickmaker © (2006-03-14 17:54) [14]
> Fenix © (14.03.06 17:44) [13]
SelStart, SelLength
SelAttributes.Color
← →
Fenix © (2006-03-14 18:02) [15]не я так делаю..... проблема как я сказал заключаеться в том, что после изменения размера шрифта, у меня все дывеления сбиваються (заного прорисовывать как то неохото...) и у меня идет прорисовка при добавлении нового сообщения. Просто если будет много текста в RichEdit, то его прорисвка может занять много времени.... Мне интересно как можно сохранить форматирование, если я просто пишу:
HistoriChat[PageControl1.ActivePageIndex].Font.Size:=FontDialog1.Font.Size;
HistoriChat[PageControl1.ActivePageIndex].Font.FontAdapter:=FontDialog1.Font.Fon tAdapter;
По идее меняеться только размер и тип шрифта, но почему сбиваеться цветовая раскраска непонятно :(
← →
clickmaker © (2006-03-14 18:22) [16]
> Fenix © (14.03.06 18:02) [15]
ну так работает рич эдит... нельзя в лоб ему менять шрифт. Только через SelAttributes. Тем более, что "если будет много текста в RichEdit, то его прорисвка может занять много времени".
← →
Fenix © (2006-03-14 18:42) [17]все я понял алгоритм увеличения шрифта и изменение его стиля. Еще меня интересует как снять выделение?
Richedit1.SlectAll;//Это что бы выделить весь текст
Richedtt1.SelLength:=0;// что бы снять выделение.
Но потом у меня он не окрашивает следующую строку. я пишу:
Richedit1.SelAttributes.Color:=clBlue;
Richedit1.Lines.Add("Сообщение от " +Form1.Caption);
Richedit1.SelAttributes.Color:=clBlue;
Richedit1.Lines.Add(Message);
Вторую строку он окрашивает в синий, а первую нет(
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.03.26;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.05 c