Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 Copy Paste текста с Tab в несколько TEdit  [new]
Valery_B
Member

Откуда: Москва
Сообщений: 1827
Добрый день,

Есть текст, разделённый Tab (например - из Excel)
автор
John <tab> Smith

На форме есть 2 контрола TEdit или аналог из DevExpress
Я хочу сделать так, что бы при попытке вставить текст в Edit1 вставлялся "John", а в Edit2 "Smith" автоматически.

Кто нибудь делал что нибудь подобное ?
7 дек 18, 11:26    [21756778]     Ответить | Цитировать Сообщить модератору
 Re: Copy Paste текста с Tab в несколько TEdit  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 29291

07.12.2018 11:26, Valery_B пишет:
> Я хочу сделать так, что бы при попытке вставить текст в Edit1 вставлялся "John", а в Edit2 "Smith" автоматически.

автоматически не получится.

тут программист нужен (С)

Posted via ActualForum NNTP Server 1.5

7 дек 18, 11:59    [21756824]     Ответить | Цитировать Сообщить модератору
 Re: Copy Paste текста с Tab в несколько TEdit  [new]
DarkMaster
Member

Откуда: Donetsk,Ukraine
Сообщений: 6127
Valery_B,

Возьми текст из буфера, пореж на строки по разделителю и вставляй, куда тебе там нужно.
7 дек 18, 12:00    [21756827]     Ответить | Цитировать Сообщить модератору
 Re: Copy Paste текста с Tab в несколько TEdit  [new]
Valery_B
Member

Откуда: Москва
Сообщений: 1827
DarkMaster,

Как бы я его не резал, когда в пользователь нажмёт CTRL+V вставиться то, что в буфере.
7 дек 18, 12:12    [21756848]     Ответить | Цитировать Сообщить модератору
 Re: Copy Paste текста с Tab в несколько TEdit  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 29291

07.12.2018 12:12, Valery_B пишет:

> Как бы я его не резал, когда в пользователь нажмёт CTRL+V вставиться то, что в буфере.

именно поэтому, тут нужен программист.

Posted via ActualForum NNTP Server 1.5

7 дек 18, 12:16    [21756856]     Ответить | Цитировать Сообщить модератору
 Re: Copy Paste текста с Tab в несколько TEdit  [new]
Valery_B
Member

Откуда: Москва
Сообщений: 1827
Мимопроходящий
именно поэтому, тут нужен программист.

А ты программист ?
Можешь показать, что надо для этого написать ?
7 дек 18, 12:20    [21756867]     Ответить | Цитировать Сообщить модератору
 Re: Copy Paste текста с Tab в несколько TEdit  [new]
zinpub
Member

Откуда:
Сообщений: 294
Valery_B
Мимопроходящий
именно поэтому, тут нужен программист.

А ты программист ?
Можешь показать, что надо для этого написать ?


Clipboard.AsText:= '';
7 дек 18, 12:28    [21756888]     Ответить | Цитировать Сообщить модератору
 Re: Copy Paste текста с Tab в несколько TEdit  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 29291

07.12.2018 12:20, Valery_B пишет:

МП>> именно поэтому, тут нужен программист.
> А ты программист ?

нет

> Можешь показать, что надо для этого написать ?

нет

Posted via ActualForum NNTP Server 1.5

7 дек 18, 12:29    [21756891]     Ответить | Цитировать Сообщить модератору
 Re: Copy Paste текста с Tab в несколько TEdit  [new]
zinpub
Member

Откуда:
Сообщений: 294
А лучше так...

procedure TzEdit.WndProc(var Message: TMessage);
begin
  if Message.Msg = WM_PASTE then
  begin
    // Режем , вставляем итд Clipboard.AsText
  end
  else
    inherited;
7 дек 18, 12:39    [21756906]     Ответить | Цитировать Сообщить модератору
 Re: Copy Paste текста с Tab в несколько TEdit  [new]
Valery_B
Member

Откуда: Москва
Сообщений: 1827
zinpub,

Наверное, надо включать эту механику при нажатом Shift и добавит интерфейс для контролов, что бы вставлялся не только в TEdit
А пока получилось так (Делфи7):
+
  TEdit=class(StdCtrls.TEdit)
  public
   function FindNextEdit(CurrentEdit:TEdit):TEdit;
   procedure PasteDelimetedText(List:TStringList);
   procedure PasteText;
   procedure WndProc(var Message: TMessage); override;
  end;

...

function TEdit.FindNextEdit(CurrentEdit: TEdit): TEdit;
var
 x:Integer;
begin
Result:=nil;
 If Assigned(CurrentEdit) and Assigned(CurrentEdit.Parent) then
  begin
   for x:=CurrentEdit.ComponentIndex to CurrentEdit.Parent.ComponentCount-1 do
     if (CurrentEdit.Parent.Components[x] is TEdit) and (CurrentEdit.Parent.Components[x]<>CurrentEdit) then
      begin
       Result:=CurrentEdit.Parent.Components[x] as TEdit;
       Exit;
      end;
  end;
end;

procedure TEdit.PasteDelimetedText(List: TStringList);
var
 X:Integer;
 AEdit:TEdit;
begin
if List.Count>0 then
 Text:=List[0];
 if List.Count>=2 then
  begin
   AEdit:=Self;
   for x:=1 to List.Count-1 do
    begin
     AEdit:=FindNextEdit(AEdit);
     if Assigned(AEdit) then
      AEdit.Text:=List[x];
    end;
  end;
end;

procedure TEdit.PasteText;
var
 List:TStringList;
begin
 List:=TStringList.Create;
 try
  List.Delimiter:=#8;
  List.DelimitedText:=ClipBoard.AsText;
  PasteDelimetedText(List);
 finally
  List.Free;
 end;

end;

procedure TEdit.WndProc(var Message: TMessage);
begin
if (Message.Msg = WM_PASTE) then
   PasteText
  else
    inherited;
end;
7 дек 18, 13:20    [21756977]     Ответить | Цитировать Сообщить модератору
 Re: Copy Paste текста с Tab в несколько TEdit  [new]
zinpub
Member

Откуда:
Сообщений: 294
Valery_B,

Можно и не плодить классы... а просто TEdit.WindowsProc:= ......
7 дек 18, 13:48    [21757019]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить