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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.08.2008, 15:52   #11
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Если текст выделен то кнопка Copy должна быть доступна.
Яб делал так:
Код:
procedure TForm1.RichEdit1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
 Button1.Enabled:=RichEdit1.SelLength<>0;
end;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.08.2008, 18:02   #12
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,898
По умолчанию

Спасибо уже лучше не ругается если в буфере текст+картинка. Теперь осталось разрулить, если буфер непуст то Paste1.Enabled. Попробую на старом примере отработать, но дополнительные варианты не помешали бы.
Нет не получается со старым вариантом. Может сделать это в четыре процедуры:
Copy1.Enabled
Код:
procedure TForm1.RichEdit1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
Copy1.Enabled:=RichEdit1.SelLength<>0;
end;
Copy
Код:
RichEdit1.CopyToClipboard;
Paste1.Enabled
???
Paste
Код:
procedure TForm1.Paste1Click(Sender: TObject);
begin
RichEdit1.Perform(WM_PASTE, 0, 0);
end;

Последний раз редактировалось Shouldercannon; 13.08.2008 в 20:03.
Shouldercannon вне форума Ответить с цитированием
Старый 14.08.2008, 13:56   #13
NikLik
Форумчанин
 
Аватар для NikLik
 
Регистрация: 22.11.2007
Сообщений: 224
По умолчанию

Цитата:
Сообщение от Shouldercannon Посмотреть сообщение
Не совсем понимаю зачем текст сидящий в буфере выводить в заголовок формы?
Цитата:
Сообщение от NikLik Посмотреть сообщение
Хм...
Небольшой пример, думаю ты разберёшься:
Код:
...
Что конкретно не получается "со старым вариантом"?

Вот полностью рабочий проект(во всяком случае, я глюков не обнаружил) с реализацией того, что ты просил.
P.S. Посмотри на события для Form1 и RichEdit1, не забудь сделать также в своём проекте.(просто на всякий случай напоминаю)
Вложения
Тип файла: rar RichEdit.rar (6.2 Кб, 7 просмотров)

Последний раз редактировалось NikLik; 14.08.2008 в 15:03.
NikLik вне форума Ответить с цитированием
Старый 14.08.2008, 14:45   #14
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,898
По умолчанию

Теперь вроде не ругается. буду тестировать дальше.
Цитата:
P.S. Посмотри на события для Form1 и RichEdit1, не забудь сделать также в своём проекте.
В старом и вновом ваших проектах я это всё переписывал до мельчайших подробностей.

Последний раз редактировалось Shouldercannon; 14.08.2008 в 14:52.
Shouldercannon вне форума Ответить с цитированием
Старый 14.08.2008, 16:03   #15
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,898
Радость

Сдела проект посложнее с ещё одним Copy и Cut. Запутался что к чему сначала вроде нормально работает потом в RichEdit1 при выделенном тексте не появляется менюшка.
Вложения
Тип файла: rar RichEdit.rar (6.7 Кб, 9 просмотров)
Shouldercannon вне форума Ответить с цитированием
Старый 14.08.2008, 16:29   #16
NikLik
Форумчанин
 
Аватар для NikLik
 
Регистрация: 22.11.2007
Сообщений: 224
По умолчанию

Хм...попробуй сам вызывать выпадение менюшки.
Код:
procedure TForm1.RichEdit1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
  p: TPoint;
begin
  Copy1.Enabled := boolean(RichEdit1.SelLength);
  if Button = mbRight then
  begin
    p.x := x;
    p.y := y;
    p := ClientToScreen(p);
    PopupMenu1.Popup(p.x, p.y);
  end;
end;
Хотя вариант конечно не очень хороший

Последний раз редактировалось NikLik; 14.08.2008 в 16:38.
NikLik вне форума Ответить с цитированием
Старый 14.08.2008, 18:03   #17
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,898
По умолчанию

С менюшками всё нормально. Rich1 после нескольких операций с текстом, перестаёт показывать меню при выделенном тексте.
Shouldercannon вне форума Ответить с цитированием
Старый 14.08.2008, 22:13   #18
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Цитата:
Сообщение от Shouldercannon Посмотреть сообщение
сначала вроде нормально работает потом в RichEdit1 при выделенном тексте не появляется менюшка.
У Вас в коде некорректное приведение типов:

Copy1.Enabled := boolean(RichEdit1.SelLength);

замените все такие приведения на сравнение:

Copy1.Enabled := RichEdit1.SelLength > 0;

Пример:
Код:
var b1, b2:boolean;
begin
   b1 := boolean(5);
   b2 := boolean(6);
   if b1 <> b2 then ShowMessage('dddd');
end;
При таком приведении и сравнении значения будут не равны хотя (казалось бы) оба true. Это сказывается на работе метода TMenuItem.SetEnable (в нем первой строчкой сравнение), поэтому менюшка иногда не появляется.
alexBlack вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Если функция ЕСЛИ не подходит Katherina_Koval Microsoft Office Excel 1 25.07.2008 19:09
TreeView, какой пункт выделен Doctor Wolf Общие вопросы Delphi 7 15.06.2008 20:27
cтранная запись формулы ЕСЛИ: "=+ЕСЛИ(..." icore2008 Microsoft Office Excel 4 10.04.2008 21:32
Подсветка если текст в [RR]Reaction Общие вопросы Delphi 12 09.04.2008 17:47
RichEdit1 если текст найден надо чтоб он выделился в синий цвет xGroupers Общие вопросы Delphi 7 30.03.2008 13:56