![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() всем привет.пишу лабораторную.примерный смысл таков:имеется две формы, одна создается в режиме Design-Time, другая в Run-Time.На той,что создается в дизайн тайм я размещаю несколько компонентов TShape. Их свойства нужно сохранить в Ini файл и создать такие же объекты на другой форме в Run-Time.проблема заключается в том,что никак не сохранить в ини файл свойство Shape, тк функции для записи в ини файл пишут только числа,даты,строки.решение же должно быть.подскажите пожалуйста,если знаете.
|
#2
|
||||
|
||||
![]() Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls; type TForm1 = class(TForm) Shape1: TShape; Shape2: TShape; Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var resourcestream: TFileStream; begin resourcestream:=TFileStream.Create('c:\Downloads\Shape1.dfm', fmCreate); try resourcestream.WriteComponentRes('Shape1', Shape1); resourcestream.WriteComponentRes('Shape2', Shape2); finally resourcestream.Free; end; end; procedure TForm1.Button2Click(Sender: TObject); var aform: TForm; resourcestream: TFileStream; component: TShape; begin aform:=TForm.Create(Application); aform.Width:=Width; aform.Height:=Height; aform.Show; resourcestream:=TFileStream.Create('c:\Downloads\Shape1.dfm', fmOpenRead); try component:=TShape.Create(aform); component.Parent:=aform; resourcestream.ReadComponentRes(component); component:=TShape.Create(aform); component.Parent:=aform; resourcestream.ReadComponentRes(component); finally resourcestream.Free; end; end; end. Пишу программы за еду. __________________ Последний раз редактировалось NumLock, 06.01.2011 в 11:29. |
#3
|
|||
|
|||
![]() спасибо.а можно это реализовать не используя потоки?
|
#4
|
||||
|
||||
![]() можно. ну если умеешь через TIniFile писать/читать числа, то:
Код:
procedure ... var i: Integer; begin i:=Integer(Shape1.Shape); Shape2.Shape:=TShapeType(i); end; Пишу программы за еду. __________________ |
#5
|
|||
|
|||
![]() ![]() Последний раз редактировалось NKVD, 06.01.2011 в 14:15. |
#6
|
||||
|
||||
![]() -это называется привидением типов
-чувствуешь разницу: TPen = class(TGraphicsObject) TBrush = class(TGraphicsObject) type TShapeType = (stRectangle, stSquare, stRoundRect, stRoundSquare, stEllipse, stCircle); ? ЗЫ. пока отвечал уже пост отредактировали. получилось не на то ответил ![]() Код:
var i: Integer; begin for i:=0 to ComponentCount-1 do if Components[i] is TShape then begin .... end; end; Пишу программы за еду. __________________ Последний раз редактировалось NumLock, 06.01.2011 в 14:20. |
#7
|
|||
|
|||
![]() ![]() Последний раз редактировалось NKVD, 06.01.2011 в 14:32. |