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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.08.2008, 09:15   #1
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию Если текст выделен

Помогите с RichEdit. Если текст выделен то кнопка Copy должна быть доступна.
Так попробовалЖ
Код:
procedure TForm1.Copy1Click(Sender: TObject); 
begin 
if RichEdit1.SelLength>0 then 
Copy1.Enabled:=True; 
RichEdit1.CopyToClipboard; 
end;
не прокатывает

И если в буфере обмена есть текст то Paste1.Enabled:=True;
Если же нет ничего то False.
Shouldercannon вне форума Ответить с цитированием
Старый 10.08.2008, 09:50   #2
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Попробуйте так:
Код:
// copy
procedure TForm1.Button1Click(Sender: TObject);
begin
   RichEdit1.CopyToClipboard;
end;

// paste
procedure TForm1.Button2Click(Sender: TObject);
begin
   RichEdit1.SelText := Clipboard.asText;
end;

// Лучше на OnIdle повесить 
procedure TForm1.Timer1Timer(Sender: TObject);
begin
   Button1.Enabled := RichEdit1.SelLength > 0;
   Button2.Enabled := length(Clipboard.AsText) > 0;
end;
alexBlack вне форума Ответить с цитированием
Старый 10.08.2008, 10:14   #3
NikLik
Форумчанин
 
Аватар для NikLik
 
Регистрация: 22.11.2007
Сообщений: 224
По умолчанию

Попробуй так.
Вложения
Тип файла: rar RichEdit.rar (6.6 Кб, 23 просмотров)
NikLik вне форума Ответить с цитированием
Старый 11.08.2008, 20:26   #4
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Вроде бы всё утряслось, но снова ошибка. После того как запустил свою программу делаю PrintScreen, после чего запускаю PhotoShop и на тебе моя программа говорит Cannon open clipboard аж сразу два раза вылетает.
Shouldercannon вне форума Ответить с цитированием
Старый 11.08.2008, 22:13   #5
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Лучше воспользуйтесь советом от NikLik.
------------------------------------------------
Ну или таймер выключайте, когда приложение теряет автивность -
обрабатывайте события Application.OnActivate / Application.OnDeactivate
alexBlack вне форума Ответить с цитированием
Старый 12.08.2008, 17:09   #6
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Снова проблема. У меня ещё есть процедупы в private и они конфликтуют с новыми.
Код:
private
    SessionEnding: Boolean;
  procedure WMQueryEndSession(var Message: TMessage); message WM_QUERYENDSESSION;
  function AppHook(var msg: TMessage): boolean;
  procedure wmActivate (var Msg:TWMACTIVATE);
  message wm_Activate;

  FNextClipboardViewer: HWND;
  procedure WMChangeCBChain(var Msg: TWMChangeCBChain); message WM_CHANGECBCHAIN;
  procedure WMDrawClipboard(var Msg: TWMDrawClipboard); message WM_DRAWCLIPBOARD;
    { Private declarations }
  public
    { Public declarations }
  end;
[Error] Unit1.pas(232): Field definition not allowed after methods or properties

и так
Код:
private
    SessionEnding: Boolean;
    FNextClipboardViewer: HWND;
  procedure WMQueryEndSession(var Message: TMessage); message WM_QUERYENDSESSION;
  function AppHook(var msg: TMessage): boolean;
  procedure wmActivate (var Msg:TWMACTIVATE);
  message wm_Activate;
  procedure WMChangeCBChain(var Msg: TWMChangeCBChain); message WM_CHANGECBCHAIN;
  procedure WMDrawClipboard(var Msg: TWMDrawClipboard); message WM_DRAWCLIPBOARD;
    { Private declarations }
  public
    { Public declarations }
  end;
[Error] Unit1.pas(232): Unsatisfied forward or external declaration: 'TForm1.WMChangeCBChain'

Как я их местами не менял не пускает и всё.

Последний раз редактировалось Shouldercannon; 12.08.2008 в 18:31.
Shouldercannon вне форума Ответить с цитированием
Старый 12.08.2008, 18:12   #7
NikLik
Форумчанин
 
Аватар для NikLik
 
Регистрация: 22.11.2007
Сообщений: 224
По умолчанию

каким образом конфликтует?
У меня всё отлично скомпилировалось:
Код:
type
  TForm1 = class(TForm)
  private
    SessionEnding: Boolean;
    FNextClipboardViewer: HWND;
    procedure WMChangeCBChain(var Msg: TWMChangeCBChain); message
      WM_CHANGECBCHAIN;
    procedure WMDrawClipboard(var Msg: TWMDrawClipboard); message
      WM_DRAWCLIPBOARD;
    procedure WMQueryEndSession(var Message: TMessage); message
      WM_QUERYENDSESSION;
    function AppHook(var msg: TMessage): boolean;
    procedure wmActivate(var Msg: TWMACTIVATE); message wm_Activate;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure tform1.WMChangeCBChain(var Msg: TWMChangeCBChain);
begin
end;

procedure tform1.WMDrawClipboard(var Msg: TWMDrawClipboard);
begin
end;

procedure tform1.WMQueryEndSession(var Message: TMessage);
begin
end;

procedure tform1.wmActivate(var Msg: TWMACTIVATE);
begin
end;

function tform1.AppHook(var msg: TMessage): boolean;
begin
end;

end.
Сначала должны объявляться переменные, затем--процедуры и функции

Последний раз редактировалось NikLik; 12.08.2008 в 23:00.
NikLik вне форума Ответить с цитированием
Старый 12.08.2008, 18:34   #8
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Прошу прощения я забыл написать две процедуры. Простите за невнимательность.

Теперь программа ругается если вместе с текстом в буфере идёт картинка Cannot open clipboard.

Последний раз редактировалось Stilet; 13.08.2008 в 08:44.
Shouldercannon вне форума Ответить с цитированием
Старый 12.08.2008, 22:55   #9
NikLik
Форумчанин
 
Аватар для NikLik
 
Регистрация: 22.11.2007
Сообщений: 224
По умолчанию

Хм...
Небольшой пример, думаю ты разберёшься:
Код:
if clipboard.HasFormat(CF_TEXT) then form1.Caption:=clipboard.AsText;
NikLik вне форума Ответить с цитированием
Старый 13.08.2008, 15:04   #10
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
Печаль

Не совсем понимаю зачем текст сидящий в буфере выводить в заголовок формы? Если так дальше будет, то придётся перейти на
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
RichEdit1.CopyToClipboard;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
RichEdit2.PasteFromClipboard;
end;
так не хочется этого.

Последний раз редактировалось Shouldercannon; 13.08.2008 в 15:38.
Shouldercannon вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 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