![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Посмотрите пожалуйста,по нажатию на конпку программа сканирует файлы/папки в своей директории,и выводит названия в ричедит. Если встречается папка то она выделяется жирным.
Но у меня почемутои папки и файлы выделяются,и еще,если после того как все папки показались,попробовать просто написать в этот ричедит,то написанный текст жирный.хотя жиирность задаю вродебы только к выделенной области Код:
procedure TForm1.Button1Click(Sender: TObject);
var sr: TSearchRec;
x,strt,lengt:integer;
begin
RichEdit1.lines.Add('');
x:= RichEdit1.Lines.Count;
if FindFirst(ExtractFilePath(ParamStr(0))+'\*.*', faAnyFile, sr) = 0 then
begin
repeat
if FileExists(sr.Name) then lengt:=length(sr.Name);
strt:=Length(RichEdit1.Text); //запоминаем позицию с которой выделять.
RichEdit1.Lines[x]:=RichEdit1.Lines[x]+ (sr.Name)+' ';
if DirectoryExists(sr.Name) then //если папка то делаем её жирной
begin
//ShowMessage(sr.Name);
RichEdit1.SelStart:=strt;
RichEdit1.SelLength:=lengt;
RichEdit1.SelAttributes.Style:= [fsBold];
end;
until FindNext(sr) <> 0;
FindClose(sr);
end;
end; |
|
#2
|
||||
|
||||
|
Примерно так:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
sr : TSearchRec;
Len : Integer;
begin
Len := 0;
RichEdit1.Lines.Clear;
if FindFirst(ExtractFilePath(ParamStr(0)) + '\*.*', faAnyFile, sr) = 0 then
begin
repeat
if sr.Attr and faDirectory <> 0 then
RichEdit1.SelAttributes.Style := [fsBold]
else
RichEdit1.SelAttributes.Style := [];
RichEdit1.Lines.Add(sr.Name);
until FindNext(sr) <> 0;
FindClose(sr);
end;
RichEdit1.Lines.Add('');
RichEdit1.Lines.Add('Сканирование завершено.');
end;Последний раз редактировалось angvelem, 14.06.2011 в 23:05. |
|
#3
|
|||
|
|||
|
не такой способ не подходит.
надо чтоб в строчку имена писались. |
|
#4
|
||||
|
||||
|
Не смеши, замени RichEdit1.Lines.Add(sr.Name) на то, что было у тебя. А свой бредовый способ выделения выкинь.
|
|
#5
|
|||
|
|||
|
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
sr: TSearchRec;
i:integer;
sDir:array of array [0..1] of Cardinal;
begin
RichEdit1.Clear;
if (FindFirst(ExtractFilePath(ParamStr(0))+'\*.*', faAnyFile, sr) = 0) then
begin
repeat
RichEdit1.Text:=RichEdit1.Text+sr.Name+' ';
if sr.Attr and faDirectory <> 0 then //если папка то делаем её жирной
begin
SetLength(sDir,Length(sDir)+1);
sDir[Length(sDir)-1,0]:=length(sr.Name);
sDir[Length(sDir)-1,1]:=length(RichEdit1.Text)-length(sr.Name)-1;
end;
until FindNext(sr) <> 0;
for i:=0 to Length(sDir)-1 do
begin
RichEdit1.SelStart:=sDir[i,1];
RichEdit1.SelLength:=sDir[i,0];
RichEdit1.SelAttributes.Style := [fsBold];
end;
FindClose(sr);
sDir:=nil;
end;
end; |
|
#6
|
||||
|
||||
|
Слишком усложнёно, смотри выше.
|
|
#7
|
|||
|
|||
|
Цитата:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
sr : TSearchRec;
Len : Integer;
begin
Len := 0;
if FindFirst(ExtractFilePath(ParamStr(0)) + '\*.*', faAnyFile, sr) = 0 then
begin
repeat
RichEdit1.Text:= RichEdit1.Text+ sr.Name+' ';
if sr.Attr and faDirectory <> 0 then
begin
RichEdit1.SelStart:=Length(RichEdit1.Text)-length(sr.Name)-2;
RichEdit1.SelLength:=Length(sr.Name);
RichEdit1.SelAttributes.Style := [fsBold];
end;
until FindNext(sr) <> 0;
FindClose(sr);
end;
RichEdit1.Lines.Add('');
end;всё прежнее форматирование сбрасывается( Janom спс работает) Последний раз редактировалось Snake22, 18.06.2011 в 16:23. |
|
#8
|
|||
|
|||
|
ага,врубился,это оказывается при добавлени текста с сохранением предыдущего, форматирование сбрасывается!!
richedit1.text:=richedit1.text+'text'; блиин! можно както сохранить форматирование? а то если нельзято это пипец(( |
|
#9
|
||||
|
||||
|
Цитата:
Форматирование добавляется к строке или выделенному фрагменту. При использовании Код:
RichEdit1.Text := RichEdit1.Text + sr.Name + ' '; Код:
procedure TForm1.Button2Click(Sender: TObject);
type
TPos = TPoint;
var
sr : TSearchRec;
I : Integer;
fp : array of TPos;
begin
RichEdit1.Lines.Clear;
I := 0;
if FindFirst(ExtractFilePath(ParamStr(0)) + '\*.*', faAnyFile, sr) = 0 then
with RichEdit1.SelAttributes do
begin
repeat
if sr.Attr and faDirectory <> 0 then
begin
inc(I);
SetLength(fp, I);
fp[I - 1].X := Length(RichEdit1.Text);
fp[I - 1].Y := Length(sr.Name);
end;
RichEdit1.Text := RichEdit1.Text + sr.Name + ' ';
until FindNext(sr) <> 0;
FindClose(sr);
for I := 0 to Length(fp) - 1 do
begin
RichEdit1.SelStart := fp[i].X;
RichEdit1.SelLength := fp[i].Y;
Style := [fsBold];
Color := clRed;
end;
RichEdit1.Lines.Add('');
RichEdit1.Lines.Add('Сканирование завершено.');
end;
end;Последний раз редактировалось angvelem, 18.06.2011 в 23:19. |
|
#10
|
|||
|
|||
|
да я чёто разочаровался( прост планирую еще много другого текста в ричедит вводить и там много форматирования должно быть,а если форматирование все время слетает при добавлении текста то не подходит ричедит,буду с веббровсером химичить тогда наверное.
|
|
#11
|
||||
|
||||
|
Планируй форматирование для уже готовой строки и проблемы исчезнут.
|
|
#12
|
|||
|
|||
|
нашел способ как добалвять без потери предыдущего форматирования.
посылаем сообщение Код:
SendMessage(RichEdit1.Handle, EM_REPLACESEL, 0, integer(PCHAR('Текст!')));может кому пригодится =) |