Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как получить имя файла загруженного в TImage [D6]


AndreySoft ©   (2004-04-20 19:27:00) 

Надо выдернуть имя файла, который в настоящий момент загружен в TImage... Загружается он туда динамически (в событии CreateForm)
...
Image1.Picture.LoadFromFile('b.bmp');...
Ну а в другом событии (Image1Click) я пытаюсь проверить его имя вот так:
...
var str:string;
...
str:=Image1.Picture.Bitmap.GetNamePath;
Label1.Caption:=str;

...
но он выдаёт в Label1 имя класса т.е. "TBitmap" а мне нужно что он туда поместил ну например тот же "b.bmp" т.е. реально имя этого файла...
Помогите пж.


Twinge   (2004-04-24 00:59:00) [1]

1. Это долбаное имя нигде не хранится.

2. AndreySoft, ты не прав. О профессиональности кода судят не по его количеству, а по глючности и скорости выполнения.

Z.Y.: Войны между Фанатами Delphi и Фанатами C++ нету. Вот только последние гонят, потому что им не нравится явное превосходство Delphi. Несмотря на то, что проекты на Delphi весят ощутимее больше, чем на сях, фантомных глюков из ниоткуда в Delphi не наблюдается. Писать проги намного проще. Что касается функциональности - то она одинакова у этих языков. И компоненты в основном одни и те же.

Z.Z.Y.: А вот между кем реально есть война, так это между Linuxoid'ами и фанатами дяди Билли. Так вот и тут Delphi переплюнула сю: 7 версия скркщена с Kylix (это Delphi под *nix).


AndreySoft   (2004-04-24 00:30:00) [2]

Спасибо большое, но я уже разобрался и сделал одновременное присвоение, т.е. загружаю картинку и присваиваю какой-то переменной имя этого файла...
Это конечно тупо, но другого (более профессионального) выхода я не нахожу...
и всё-таки меня мучает вопрос:
Не ужели ни в одном из свойств компонента TImage не хранится имя загруженного файла (что за не здоровая хрень?)...
или по крайней мере, выдернуть это имя функцией что-то на вроде GetNamePath...
Я уже согасен на использование TOpenDialog (хотя вряд ли это поможет), просто очень большой код получается, а это не есть гуд!
Я например думаю что, чем меньше код, тем более профессионально написана прога...
Ещё раз, всем спасибо!
Ну если нельзя это обойти, прийдётся писать тупой код...

Хотя, нет! Обойти всегда можно, просто я никак не додумаю как бы это всё упрастить...
Ну да ладно... всё приходит со временем, может и до меня как-нибудь дойдёт...

З.Ы. Delphi - forever!
Builder - must die! (я конечно против C++ ничего не имею, богатый язык - не спорю, просто Билдеристы запарили пургу гнать на Delphi)

Кстати, может кто-нибудь знает хитрую особенность Delphi которая превосходит Builder и чтобы я наконец заткнул рот этим си-плас-плашникам...

З.З.Ы.: А может быть и нет никакой войны между Делфиристами и Билдеристами?...


Twinge   (2004-04-23 04:11:00) [3]

Да, забыл.. это все в Type описывается. В начале юнита, там еще что-то вроде TypeTForm1 = class(TForm) бывает..



Type

 TImgAndName = class(TImage)
  public
 FileName: String;
  end;


Twinge   (2004-04-23 03:45:00) [4]

Попробуй создать свой визуальный компонент с материнским классом TImage и добавив туда одну переменную - типа filename:string.
Смотри:


 TImgAndName = class(TImage)
  public
 FileName: String;
  end;



//Оп-па.. только что дописал, и только после этого заметил, что VMcL уже дал идею..

Главное чтобы на проекте к этому времени уже бывало что-то класса TImage. Теперь заменяй все TImage на TImgAndName, а при загрузке из файла заполняй так же FileName, затем бери имя файла из FileName.

З.Ы.: Delphi4ever !!!


C@N   (2004-04-22 15:08:00) [5]

Ну можно изгольнутся и проверять последние I/O события:)


AndreySoft   (2004-04-20 20:26:00) [6]

Хорошо, спасибо!
Просто я думал что можеть быть в каком-нибудь из свойств этого компонента и хранится имя файла...


Mihey   (2004-04-20 20:22:00) [7]

2 AndreySoft:

Я осмелюсь и скажу, что НИКАК. Загрузилась картинка из файла в память и всё. Зачем ей хранить где-то название о файле. После загрузки ты можешь файл удалить и ничего страшного не произойдёт.

Если ты загружешь файл, то ты МОЖЕШЬ запомнить его название в переменной. Если у тебя несколько TImage, то ты можешь использовать НЕСКОЛЬКО переменных, массив, наконец.


AndreySoft   (2004-04-20 20:18:00) [8]

Мне не пойдёт так...
мне не надо последний загруженный, т.к. их у меня несколько (TImage'ов) естественно последний загруженный файл меня не устраивает...
а как-нибудь по другому можно это сделать?


VMcL   (2004-04-20 20:10:00) [9]

>>AndreySoft ©  (20.04.04 20:00) [2]

Читай книжки по Delphi. Серьёзно.

TForm1 = class(TForm)
private
 FLastFile: String;
end;


AndreySoft   (2004-04-20 20:00:00) [10]

а свойство то какое? на примере можешь показать?


VMcL   (2004-04-20 19:48:00) [11]

>>AndreySoft ©  (20.04.04 19:27)

Запоминай имя последнего загруженного файла в строковом поле твоего наследника TForm.


Наверх

Титульная страница Поиск, карта сайта Написать письмо