![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Редактирование надписей в компоненте едит [D7]
Глеб © (2012-05-05 16:58:00)Добрый день!
Почти разобрался со своей проблемой, но есть одна просьба. Сейчас мой программный код добавляет/удаляет символы, но эти действия происходят в конце компонента, как сделать так что бы можно было в любой позиции это делать? Вот код
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var n : integer;
s : string;
begin
if Key=8 then begin
Edit1.Text:=copy(Edit1.Text,1, Length(Edit1.Text)-3);
Edit1.SelStart:=Length(Edit1.Text);
end;
end;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
const
mask : set of char =['0'..'9' , 'a'..'z' , 'A'..'Z'];
begin
if not (Key in mask) then Key:=#0
else begin
Edit1.Text:=Edit1.Text + ' ,';
Edit1.SelStart:=Length(Edit1.Text) - 2;
end;
end;
KilkennyCat (2012-05-05 18:01:00) [81]
> procedure TForm1.Edit1KeyPress(Sender: TObject; var Key:
> Char);
> const
> mask : set of char =['0'..'9' , 'a'..'z' , 'A'..'Z'];
> begin
> if not (Key in mask) then Key:=#0
> else begin
> Edit1.Text:=Edit1.Text + ' ,';
> Edit1.SelStart:=Length(Edit1.Text) - 2;
> end;
> end;
достаточно
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
const
mask : set of char =['0'..'9' , 'a'..'z' , 'A'..'Z'];
begin
if not (Key in mask) then Key:=#0;
end;
и тогда не будет только в конец строки
Юрий Зотов (2012-05-05 17:37:00) [82]
> Глеб (05.05.12 17:23) [2]
См. свойства SelStart, SelLength, SelText.
Но возникает вопрос - а зачем нужен такой компонент? Не лучше ли использовать стандартный? Он такими закидонами не страдает.
Медвежонок Пятачок (2012-05-05 17:34:00) [83]это, я так понимаю, программа для пользователей с ампутированными пальцами рук?
Глеб (2012-05-05 17:23:00) [84]Все предельно просто. Мой программный код делает редактирование в конце строки едита, а мне нужно везде. т.е. если ты написал 1245 в моем едите и вспомнил, что пропустил 3 ты не сможешь вставить 3 туда куда нужно так как едет запихнет в конец 12453.
Вот мне и нужна помощь, что бы высчитывать позицию под курсором и проводить редактирование там где и положенно
Cobalt (2012-05-05 17:02:00) [85]Ты, мил человек, сначала опиши, что ты хочешь получить,
а то код активно скрывает смысл :-)