<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=93641&amp;view=findpost&amp;p=1113487</guid>
        <pubDate>Fri, 26 May 2006 06:16:29 +0000</pubDate>
        <title>Работа с буфером обмена</title>
        <link>https://forum.sources.ru/index.php?showtopic=93641&amp;view=findpost&amp;p=1113487</link>
        <description><![CDATA[jack128: <span class="tag-color tag-color-named" data-value="purple" style="color: purple"><span class='tag-size' data-value='14' style='font-size:14pt;'>Как скопировать русский текст в буфер обмена</span></span><br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">procedure CopyStringToClipboard(const Value: String);</div><div class="code_line">const</div><div class="code_line">&nbsp;&nbsp;RusLocale = (SUBLANG_DEFAULT shl $A) or LANG_RUSSIAN;</div><div class="code_line">var</div><div class="code_line">&nbsp;&nbsp;hMem: THandle;</div><div class="code_line">&nbsp;&nbsp;pData: Pointer;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;Clipboard.Open;</div><div class="code_line">&nbsp;&nbsp;try</div><div class="code_line">&nbsp;&nbsp; &nbsp;Clipboard.AsText := Value;</div><div class="code_line">&nbsp;&nbsp; &nbsp;hMem := GlobalAlloc(GMEM_MOVEABLE, SizeOf(DWORD));</div><div class="code_line">&nbsp;&nbsp; &nbsp;try</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;pData := GlobalLock(hMem);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;try</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;DWORD(pData^) := RusLocale;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;finally</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;GlobalUnlock(hMem);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;end;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Clipboard.SetAsHandle(CF_LOCALE, hMem);</div><div class="code_line">&nbsp;&nbsp; &nbsp;finally</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;GlobalFree(hMem);</div><div class="code_line">&nbsp;&nbsp; &nbsp;end;</div><div class="code_line">&nbsp;&nbsp;finally</div><div class="code_line">&nbsp;&nbsp; &nbsp;Clipboard.Close;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">end;</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
<br>
<strong class='tag-b'>Автор: </strong> <a class='tag-url' href='http://forum.sources.ru/index.php?showuser=19443' target='_blank'>Rouse_</a>]]></description>
        <author>jack128</author>
        <category>Hello, World&#33;</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=93641&amp;view=findpost&amp;p=703412</guid>
        <pubDate>Tue, 03 May 2005 15:44:54 +0000</pubDate>
        <title>Работа с буфером обмена</title>
        <link>https://forum.sources.ru/index.php?showtopic=93641&amp;view=findpost&amp;p=703412</link>
        <description><![CDATA[Kanes: Кнопки <strong class='tag-b'>Вставить</strong> и <strong class='tag-b'>Вырезать</strong> есть практически во все приложения под Windows, вы наверное тоже хотите реализовать что-то подобное в своей программе, тогда эта тема для вас :)<br>
     <span class='tag-size' data-value='16' style='font-size:16pt;'><span class="tag-color tag-color-named" data-value="purple" style="color: purple">Буфер обмена и стандартные компоненты Delphi </span></span><br>
  Многие компоненты Delphi уже готовы к работе с буфером обмена, это касается компонентов, которые содержат какие-нибудь данные, которые пользователь может поместить в буфер обмена (например TMemo, TRichEdit и т.п.). Эти компоненты имеют методы : <div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">CutToClipboard //Вырезать в буфер обмена</div><div class="code_line">CopyToClipboard //Копировать в буфер обмена</div><div class="code_line">PasteFromClipboard //Вставить из буфера обмена</div></ol></div></div></div></div><br>
<span class='tag-size' data-value='16' style='font-size:16pt;'><span class="tag-color tag-color-named" data-value="purple" style="color: purple">Ф-ция Clipboard</span></span><br>
Для работы с буфером обмена в Delphi есть ф-ция <strong class='tag-b'>Clipboard</strong>, возвращающая экземпляр класса Clipboard, для работы с ней надо в <strong class='tag-b'>uses</strong> прописать модуль <strong class='tag-b'>Clipbrd</strong> и ф-ция становится доступной. А теперь о работе с Clipboard :<br>
<br>
<strong class='tag-b'>Метод SetTextBuf()</strong><br>
Этот метод копирует текст, преданный в качестве параметра, в буфер обмена. Надо помнить, что текст передаваемый в качестве параметра должен иметь тип PChar, так что не забывайте переводить строки.<br>
Пример : <div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">Clipboard.SetTextBuf(PChar(memo1.SelText));</div></ol></div></div></div></div> <br>
В примере мы копируем в буфер обмена текст, выделеные в Memo.<br>
Для того, чтобы осуществить работу кнопки <strong class='tag-b'>Вырезать</strong> напишем тот же код, но после копирования в буфер, удалим этот текст в Memo.<br>
Пример : <div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">Clipboard.SetTextBuf(PChar(Memo1.SelText));</div><div class="code_line">Memo1.SelText := &#39;&#39;;</div></ol></div></div></div></div><br>
<br>
<strong class='tag-b'>Свойство AsText</strong><br>
Это свойство возвращает содержимое буфера обмена в виде строки.<br>
С помощью этого свойства можно осуществить работу кнопки <strong class='tag-b'>Вставить</strong>.<br>
Пример : <div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">Memo1.SelText := Clipboard.AsText;</div></ol></div></div></div></div><br>
В примере мы в Memo копируем содержимое буфера обмена.<br>
<br>
<strong class='tag-b'>Метод Assign</strong><br>
C помощью метода Assign можно скопировать в буффер обмена объекты типа TPicture и TGraphic. Соответственно с помощью метода Assign объектов TPicture, TBitmap и TMetafile можно копировать в эти объекты содержимое буффера. Например так можно скопировать картинку через буффер:<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;&nbsp;Clipboard.Assign(Image1.Picture);</div><div class="code_line">&nbsp;&nbsp;Image2.Picture.Assign(Clipboard);</div></ol></div></div></div></div><br>
<br>
<strong class='tag-b'>Метод Clear</strong><br>
Очищает содержимое буфера обмена.<br>
<br>
<strong class='tag-b'>Метод HasFormat()</strong><br>
Проверить какого формата данные находятся в буфере обмена.<br>
Возможные типы :<br>
<strong class='tag-b'>CF_TEXT</strong> - буфер содержит текст<br>
<strong class='tag-b'>CF_BITMAP</strong> - буфер содержит изображение<br>
<strong class='tag-b'>CF_METAFILEPICT</strong> - буфер содержит векторное изображение<br>
<strong class='tag-b'>CF_PICTURE</strong> - буфер содержит обьект типа TPicture<br>
<strong class='tag-b'>CF_COMPONENT</strong> - буфер содержит компонент<br>
Пример : <div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">procedure TForm1.Button1Click(Sender: TObject);</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;if Clipboard.HasFormat(CF_TEXT) then</div><div class="code_line">&nbsp;&nbsp; &nbsp;ShowMessage(&#39;буфер содержит текст&#39;);</div><div class="code_line">&nbsp;&nbsp;if Clipboard.HasFormat(CF_BITMAP) then</div><div class="code_line">&nbsp;&nbsp; &nbsp;ShowMessage(&#39;буфер содержит изображение&#39;);</div><div class="code_line">&nbsp;&nbsp;if Clipboard.HasFormat(CF_METAFILEPICT) then</div><div class="code_line">&nbsp;&nbsp; &nbsp;ShowMessage(&#39;буфер содержит векторное изображение&#39;);</div><div class="code_line">&nbsp;&nbsp;if Clipboard.HasFormat(CF_PICTURE) then</div><div class="code_line">&nbsp;&nbsp; &nbsp;ShowMessage(&#39;буфер содержит обьект типа TPicture&#39;);</div><div class="code_line">&nbsp;&nbsp;if Clipboard.HasFormat(CF_COMPONENT) then</div><div class="code_line">&nbsp;&nbsp; &nbsp;ShowMessage(&#39;буфер содержит компонент&#39;);</div><div class="code_line">end;</div></ol></div></div></div></div> <br>
В примере при нажатии кнопки выводится сообщение о том, что содержится в буфере обмена.<br>
<br>
<strong class='tag-b'>Автор:</strong> <a class='tag-url' href='http://forum.sources.ru/index.php?showuser=18940' target='_blank'>Kanes</a>]]></description>
        <author>Kanes</author>
        <category>Hello, World&#33;</category>
      </item>
	
      </channel>
      </rss>
	