Текущий архив: 2003.12.12;
Скачать: CL | DM;
Вниз
Интересные вопросы по Richedit Найти похожие ветки
← →
warman © (2003-12-01 22:14) [0]Для своего текстового редактора я использую стандартный
TRichEdit и столкнулся с некоторыми сложностями. Я начинающий
программист и прошу помощи у Вас, супер программеры! А вопросы
следующие:
1. Необходимо полностью загрузить в Richedit файл,
"невзирая" на его содержимое (.Plaintext=true), а
потом, например, подредактировав, сохранить обратно.
Такие файлы как ".exe", ".rar" и другие с кучей системных символов упорно не желают загружаються полностью (грузится
только кусок, словно загрузка прекращается, дойдя до какого-нибудь хитрого байта :). Загружаю через LoadFromFile
или LoadFromStream. Как решить эту проблему? В принципе,
не важно, будут отображаться некоторые символы или нет,
но главное, чтобы сохранялась целостность загружаемого
файла.
2. Хотелось бы сделать следующее: когда пользователь
прокручивает текст в окне RichEdit (за скролл, клавишами
вниз, END, PgDown и т.д. и т.п), или программно текст прокручивается, печатается текст или вставляется из буфера -
т.е. при любой операции с текстом, где-нибудь (например
на "caption" формы) отображалось позиция видимого
текста, например, в процентах относительно текущего количества
Lines в RichEdit. Я подозреваю, что как-то можно "поймать" индекс видимой верхней строки, или повозиться со
ScrollBar, но знаний не хватает. Помогите plz...
3. И последний вопрос. Подскажите пожалуйста способ, как более или менее быстро загрузить большой файл в RichEdit? А то при
загрузке 700-кб. файла через LoadFromFile мой P4-2.8 GHz
задумывается на 3-4 минуты...
P.S. Я понимаю, что на свете есть отличные компоненты, но
хотелось бы решить эти задачи стандартными средствами Delphi.
Если у Вас есть какие-то примеры, киньте пожалуйста на
мыло.
Заранее благодарен за любую помощь.
← →
warman © (2003-12-01 22:55) [1]В RichEdit пробовал грузить файло так:
procedure TForm1.OpenF;
begin
if open1.Execute=true then
begin
try
richedit1.Lines.LoadFromFile(open1.FileName);
except
end;
end;
end;
{procedure TForm1.OpenF;
var
InFS: TFileStream;
begin
if open1.Execute=true then
begin
RichEdit1.Perform(EM_LIMITTEXT, 2147483647 , 0);
form1.Caption:="0%";
panel1.Caption:=open1.FileName;
panel1.Hint:=open1.FileName;
InFS:=TFileStream.Create(open1.FileName,fmOpenRead);
try
richedit1.Lines.LoadFromStream(InFS);
except
end;
Opened:=true;
n8.Enabled:=true;
InFS.Free;
end;
end;}
{procedure TForm1.OpenF;
var
TheMStream : TMemoryStream;
Zero : char;
begin
if open1.Execute=true then
begin
TheMStream := TMemoryStream.Create;
TheMStream.LoadFromFile(open1.FileName);
TheMStream.Seek(0, soFromEnd);
Zero := #0;
TheMStream.Write(Zero, 1);
TheMStream.Seek(0, soFromBeginning);
Richedit1.SetSelTextBuf(TheMStream.Memory);
TheMStream.Free;
end;
end;}
← →
хз © (2003-12-01 23:00) [2]procedure TForm1.OpenF;
begin
if open1.Execute=true then
begin
try
richedit1.Lines.LoadFromFile(open1.FileName);
except
end;
end;
end;
Гениально. Смысл конструкции try...except?
← →
warman © (2003-12-01 23:21) [3]-----------------------
Смысл конструкции try...except?
-----------------------
Да просто так, хотел потом еще чего-нибудь добавить,
потенциально ошибкоопасного :) Это не главное.
Подсказал бы лучше чего-нибудь по вопросам, критиковать
любой может...
← →
хз © (2003-12-01 23:54) [4]А по вопросам подсказывать нечего. FAQ + F1 + я понимаю, что "хотелось бы решить эти задачи стандартными средствами Delphi", но эти задачи проще решать сторонними компонентами.
← →
Viktor Kushnir © (2003-12-02 08:14) [5]Хитрый байт - это наверно байт с кодом 0
← →
alena.svt © (2003-12-02 10:52) [6]Сейчас на Celeron - 600
Взяла из стандартных Demos
..\Borland\DELPHI7\Demos\Richedit\Richedit.exe
Загрузила 2,5 mb
Грузилось 6 сек.
Посмотри может у тебя какой то процесс жрет много.
← →
NikeOLD (2003-12-02 12:41) [7]
> 2. Хотелось бы сделать следующее: когда пользователь
> прокручивает текст в окне RichEdit (за скролл, клавишами
> вниз, END, PgDown и т.д. и т.п), или программно текст прокручивается,
> печатается текст или вставляется из буфера -
> т.е. при любой операции с текстом, где-нибудь (например
> на "caption" формы) отображалось позиция видимого
> текста, например, в процентах относительно текущего количества
> Lines в RichEdit. Я подозреваю, что как-то можно "поймать"
> индекс видимой верхней строки, или повозиться со
> ScrollBar, но знаний не хватает. Помогите plz...
Не используй скролл-бар RichEdit"а, возьми обычный скролл-бар и привяжи его к тексту. А вообще это тоже сложновато... Подозреваю, что без API ты не получишь результат. Но подобную задачу мне выполнять не требовалось никогда, так что могу и ошибаться :-)
← →
NikeOLD (2003-12-02 12:46) [8]
> 2. Хотелось бы сделать следующее: когда пользователь
> прокручивает текст в окне RichEdit (за скролл, клавишами
> вниз, END, PgDown и т.д. и т.п), или программно текст прокручивается,
> печатается текст или вставляется из буфера -
> т.е. при любой операции с текстом, где-нибудь (например
> на "caption" формы) отображалось позиция видимого
> текста, например, в процентах относительно текущего количества
> Lines в RichEdit. Я подозреваю, что как-то можно "поймать"
> индекс видимой верхней строки, или повозиться со
> ScrollBar, но знаний не хватает. Помогите plz...
Не используй скролл-бар RichEdit"а, возьми обычный скролл-бар и привяжи его к тексту. А вообще это тоже сложновато... Подозреваю, что без API ты не получишь результат. Но подобную задачу мне выполнять не требовалось никогда, так что могу и ошибаться :-)
← →
Ru © (2003-12-02 13:29) [9]1 существует понятие "невидимые символы" (см Word)
2 бр-р, потом подумаю
3 хз (это не ник, а сокращение)
по поводу 2: см. фак про позицию курсора и используй: RichEdit.Lines.Count; - получишь число строк 8)
Страницы: 1 вся ветка
Текущий архив: 2003.12.12;
Скачать: CL | DM;
Память: 0.49 MB
Время: 0.022 c