Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2017.10.22;
Скачать: CL | DM;

Вниз

Подскажите как реализовать ввод текста   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.005 c
2-1448552760
SitiZen
2015-11-26 18:46
2017.10.22
Формула


2-1449055785
Анна
2015-12-02 14:29
2017.10.22
PageControl1 не отображает названия Sheet в windows 7


2-1448453729
lamok
2015-11-25 15:15
2017.10.22
Подскажите как реализовать ввод текста


15-1412610938
Kerk
2014-10-06 19:55
2017.10.22
FixInsight for Delphi


2-1446125074
NitroTek
2015-10-29 16:24
2017.10.22
Шаблоны