Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Копировать и вставить несколько контролов


DelphiLexx ©   (2006-08-15 16:26:00) 

Есть редактор в котором можно размещать контролы наследуемые от TPanel подскажите, пожалуйста, способы копирования в память выделенные эти контролы и вставки их в позицию курсора мыши.


Yanis   (2006-08-15 17:37:00) [1]

Делай как и IDE Delphi делает. Копируй "текстом" и "вставляй текстом". Из справки: function ComponentToString(Component: TComponent): string;

var
 BinStream:TMemoryStream;
 StrStream: TStringStream;
 s: string;
begin
 BinStream := TMemoryStream.Create;
 try
   StrStream := TStringStream.Create(s);
   try
     BinStream.WriteComponent(Component);
     BinStream.Seek(0, soFromBeginning);
     ObjectBinaryToText(BinStream, StrStream);
     StrStream.Seek(0, soFromBeginning);
     Result:= StrStream.DataString;
   finally
     StrStream.Free;

   end;
 finally
   BinStream.Free
 end;
end;

function StringToComponent(Value: string): TComponent;
var
 StrStream:TStringStream;
 BinStream: TMemoryStream;
begin
 StrStream := TStringStream.Create(Value);
 try
   BinStream := TMemoryStream.Create;
   try
     ObjectTextToBinary(StrStream, BinStream);
     BinStream.Seek(0, soFromBeginning);
     Result := BinStream.ReadComponent(nil);

   finally
     BinStream.Free;
   end;
 finally
   StrStream.Free;
 end;
end;


clickmaker   (2006-08-15 17:23:00) [2]


> DelphiLexx ©   (15.08.06 17:12) [4]

а то и значит. Хозяин - барин то бишь. Если тебе наружу эти контролы выдавать не надо, тогда виндозный клипборд тебе ни к чему. Просто запоминаешь свойства, в новом месте создаешь новый контрол и копируешь свойства.
Еще рекомендую на метод Assign обратить внимание


tesseract   (2006-08-15 17:22:00) [3]


> DelphiLexx ©   (15.08.06 17:10) [3]


копируй параметры контрола, как текст :-)  
Я где-то такое проворачивал.

можешь создать новый формат в буфере обмена :

UINT RegisterClipboardFormat(LPCTSTR lpszFormat);

lpszFormat - [in] Pointer to a null-terminated string that names the new format.
Return Value


DelphiLexx   (2006-08-15 17:12:00) [4]


> вставки куда? в ту же прогу, откуда копируешь?

да в туже прогу.
Что значит фраза "тогда любой тебе удобный"


clickmaker   (2006-08-15 17:10:00) [5]


> способы копирования в память выделенные эти контролы и вставки
> их в позицию курсора мыши.

вставки куда? в ту же прогу, откуда копируешь? тогда любой тебе удобный


DelphiLexx   (2006-08-15 17:10:00) [6]


> через clipboard?

Текст то ладно проблем нет, а вот контролы это проблема?
Примерчик не мог бы привести?


tesseract   (2006-08-15 16:35:00) [7]

через clipboard?


Наверх

Титульная страница Поиск, карта сайта Написать письмо