Форум: "Начинающим";
Текущий архив: 2017.10.22;
Скачать: [xml.tar.bz2];
ВнизПодскажите как реализовать ввод текста Найти похожие ветки
← →
lamok (2015-11-25 15:15) [0]Здравствуйте.
Попробую описать что нужно, а вы пожалуйста подскажите как реализовать.
Нужно: одно поле (аля мемо), в нем вводим текст и при нажатии кнопки "ввод", полоса отчеркивает, появляется цифра 2. и т.д.
Пример:
1. Первый текст
_______________
2. второй текст
Линию можно в виде рисунка, но нумерация обязательна.
Поля едит не пойдут.
← →
Ринсвинд © (2015-11-25 15:44) [1]Не мучьте юзверя. Он же может нажать Ctrl+V, Home, перейти на предыдущую строчку и т.д. Лучше дайте ему ввести весь текст в мемо, а потом отформатируйте его, добавив где нужно черточки и числа.
Ну а если все черточки очень нужны во время ввода, то разместите сверху Edit1 а снизу Memo1. Уберите у них бордюр (чтобы казалось, что они являются одним целым - BorderStyle := bsNone).
В обработчике OnKeyDown для Edit1 пишите:if Key = 13 then
begin
if (Memo1.Lines.Count > 0) then
Memo1.Lines.Add("------------------------");
Memo1.Lines.Add(IntToStr(Memo1.Lines.Count div 2 + 1) + ". " + Edit1.Text);
Edit1.Text := "";
end;
Недостаток метода - нельзя вернуться назад.
← →
Ринсвинд © (2015-11-25 15:45) [2]Пардон, ошибся: Edit1 должен быть расположен ПОД Memo1.
← →
lamok (2015-11-25 16:15) [3]Приложение будет под андройд, там будет только ввод и "ентер"!
Так же это текст по проведении по нему с лева на право надо будет перечеркнуть (зачеркнуть).
← →
sniknik © (2015-11-25 18:49) [4]TRichEdit там есть?
примерный набросок (наверняка не все учтено, копипаст так точно даже попыток нет...), если вдруг есть...procedure TForm1.FormCreate(Sender: TObject);
begin
RichEdit1.WantTabs:= true;
RichEdit1.Text := "0."#9;
end;
procedure TForm1.RichEdit1KeyPress(Sender: TObject; var Key: Char);
var
Caret: TPoint;
st: string;
begin
with TRichEdit(Sender) do begin
Caret:= CaretPos;
if Odd(Caret.Y)
then Key:= #0
else
if ((Caret.X < 3) and (GetTextLen <> 0)) or ((Caret.X = 3) and (Key in [Char(VK_BACK)]))
then Key:= #0;
if Key = Char(VK_RETURN) then
if SelStart <> GetTextLen
then Key:= #0
else begin
if GetTextLen = 0
then st:= "0"#9#13#10 + "_______________"#13#10 + "1."#9
else st:= #13#10 + "_______________"#13#10 + IntToStr(Caret.Y div 2 + 1) + "."#9;
Key:= #0;
Perform(EM_REPLACESEL, 0, integer(PChar(st)));
end;
end;
end;
procedure TForm1.RichEdit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
with TRichEdit(Sender).CaretPos do
if Odd(Y) then begin
if (Key in [VK_BACK, VK_DELETE]) then Key:= 0;
end else
if (X < 3) or ((X = 3) and (Key in [VK_BACK, VK_LEFT]))
then Key:= VK_END;
end;
← →
Игорь Шевченко © (2015-11-25 22:43) [5]
> андройд
Расстрелять!
http://lurkmore.to/%D0%A0%D0%B0%D1%81%D1%81%D1%82%D1%80%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D1%81%D0%BF%D0%B8%D1%81%D0%BE%D0%BA
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2017.10.22;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.002 c