Недавно добавленные исходники

•  DeLiKaTeS Tetris (Тетрис)  3 679

•  TDictionary Custom Sort  5 814

•  Fast Watermark Sources  5 613

•  3D Designer  8 238

•  Sik Screen Capture  5 935

•  Patch Maker  6 396

•  Айболит (remote control)  6 389

•  ListBox Drag & Drop  5 246

•  Доска для игры Реверси  94 575

•  Графические эффекты  6 580

•  Рисование по маске  5 657

•  Перетаскивание изображений  4 769

•  Canvas Drawing  5 144

•  Рисование Луны  4 877

•  Поворот изображения  4 424

•  Рисование стержней  3 126

•  Paint on Shape  2 369

•  Генератор кроссвордов  3 238

•  Головоломка Paletto  2 559

•  Теорема Монжа об окружностях  3 337

•  Пазл Numbrix  2 210

•  Заборы и коммивояжеры  2 857

•  Игра HIP  1 831

•  Игра Go (Го)  1 751

•  Симулятор лифта  2 081

•  Программа укладки плитки  1 808

•  Генератор лабиринта  2 249

•  Проверка числового ввода  1 934

•  HEX View  2 236

•  Физический маятник  1 919

 
скрыть

  Форум  

Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Delphi Sources

Копирование компонента через TFileStream



Автор: Mike Scott

1) Существует способ присваивания всех свойств одного элемента управления (объекта) другому?

С определенными объектами, которые, обычно, являются обертками элементов управления Windows типа TFont и TBitmap, с помощью метода Assign, копирующего "внутренности" объекта. Вы можете сделать Font1.Assign( Font2 ). Тем не менее, такое возможно не со всеми объектами.

Возможно копирование объекта с помощью потока. Вам нужно записать это в поток, и затем прочесть это оттуда. Но это как раз плавно перетекает в ваш следующий вопрос...

2) Как мне сохранить объект a) в записи в файле данных Paradox и б) в файле на диске?

Для записи на диск используйте поток. Объект должен быть компонентом и его можно записать на диск следующим образом:


var 
  Stream: TFileStream ;
begin
  Stream := TFileStream.Create( 'AFile', fmCreate ) ;
  try
    Stream.WriteComponent( Button1 ) ;
    Stream.WriteComponent( Grid1 ) ; и т.д.
  finally
    Stream.Free ;
  end ;
end ;

Для чтения объекта необходимо следующее:


var 
  Stream : TFileStream ;
  Button2 : TButton ;
  Grid2 : TStringGrid ;
begin
  Stream := TFileStream.Create( 'AFile', fmOpenRead ) ;
  try
    Button2 := Stream.ReadComponent( nil ) as TButton ;
    Grid2 := Stream.ReadComponent( nil ) as TStringGrid ; и т.д.
  finally
    Stream.Free ;
  end ;
end ;

В каком-то месте вам необходимо зарегистрировать классы, которые вы хотите писать и читать. Например, вы могли бы создать следующий обработчик события формы OnCreate:


RegisterClass( TButton ) ;
RegisterClass( TStringGrid ) ;

Если классы не зарегистрированы, то при попытке чтения объекта вы получите ошибку 'Class not found' (класс не найден).





Похожие по теме исходники

Расширение компонента TEdit

RSA шифрование через OpenSSL




Copyright © 2004-2025 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

Группа ВКонтакте