Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.02.2016, 13:28   #11
kropotkina-alice
Форумчанин
 
Аватар для kropotkina-alice
 
Регистрация: 27.10.2014
Сообщений: 594
По умолчанию

Цитата:
Сообщение от Dux Посмотреть сообщение
Мне нужно в Edit вставить текст, но перед вставкой нужно удалить из него все точки. Как отловить сам текст и момент перед вставкой из буфера?
Код:
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var p: integer;
    s: string;
begin
if ((getasynckeystate(VK_CONTROL)<>0) and (getasynckeystate(Ord('V'))<>0)) then
begin
if c.HasFormat(CF_TEXT) then
begin
Edit1.Clear;
s:=ClipBoard.AsText;
p:=Pos('.', s);
while p>0 do
begin
Delete(s,p,1);
p:=Pos('.', s);
end;
ClipBoard.AsText:=s;
end else
begin
ShowMessage('Буфер не содержит текста!');
ClipBoard.Clear;
end;
end;
end;
kropotkina-alice вне форума Ответить с цитированием
Старый 11.02.2016, 14:53   #12
Dux
Delphi Master
Форумчанин Подтвердите свой е-майл
 
Аватар для Dux
 
Регистрация: 31.03.2008
Сообщений: 803
По умолчанию

Спасибо большое, только тут есть еще вариант, когда пользователь мышкой выбирает в меню "Вставить"
Dux вне форума Ответить с цитированием
Старый 11.02.2016, 15:14   #13
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
только тут есть еще вариант, когда пользователь мышкой выбирает в меню "Вставить"
Я ж сказал:
Цитата:
допилить WndProc() - переделать реакцию на WM_PASTE
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 11.02.2016, 15:40   #14
kropotkina-alice
Форумчанин
 
Аватар для kropotkina-alice
 
Регистрация: 27.10.2014
Сообщений: 594
По умолчанию

Цитата:
Сообщение от Dux Посмотреть сообщение
Спасибо большое, только тут есть еще вариант, когда пользователь мышкой выбирает в меню "Вставить"

Код:
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if ((getasynckeystate(VK_CONTROL)<>0) and (getasynckeystate(Ord('V'))<>0)) then
MenuInsertClick(Edit1);
end;

procedure TForm1.MenuInsertClick(Sender: TObject);
var p: integer;
    s: string;
begin
if c.HasFormat(CF_TEXT) then
begin
Edit1.Clear;
s:=ClipBoard.AsText;
p:=Pos('.', s);
while p>0 do
begin
Delete(s,p,1);
p:=Pos('.', s);
end;
ClipBoard.AsText:=s;
if not (Sender is TEdit) then
Edit1.Text:=s;
end else
begin
ShowMessage('Буфер не содержит текста!');
end;
end;
kropotkina-alice вне форума Ответить с цитированием
Старый 11.02.2016, 15:41   #15
Dux
Delphi Master
Форумчанин Подтвердите свой е-майл
 
Аватар для Dux
 
Регистрация: 31.03.2008
Сообщений: 803
По умолчанию

Спасибо! Разобрался!
Dux вне форума Ответить с цитированием
Старый 11.02.2016, 16:24   #16
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
Спасибо! Разобрался!
Ну вот... А я уже пример рабочий написал...
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 11.02.2016, 16:26   #17
Dvoishnik
Форумчанин
 
Регистрация: 12.02.2011
Сообщений: 808
Подмигивание

Цитата:
Сообщение от min@y™ Посмотреть сообщение
Ну вот... А я уже пример рабочий написал...
по хвастайтесь и вы пожалуйста.
будет полезно таким как я посмотреть, поучиться.
Терпение!Дежурный экстрасенс скоро свяжется с вами!
Dvoishnik вне форума Ответить с цитированием
Старый 11.02.2016, 16:50   #18
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
по хвастайтесь и вы пожалуйста.
Ну, давай попробую.
Код:
type
  TEdit = class(StdCtrls.TEdit)
  private
    procedure PasteWithoutPoints;
  public
    procedure WndProc(var Message: TMessage); override;
  end;

  TFormMain = class(TForm)
    // блаблабла
    Edit: TEdit;
    // блаблабла
  end;

var
  FormMain: TFormMain;

implementation

// блаблабла

procedure TEdit.PasteWithoutPoints;
begin
  Clipboard.Open();
  try
    Self.SelText:= StringReplace(Clipboard.AsText, '.', '', [rfReplaceAll]);
  finally
    Clipboard.Close();
  end;
end;

procedure TEdit.WndProc(var Message: TMessage);
var
  msg: TWMPaste absolute Message;
begin
  if msg.Msg = WM_PASTE
    then begin
           PasteWithoutPoints();
           msg.Result:= 0;
         end
    else inherited;
end;

end.
Код РАБОЧИЙ! Проверил.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...

Последний раз редактировалось Аватар; 11.02.2016 в 19:22.
min@y™ вне форума Ответить с цитированием
Старый 16.02.2016, 21:08   #19
Dux
Delphi Master
Форумчанин Подтвердите свой е-майл
 
Аватар для Dux
 
Регистрация: 31.03.2008
Сообщений: 803
По умолчанию

min@y™, пытаюсь разобраться в вашем примере, но чет не выходит. Сразу подчеркивает:

type
TEdit = class(StdCtrls.TEdit)

Пишет undeclared identifier 'StdCtrls'
Dux вне форума Ответить с цитированием
Старый 16.02.2016, 21:16   #20
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Значит не находит, если не находит - значит юнит не подключен
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как сделать что бы в Edit был прозрачный текст который при введение в Edit все исчез alman12 Общие вопросы Delphi 22 09.06.2014 22:21
Задан текст, состоящий из строк произвольной длины. Обработать текст, подсчитав количество строк и отсортировав их (Паскаль) Александр_Прог Помощь студентам 3 24.03.2014 14:37
Как получить текст из Edit в переменную INT nimbler Win Api 4 05.11.2009 22:45
Как задать текст в Edit в чужом окне Artem Win Api 6 14.12.2007 19:13