Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как узнать какой из Image виден в данный момент? 
:(
    Опции темы
Volkogriz
  Дата 9.12.2012, 09:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 216
Регистрация: 16.9.2007

Репутация: нет
Всего: 1



Доброе время суток!
Есть проблема такая, на форме пять Image виден только один но на выбор при закрытии приложения настройки сохраняются а вот как сохранить Image чтобы не перечислять все у меня их 86 штук я не догоняю.
Смысл в том что при загрузке всё как надо но Image не виден ))
У меня не выходит сформулировать правильно проблему извините,
Но надеюсь вы поймёте!

Это сообщение отредактировал(а) Volkogriz - 9.12.2012, 09:46
--------------------
("`-''-/").___..--''"`-._`6_6  ) ,,,`-.  ( ''' ).` "_-.__.')(_Y_.)'  ._''' )  `._ `. ``-.__'.-'_..`--'_..-_/'''/--'_.' ,'(il).-'''''(li).'  ((!.-'
PM MAIL ICQ   Вверх
586
Дата 9.12.2012, 10:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: 2
Всего: 146



Цитата(Volkogriz @  9.12.2012,  10:33 Найти цитируемый пост)
а вот как сохранить Image чтобы не перечислять все у меня их 86 штук я не догоняю.

В смысле, чтобы не писать руками 86 строк? Можно так:
Код
procedure TForm1.Button1Click(Sender: TObject);
var
  i:Integer;
  img:TImage;
  s:String;
begin
  Caption := IntToStr(ControlCount);
  for i:=0 to ControlCount-1 do
  begin
    if Controls[i] is TImage then
    begin
      img := Controls[i] as TImage;
      s := s + '• ' + img.Name + #13#10;
    end;
  end;
  ShowMessage('Detected images:' + #13#10 + s);
end;

либо искать по имени компонента, вызывая функцию FindComponent(component_name).

Это сообщение отредактировал(а) 586 - 9.12.2012, 10:37
PM   Вверх
Volkogriz
Дата 9.12.2012, 11:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 216
Регистрация: 16.9.2007

Репутация: нет
Всего: 1



Спасибо!
Но по этому вопросу у меня теперь новая проблема)))
Я немного переделал и сделал так:
Создал несколько процедур создал переменную стринг
 и запоминаю имя процедуры которая в данный момент 
обрабатывает показ имейджей.
Но не могу при загрузке приложения обработать строку
и выполнить её как процедуру.
подскажите как это сделать плиз!
С уважением,
Volkogriz! 

--------------------
("`-''-/").___..--''"`-._`6_6  ) ,,,`-.  ( ''' ).` "_-.__.')(_Y_.)'  ._''' )  `._ `. ``-.__'.-'_..`--'_..-_/'''/--'_.' ,'(il).-'''''(li).'  ((!.-'
PM MAIL ICQ   Вверх
bems
Дата 9.12.2012, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 18
Всего: 88



Дельфи не интерпретируемый язык, поэтому в общем случае вызвать процедуру по имени содержащемся в строковом выражении нельзя (в частном - можно через rtti но я уверен что тебе это не нужно)
Покажи подробней что там у тебя за процедуры, а то есть подозрение что ты не в курсе что для многих имейджей можно использовать один обработчик



--------------------
Обижено школьников: 8
PM MAIL   Вверх
Volkogriz
Дата 9.12.2012, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 216
Регистрация: 16.9.2007

Репутация: нет
Всего: 1



Воть
Код

procedure TForm1.ORLoadPanel;
begin
Imag:= LoadLibrary(PChar(extractfilepath(Application.ExeName)+'SystemFiles\dllImLoad.dat'));
imageStream:=TResourceStream.Create(Imag,'ORConYard','Building');
JPG := TJPEGImage.Create;
JPG.LoadFromStream(imageStream);
Image49.Picture.Assign(JPG);
Image49.Parent.DoubleBuffered := true;
imageStream:=TResourceStream.Create(Imag,'ORSmWindtrap','Building');
JPG := TJPEGImage.Create;
JPG.LoadFromStream(imageStream);
Image50.Picture.Assign(JPG);
Image50.Parent.DoubleBuffered := true;
imageStream:=TResourceStream.Create(Imag,'ORBarracks','Building');
JPG := TJPEGImage.Create;
JPG.LoadFromStream(imageStream);
Image51.Picture.Assign(JPG);
Image51.Parent.DoubleBuffered := true;
imageStream:=TResourceStream.Create(Imag,'ORRefinery','Building');
JPG := TJPEGImage.Create;
JPG.LoadFromStream(imageStream);
Image52.Picture.Assign(JPG);
Image52.Parent.DoubleBuffered := true;
imageStream:=TResourceStream.Create(Imag,'OROutpost','Building');
JPG := TJPEGImage.Create;
JPG.LoadFromStream(imageStream);
Image53.Picture.Assign(JPG);
Image53.Parent.DoubleBuffered := true;
imageStream:=TResourceStream.Create(Imag,'ORFactory','Building');
JPG := TJPEGImage.Create;
JPG.LoadFromStream(imageStream);
Image54.Picture.Assign(JPG);
Image54.Parent.DoubleBuffered := true;
imageStream:=TResourceStream.Create(Imag,'ORHanger','Building');
JPG := TJPEGImage.Create;
JPG.LoadFromStream(imageStream);
Image55.Picture.Assign(JPG);
Image55.Parent.DoubleBuffered := true;
imageStream:=TResourceStream.Create(Imag,'ORStarport','Building');
JPG := TJPEGImage.Create;
JPG.LoadFromStream(imageStream);
Image56.Picture.Assign(JPG);
Image56.Parent.DoubleBuffered := true;
imageStream:=TResourceStream.Create(Imag,'ORPalace','Building');
JPG := TJPEGImage.Create;
JPG.LoadFromStream(imageStream);
Image57.Picture.Assign(JPG);
Image57.Parent.DoubleBuffered := true;
imageStream:=TResourceStream.Create(Imag,'HKFactoryFrigate','Building');
JPG := TJPEGImage.Create;
JPG.LoadFromStream(imageStream);
Image58.Picture.Assign(JPG);
Image58.Parent.DoubleBuffered := true;
imageStream:=TResourceStream.Create(Imag,'ORGasTurret','Building');
JPG := TJPEGImage.Create;
JPG.LoadFromStream(imageStream);
Image59.Picture.Assign(JPG);
Image59.Parent.DoubleBuffered := true;
imageStream:=TResourceStream.Create(Imag,'ORPopUpTurret','Building');
JPG := TJPEGImage.Create;
JPG.LoadFromStream(imageStream);
Image60.Picture.Assign(JPG);
Image60.Parent.DoubleBuffered := true;
end;

procedure TForm1.Image12Click(Sender: TObject);
begin
sPanel1.Visible:=true;
OrdosPanel.Visible:=false;
ConstructionsAtridesy.Visible:=false;
AtridesPanel.Visible:=false;
DesignsIks.Visible:=false;
DesignsTleylaksu.Visible:=false;
DesignsSardukar.Visible:=false;
ConstructionsOrdos.Visible:=false;
ConstructionsFrimen.Visible:=false;
ConstructionsGuilds.Visible:=false;
ConstructionsHarkonnen.Visible:=false;
ConstructionsOrdos.Visible:=true;
ORLoadPanel;
ImagVisible:= 'ORLoadPanel';
end;

--------------------
("`-''-/").___..--''"`-._`6_6  ) ,,,`-.  ( ''' ).` "_-.__.')(_Y_.)'  ._''' )  `._ `. ``-.__'.-'_..`--'_..-_/'''/--'_.' ,'(il).-'''''(li).'  ((!.-'
PM MAIL ICQ   Вверх
Akella
Дата 9.12.2012, 14:16 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 8
Всего: 329



PM MAIL   Вверх
bems
Дата 9.12.2012, 18:37 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 18
Всего: 88



во-первых тут ты не освобождаешь за собой стрим и жипег
во-вторых хотя бы так:
Код

procedure LoadBuilding(hResInst: HInst; Image: TImage; const BuildingName: String);
var
  Stream: TStream;
  Jpg: TJpegImage;
begin
  Stream := TResourceStream.Create(hResInst, BuildingName, 'Building');
  try
    Jpg := TJPEGImage.Create;
    try
      Jpg.LoadFromStream(Stream);
      Image.Picture.Assign(Jpg);
      Image.Parent.DoubleBuffered := True;
    finally
      FreeAndNil(Jpg)
    end;
  finally
    FreeAndNil(Stream)
  end;
end;


ну и вызываешь соответственно
LoadBuilding(Imag, Image49, 'ORConYard');
LoadBuilding(Imag, Image50, 'ORSmWindtrap');

и тд


--------------------
Обижено школьников: 8
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0851 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.