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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.02.2014, 23:11   #1
tane
Пользователь
 
Регистрация: 14.12.2013
Сообщений: 64
По умолчанию Использование изображений в Делфи

Здравствуйте)Как сделать,что бы использовать рисунки в программе без указания пути.(Компонент Image)

Есть программа,при нажатии на определенную вкладку(TabControl) появляется информация про страну и картинка.Но у меня при нажатии на любую вкладку появляется ошибка(Рис).Рисунки находятся в папке с программой.


Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, ComCtrls, jpeg, ExtCtrls;

type
  TForm1 = class(TForm)
    TabControl1: TTabControl;
    StringGrid1: TStringGrid;
    Image1: TImage;
    procedure FormCreate(Sender: TObject);
    procedure TabControl1Change(Sender: TObject);
 
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
const
strana:array[1..6,1..6]   of  PChar=
(('Україна' ,'Київ','Гривня' ,'603.7' ,'50.1' ,'ukr.jpg'), ('США','Вашингтон','Долар','9363.2','237.8',' usa.jpg'),
('Англія' ,'Лондон','Фунт стерлінгів' , '244.1', '56.2',' angl.jpg'),
('Франція','Париж' ,'Франк' ,'551.6' ,'55.1' ,' fr.jpg ') ,
('Росія' ,'Москва' ,'Рубль' ,'17075.4' ,'163.7' ,'moskva.jpg') ,
('Китай','Пекін','Юань','9597','1488.5',' kut.jpg'));




procedure TForm1.FormCreate(Sender: TObject);
  var i:integer;
begin
for i:=1 to 6 do
tabcontrol1.Tabs.Add(strana[i,1]);
StringGrid1.Cells[0,0]:='Столиця';
StringGrid1.Cells[0,1]:='Валюта';
StringGrid1 .Cells [0,2]:='Територія (тис.кв.km)';
StringGrid1.Cells[0,3]:='Населення (млн)';
 TabControl1Change(Sender);
end;

procedure TForm1.TabControl1Change(Sender: TObject);

begin

StringGrid1.Cells[1,0]:=strana[TabControl1. TabIndex+1,2] ;
StringGrid1.Cells[1,1]:=strana[TabControl1. TabIndex+1,3] ;
StringGrid1.Cells[1,2]:=strana[TabControl1. TabIndex+1,4] ;
StringGrid1.Cells[1,3]:=strana[TabControl1. TabIndex+1,5] ;
Image1.Picture.loadfromfile(strana[TabControl1. TabIndex+1,6]) ;// вот строка отвечающая за  рисунки 

end;

end.
Изображения
Тип файла: jpg 22.jpg (10.0 Кб, 113 просмотров)
Тип файла: png 11.png (38.2 Кб, 59 просмотров)
tane вне форума Ответить с цитированием
Старый 10.02.2014, 23:20   #2
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,504
По умолчанию

Попробуй функцию SetCurrentDir
type_Oleg вне форума Ответить с цитированием
Старый 10.02.2014, 23:39   #3
tane
Пользователь
 
Регистрация: 14.12.2013
Сообщений: 64
По умолчанию

Цитата:
Сообщение от type_Oleg Посмотреть сообщение
Попробуй функцию SetCurrentDir
То есть?
Image1.Picture.SetCurrentDir(strana[TabControl1. TabIndex+1,6]) ;
tane вне форума Ответить с цитированием
Старый 11.02.2014, 00:02   #4
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,504
По умолчанию

Нет. См. описание этой SetCurrentDir
Там же незря Dir в названии. Установка текущей директории (папки, каталога).
Например
Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
 SetCurrentDir(ExtractFileDir(Application.ExeName));
// и т.д.
Если *jpg лежат там же, куда и твой *.exe компилируется.

Последний раз редактировалось type_Oleg; 11.02.2014 в 00:21.
type_Oleg вне форума Ответить с цитированием
Старый 11.02.2014, 00:36   #5
Rin
Негодник
Форумчанин
 
Аватар для Rin
 
Регистрация: 10.11.2009
Сообщений: 880
По умолчанию

А зачем setcurrentdir? Есть же GetCurrentDir.
Код:
Image1.Picture.LoadfromFile(getCurrentDir+'\'+strana[TabControl1. TabIndex+1,6])
Если картинки хранятся в отдельной папке рядом с прогой, то getCurrentDir+'\папка\'+...
Если помог, проси поставить минус. Будь оригинален!
Rin вне форума Ответить с цитированием
Старый 11.02.2014, 09:19   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от tane Посмотреть сообщение
Здравствуйте)Как сделать,что бы использовать рисунки в программе без указания пути.(Компонент Image)

Рисунки находятся в папке с программой.
[/CODE]
менять каталог через SetCurrentDir можно, это будет работать, но это не очень гуманно с точки зрения пользователя.

а чем не устраивает вариант:
Код:
Image1.Picture.loadfromfile(ExtractFileDir(Application.ExeName)+strana[TabControl1. TabIndex+1,6]) ;// вот строка отвечающая за  рисунки
Serge_Bliznykov вне форума Ответить с цитированием
Старый 11.02.2014, 22:36   #7
tane
Пользователь
 
Регистрация: 14.12.2013
Сообщений: 64
По умолчанию

Цитата:
Сообщение от tane Посмотреть сообщение
а чем не устраивает вариант:
Код:
Image1.Picture.loadfromfile(ExtractFileDir(Application.ExeName)+strana[TabControl1. TabIndex+1,6]) ;// вот строка отвечающая за  рисунки
При запуске программы не находит рис(хотя все они в папке с програмой)
Изображения
Тип файла: jpg Screenshot_1.jpg (9.7 Кб, 116 просмотров)
Тип файла: jpg Screenshot_2.jpg (42.6 Кб, 113 просмотров)

Последний раз редактировалось tane; 11.02.2014 в 22:42.
tane вне форума Ответить с цитированием
Старый 11.02.2014, 23:02   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

а так ?
Код:
Image1.Picture.loadfromfile(ExtractFileDir(Application.ExeName)+'\'+strana[TabControl1. TabIndex+1,6]) ;// вот строка отвечающая за  рисунки
добавил слеш после пути
Serge_Bliznykov вне форума Ответить с цитированием
Старый 11.02.2014, 23:23   #9
tane
Пользователь
 
Регистрация: 14.12.2013
Сообщений: 64
По умолчанию

Россия и Украина показывает,а остальные - нет.
Изображения
Тип файла: jpg Screenshot_4.jpg (33.9 Кб, 113 просмотров)
tane вне форума Ответить с цитированием
Старый 11.02.2014, 23:32   #10
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,430
По умолчанию

В имени самого файла angl.jpg пробела нет, а в коде программы есть.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Движение растровых изображений в делфи Katerina_K Помощь студентам 2 25.10.2013 14:24
Использование регистров в Делфи DimitarSergius Помощь студентам 16 30.08.2011 16:53
ИСПОЛЬЗОВАНИЕ АССЕМБЛЕРА В ДЕЛФИ! IIIeneJI Помощь студентам 2 09.02.2010 17:12
Автоматизация обработки изображений и их оцифровки методами делфи helpme32 Мультимедиа в Delphi 1 14.12.2007 13:03