| imho.ws |
![]() |
|
|
|||||||
|
Сообщения:
Перейти к новому /
Последнее
|
Опции темы |
|
|
# 1 | |
|
Banned
Регистрация: 04.09.2002
Адрес: В сети ;)
Сообщения: 783
![]() ![]() ![]() ![]() |
Обнуление RichEdit.Text через процедуру с параметрами (Delphi)
У меня есть 8 форм типа RichEdit. Хочу создать несколько кнопок, по нажатию которой текст в сразу нескольких формах обнулялся. Ясно, что можно сделать, например, так:
Код:
RichEdit.Text:=''; Код:
Procedure Rev(var a:String; b:String);
begin
a:='';
b:='';
end;
procedure TForm1.Button4Click;
begin
Rev(RichEdit1.Text, RichEdit2.Text)
end;
Цитата:
|
|
|
|
|
|
# 3 |
|
Advanced Member
Регистрация: 09.03.2004
Адрес: толстозадая Москва
Сообщения: 498
![]() ![]() ![]() ![]() |
Interceptor
Во-первых, для обнуления TRichEdit нужно использовать его метод Clear. Например RichEdit1.Clear. Во вторых, естественнов том виде, в котором ты написал процедуру, компилятор будет тебя ругать нехорошими словами, т.к. у тебя идет не совпадение типов. Если использовать твою процедуру, то можно написать так Rev(RichEdit1.Lines[номер строки], RichEdit2.Lines[номер строки]), но лучше, все-таки, чистить через Clear. Вот например процедура, которая найдет на указанной форме все ричи и очистит их: procedure ClearReaches(fm: TForm); var i: Cardinal; begin for i:=0 to fm.ControlCount-1 do if fm.Controls[i].ClassNameIs('TRichEdit') then (fm.Controls[i] as TRichEdit).Clear; end; procedure TForm1.Button1Click(Sender: TObject); begin ClearReaches(Form1); end; |
|
|
|
|
# 4 | ||
|
Banned
Регистрация: 04.09.2002
Адрес: В сети ;)
Сообщения: 783
![]() ![]() ![]() ![]() |
ЕЖ
Попытался сделать как ты сказал: Код:
Procedure Rev(var a:PString; b:PString; c :PString);
begin
a:=nil;
b:=nil;
c:=nil;
end;
procedure TForm1.Button4Click(Sender: PObj);
begin
Rev(RichEdit1.Text@, RichEdit2.Text@, RichEdit3.Text@);
end;
/7y3uK Цитата:
Тем более, что типы у меня совпадают: просто я юзаю не VCL библиотеку, а её замену. И там RichEdit.Text имеет тип String. Цитата:
|
||
|
|
|
|
# 5 |
|
Advanced Member
Регистрация: 09.03.2004
Адрес: толстозадая Москва
Сообщения: 498
![]() ![]() ![]() ![]() |
Нет, я не понимаю... а что нет метода Clear? не может такого быть.
procedure ClrRich(a,b: TRichEdit); begin a.Clear; b.Clear; end; procedure TForm1.Button1Click(Sender: TObject); begin ClrRich(RichEdit1,RichEdit2); end; А так попробуй у себя в коде из топика в процедуре VAR стереть, и должно все заработать. |
|
|
|
|
# 6 | |
|
Banned
Регистрация: 04.09.2002
Адрес: В сети ;)
Сообщения: 783
![]() ![]() ![]() ![]() |
/7y3uK
Цитата:
|
|
|
|
|
|
# 7 |
|
::VIP::
Регистрация: 19.03.2004
Сообщения: 1 329
![]() ![]() ![]() ![]() |
Interceptor
Я как раз и имел введу то, что вы сделали с /7y3uK в последних двух постах: передавать в процедуру указатель на сам RichEdit, а не на RichEdit1.Text. Когда ты ставишь var ("работать с реальными переменными"), ты фактически передаешь процедуре указатель на объект TRichEdit, а в процедуре вызываешь его метод очистки. |
|
|