Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Делим строку на символы, практически


Автор: 095 3.11.2007, 14:36
Есть кучка полей Edit1 (width=15, !!MAXLENGTH=1!!) в одну строчку:
[  ][  ][  ][  ][  ][  ][  ][  ][  ][  ][  ][  ][  ][  ]

Подскажите, как сделать вставку (клавиша ctrl+V) 14ти симолов строкой, чтобы каждый символ попал в свое поле??

(это как ввод рег. ключа при установке программы)

Зачем и на*: фишак нужен для бланков сообщений о госрегистрации, если кто знает (поля ОГРН, ИНН, КПП)

Автор: Alexeis 3.11.2007, 15:06
Сделать обработчик OnMouseDown и в нем проверять, если комбинация ctrl+V и в буфере обмена находиться нужная строка, то автоматически заполнять эти строки, но ИМХО для таких целей лучше лучше использовать TMaskEdit вместо TEdit.

Автор: 095 3.11.2007, 16:32
А как узнать достигли ли символы MaxLength или нет? и просто сделать SetFocus

Объясните глупому, мож быть такой способ чудом получится и с ctrl+V??


Автор: ivan219 3.11.2007, 17:50
Цитата(095 @  3.11.2007,  16:32 Найти цитируемый пост)
А как узнать достигли ли символы MaxLength или нет? и просто сделать SetFocus

Код

if Length(S) = MaxLength then ....

Автор: Alexeis 3.11.2007, 17:58
Цитата(095 @  3.11.2007,  16:32 Найти цитируемый пост)
А как узнать достигли ли символы MaxLength или нет?

Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, clipbrd;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    procedure Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if (ssCtrl in Shift) and (Key = ord('V'))
  then
     if (Length(clipboard.astext) > (Sender as TEdit).MaxLength)
        and not ((Sender as TEdit).MaxLength = 0)
     then
       ShowMessage('текст длинне максимально допустимого');
end;

end.



Автор: 095 3.11.2007, 18:14
Всё волшебно, Спасибо! ...... smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)