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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.09.2009, 23:07   #1
AgressiveBehavior
Пользователь
 
Регистрация: 09.09.2009
Сообщений: 27
Вопрос Строки в буфер

Нужно выбранные (Checked) строки из CheckListBox'a загнать в Буфер, пробовал использовать вот эту
процедуру :
Код:
 procedure CopyStringToClipboard(const Value: String);
const
  RusLocale = (SUBLANG_DEFAULT shl $A) or LANG_RUSSIAN;
var
  hMem: THandle;
  pData: Pointer;
begin
  Clipboard.Open;
  try
    Clipboard.AsText := Value;
    hMem := GlobalAlloc(GMEM_MOVEABLE, SizeOf(DWORD));
    try
      pData := GlobalLock(hMem);
      try
        DWORD(pData^) := RusLocale;
      finally
        GlobalUnlock(hMem);
      end;
        Clipboard.SetAsHandle(CF_LOCALE, hMem);
    finally
      GlobalFree(hMem);
    end;
  finally
    Clipboard.Close;
  end;
end;
Код:
 For I:=0 to CheckListBox1.Items.Count-1 do
     CopyStringToClipboard(CheckListBox1.Items.Strings[i]);
Если пробовать поместить в буфер одну строку то всё гуд, а вот при попытке запихнуть туда несколько строк, ошибок невыдает, но буфер становится нечитаемым - "Program Specific Clip"
На профилактику детской беспризорности было выделено 60 млн рублей, на стерилизацию бродячих животных в Москве 87 млн руб.
Собаки важней. Дети не кусаются.

Последний раз редактировалось AgressiveBehavior; 30.09.2009 в 01:23.
AgressiveBehavior вне форума Ответить с цитированием
Старый 30.09.2009, 09:26   #2
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Ну, можно применить индейскую хитрость. Сделай невидимый Мемо и гони строки туда, а с него уже в буфер загнать проще.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 30.09.2009, 10:44   #3
pesi
Подтвердите свой е-майл
 
Регистрация: 05.03.2009
Сообщений: 65
По умолчанию

Код:
var
str:Tstringlist;
i:integer;
begin
str:=Tstringlist.Create;
for  i:=0 to CheckListBox1.Items.Count-1 do
begin
if CheckListBox1.Checked[i] then
str.Add(CheckListBox1.Items.Strings[i]);
end;
ClipBoard.AsText:=str.Text;
str.Free;
end;
pesi вне форума Ответить с цитированием
Старый 30.09.2009, 10:47   #4
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Сообщение от pesi Посмотреть сообщение
Код:
var
str:Tstringlist;
i:integer;
begin
str:=Tstringlist.Create;
for  i:=0 to CheckListBox1.Items.Count-1 do
begin
if CheckListBox1.Checked[i] then
str.Add(CheckListBox1.Items.Strings[i]);
end;
ClipBoard.AsText:=str.Text;
str.Free;
end;
По сути тоже самое, внутри Мемо тот же самый StringList
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 30.09.2009, 11:07   #5
pesi
Подтвердите свой е-майл
 
Регистрация: 05.03.2009
Сообщений: 65
По умолчанию

Ну да, можно и так
Код:
var
i:integer;
begin
memo1.Clear;
for  i:=0 to CheckListBox1.Items.Count-1 do
begin
if CheckListBox1.Checked[i] then
memo1.Lines.Add(CheckListBox1.Items.Strings[i]);
end;
memo1.SelectAll;
memo1.CopyToClipboard;
end;
pesi вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
буфер обмена olimpus Microsoft Office Excel 2 19.09.2009 08:52
Буфер обмена nusik Общие вопросы Delphi 2 21.05.2009 00:53
буфер обмена __@cmd@__ Общие вопросы Delphi 2 04.02.2009 12:24
Буфер Черничный Общие вопросы Delphi 5 10.09.2008 09:35
Буфер и паскаль Mago Паскаль, Turbo Pascal, PascalABC.NET 4 29.07.2008 22:19