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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.03.2009, 21:46   #1
Лукманов Александр
работа не волк....
Форумчанин
 
Аватар для Лукманов Александр
 
Регистрация: 09.06.2008
Сообщений: 337
Вопрос Сохранение и открытие Image (размер и положение) с типизированным файлом

Мне нужно сохранить размер и положение Image на форме. А затем расположить Image в сохранённом виде. У меня программа пока даже не сохраняет данные в ini файл. Подскажите плиз как, что и в чём ошибка.



Пытаюсь сохранить параметры Image. После нажатия нажатия на кнопку ошибку не выдаёт, а файл пустой. На форме Image присутствовали.

Код:
TPos = record
   Pleft, Ptop, Pwidth, Pheight: Integer;
   Pname: string[255];
   ******
   b:  file of TPos;
   b1: TPos;
   i1: Integer;
   ******
   procedure TForm1.btn2Click(Sender: TObject);
begin

 for  i1:=0 to ComponentCount-1 do    begin
 if Components[i1] is TImage then
  begin
    AssignFile (b, '1.ini');
    Reset  (b);

  b1.Pname :=(Components[i1] as TImage).Name;
  b1.Pleft :=(Components[i1] as TImage).Left;
  b1.Ptop :=(Components[i1] as TImage).top;
  b1.Pwidth :=(Components[i1] as TImage).width;
  b1.Pheight :=(Components[i1] as TImage).Height;
    write (b, b1);
    CloseFile (b);
  end;
end;
end;



Здесь пробую открыть из "пустого" ini файла. Программа почему то меняет размер главной формы.
P.S. размер новой формы никак не связан с Image's

Код:
procedure TForm1.btn3Click(Sender: TObject);
begin
AssignFile(b, '1.ini');
for i1:=0  to 2 do begin

TImage.Create(Self);
with TImage(Self) do
begin
  Reset(b);
  read (b, b1);
  Parent:=Form1;
  left:= b1.Pleft;
  top:= b1.Ptop;
  width:= b1.Pwidth;
  Height:= b1.Pheight;
  CloseFile(b);
 { Picture.LoadFromFile('AL.JPG');  }
end;

end;
end;
Цель, для которой требуются неправые средства, не есть неправая цель.
Лукманов Александр вне форума Ответить с цитированием
Старый 30.03.2009, 22:48   #2
Jeni
Форумчанин
 
Регистрация: 31.05.2007
Сообщений: 486
По умолчанию

Нужно писать with TImage.Create(Self) do

Кстати, если уж использовать ini-файлы, то нужно это делать через класс TIniFile, а так как сделано сейчас, не имеет к ini-файлам никакого отношения.

Последний раз редактировалось Jeni; 30.03.2009 в 22:52.
Jeni вне форума Ответить с цитированием
Старый 30.03.2009, 22:54   #3
Ntlegend
Форумчанин
 
Аватар для Ntlegend
 
Регистрация: 12.05.2007
Сообщений: 373
По умолчанию

попробуй так:
Код:
//в раздел uses дописать ExtCtrls;

var
  img:TImage;

procedure TForm1.Button1Click(Sender: TObject);
var l:Tstrings;
begin
l:=TStringList.Create;
//проверка на существование файла
if FileExists('Config.th')
 then l.LoadFromFile('Config.th');
//создание "рисунка"
img:=TImage.Create(Self);
img.Parent:=self;
if l.Text=''
 then begin
  l.Free;
  exit;
 end;
//установка параметров
img.Left  := StrToInt(l.Strings[0]);
img.Top   := StrToInt(l.Strings[1]);
img.Width := StrToInt(l.Strings[2]);
img.Height:= StrToInt(l.Strings[3]);
end;

procedure TForm1.Button2Click(Sender: TObject);
var l:Tstrings;
begin
//сохранение параметров в файл
l:=TStringList.Create;
l.Add(IntToStr(img.Left));
l.Add(IntToStr(img.Top));
l.Add(IntToStr(img.Width));
l.Add(IntToStr(img.Height));
l.SaveToFile('Config.th');
l.Free;
end;
Перемен! - требуют наши сердца. Перемен! - требуют наши глаза.
В нашем смехе и в наших слезах, И в пульсации вен:
"Перемен!Мы ждем перемен!"
Ntlegend вне форума Ответить с цитированием
Старый 31.03.2009, 13:01   #4
Лукманов Александр
работа не волк....
Форумчанин
 
Аватар для Лукманов Александр
 
Регистрация: 09.06.2008
Сообщений: 337
По умолчанию

2Jeni хоть ini, хоть txt, хоть mp3 всё равно не сохраняет.
Цитата:
Нужно писать with TImage.Create(Self) do
вообще не запускается.

2Ntlegend спасибо за идею. Но здесь же сохраняет всего один Image. Да и с типизированным файлом как то удобнее кажется.
Цель, для которой требуются неправые средства, не есть неправая цель.
Лукманов Александр вне форума Ответить с цитированием
Старый 31.03.2009, 13:55   #5
Ntlegend
Форумчанин
 
Аватар для Ntlegend
 
Регистрация: 12.05.2007
Сообщений: 373
По умолчанию

Цитата:
Сообщение от Лукманов Александр Посмотреть сообщение
Но здесь же сохраняет всего один Image. Да и с типизированным файлом как то удобнее кажется.
я написал как пример.. если тебе наба чтобы было много картинок - то создавай их массивом img: array of TImage;
потом при создании компоненте SetLength(img, Length(img)+1);
и при создании вместо img обращаться к нему уже так img[i] (где i - это номер компонента, начиная с нуля)..
дальше при сохранени в цыкле перебираем этот массив считывая в какуюто структуру нужные поля компонентов.. и далье записыфваем эту структуру на в файл..
Перемен! - требуют наши сердца. Перемен! - требуют наши глаза.
В нашем смехе и в наших слезах, И в пульсации вен:
"Перемен!Мы ждем перемен!"
Ntlegend вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сохранение и открытие файлов Kantor Общие вопросы Delphi 1 15.12.2008 05:21
Размер Image изменяется на размер картинки, а сама она рисуется на области первой картинки RPGer Мультимедиа в Delphi 6 20.10.2008 19:54
Безвыходное положение BETONOMESHALKA Общие вопросы Delphi 2 03.11.2007 19:06
положение курсора mishel Общие вопросы Delphi 9 30.01.2007 21:37
как перехватить открытие чужого приложенияпытаюсь перехватить открытие любого приложе rpy3uH Win Api 2 02.12.2006 12:12