Выбор изображения, отображения его в окне программы и сохранение пути к нему.
Помогите, пожалуйста
нужно создать окно программы, чтоб на нем была возможность, через кнопочку "Обзор", выбрать изображения(*.png, *.jpg, *.gif, *.bmp)
и сохранить этот путь в файл patch.ini лежащий в той же директории, что и сама программа.
+ желательно над кнопочкой "Обзор" форму для пред-осмотра(preview) выбранного изображения.
Помогите осуществить!
|
Цитата:
Цитата qE+
и сохранить этот путь в файл patch.ini лежащий в той же директории, что и сама программа. »
|
Код:
#include <inifiles.hpp>
...
void __fastcall TForm1::Button1Click(TObject *Sender)
{
String Path = ExtractFilePath(Application->ExeName);
TIniFile *Ini = new TIniFile(ExtractFilePath(Application->ExeName)+"patch.ini");
Ini->WriteString("PATH", "Directory", Path);
}
Цитата:
Цитата qE+
нужно создать окно программы, чтоб на нем была возможность, через кнопочку "Обзор", выбрать изображения(*.png, *.jpg, *.gif, *.bmp) »
|
На вкладке Dialogs(Диалоги) выбрать и кинуть на форму компонент OpenPictureDialog
В нужный обработчик который открывает это диалоговое окно вписать
Код:
if(OpenPictureDialog1->Execute())
OpenPictureDialog1->Execute();
|
Drongo,
при добавлении в кнопку строчек:
Код:
String Path = ExtractFilePath(Application->ExeName);
TIniFile *Ini = new TIniFile(ExtractFilePath(Application->ExeName)+"patch.ini");
Ini->WriteString("PATH", "Directory", Path);
Кнопка Обзор не реагирует на действия пользователя т.е не открываться окно выбора изображения.
-*---*-
На вкладке Dialogs у меня нет OpenPictureDialog, есть TOpenPictureDialog.
Я перетаскиваю его, на окно моей программы, потом 2 разы щелкаю по созданной форме(чтоб перейти до редактирования кода в новой области),
а оно открывает "Проводник" для выбора картинки.Непонятно как-то.
-*---*-
Подскажите что делать?
или если вам не сложно, напишите готовый код всей программы для выполнения требуемых задач.
|
Цитата:
Цитата qE+
есть TOpenPictureDialog »
|
Это он и есть. Щёлкать по нему не нужно, у вас же за открытие диалогового окна отвечает кнопка Обзор... вот по ней щёлкайте, и в обработчике OnClick.
Готовый код для выполнения требуемых задач. Нужны компоненты Button, Image.
Код:
#include <inifiles.hpp>
...
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if(OpenPictureDialog1->Execute()){
Image1->Picture->LoadFromFile(OpenPictureDialog1->FileName);
String PathDirectory = ExtractFileDir(OpenPictureDialog1->FileName);
String PathEXE = ExtractFilePath(Application->ExeName);
TIniFile *Ini = new TIniFile(ExtractFilePath(Application->ExeName)+"patch.ini");
Ini->WriteString("PATH", "Directory", PathDirectory);
}
}
|
Drongo,
Button это кнопка, а Image это TOpenPictureDialog???
-*---*-
При добавлении строки:
Код:
#include <inifiles.hpp>
в основной код, приложение вообще не запускается, а при компиляции выдает ошибки:
"E2451 Undefined symbol 'OpenPictureDialog1'"
"E2451 Undefined symbol 'Image1'"
как это понимать??
|
Цитата:
Цитата qE+
а Image это TOpenPictureDialog??? »
|
Нет, Image это Image. Находится на вкладке Additional - компонент TImage
Цитата:
Цитата qE+
#include <inifiles.hpp> »
|
Это ж заголовочный файл, его нужно вверх, там где все #include стоят.
Код:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "MyRunProgram.h"
#include <inifiles.hpp> // Например сюда...
#include <FileCtrl.hpp>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
...
|
Drongo,
работает :)
но вот очередная проблема(ы):
-при открытии "Проводника" для выбора изображений
из перечисленных, нужных мне форматов присутствует только *.bmp.Зато есть ненужные мне *.ico и другие.
Как мне дописать нужные мне форматы и удалить не нужные??
-перетащил я Image куда нужно, работает все нормально т.е. при выборе картинки в "Проводнике" она отображается в этой форме.Но проблема в том что если картинка большая(например, 1280х1024 пикселей)
то только ее часть отображается в форме Image.
Как исправить эту нелепость т.е. чтоб в заданной форме отображался весь рисунок??
-и не сохранился путь к картинке в ini-файл.
или эта функция при обычном(не откомпилированном) запуске не работает, надо только компилировать??
|
Цитата:
Цитата qE+
Как мне дописать нужные мне форматы и удалить не нужные?? »
|
Задачи себе такой не ставил, поэтому выводить рисунок в формате .jpg, .jpeg не умею. Дописать можно открыв фильтр и вписав необходимые расширения, но указаные форматы файлов присутствуют в фильтре, нужен код которы будет загружать и отображать файлы .jpg, и т.д.
Цитата:
Цитата qE+
Как исправить эту нелепость т.е. чтоб в заданной форме отображался весь рисунок?? »
|
Установить в свойствах компонента Image значения true в параметре AutoSize и Center. Смотрите скриншот.
Цитата:
Цитата qE+
-и не сохранился путь к картинке в ini-файл.
или эта функция при обычном(не откомпилированном) запуске не работает, надо только компилировать?? »
|
Надо выбрать необходимый файл, ведь как иначе программа узнает при запуске, путь к нужному вам файлу?
|
Цитата:
Цитата qE+
при открытии "Проводника" для выбора изображений
из перечисленных, нужных мне форматов присутствует только *.bmp.Зато есть ненужные мне *.ico и другие.
Как мне дописать нужные мне форматы и удалить не нужные?? »
|
Добавь к #include <inifiles.hpp> строку
Код:
#include <inifiles.hpp>
#include <jpeg.hpp> // Эту строку
|
Цитата:
Цитата Drongo
Добавь к #include <inifiles.hpp> строку »
|
и допустим для *.png формата нада добавить это - #include <png.hpP> ??
А как удалить *.ico и другие не нужные форматы?
|
Цитата:
Цитата qE+
и допустим для *.png формата нада добавить это - #include <png.hpP> ?? »
|
Такого вроде бы нет. Для .png не знаю.
Цитата:
Цитата qE+
А как удалить *.ico и другие не нужные форматы? »
|
Так же как и добавляете, только наоборот. Вам нужно удалить ненужное расширение. коммент 8 Есть такие
Код:
*.jpg;*.jpeg;*.bmp;*.ico;*.emf;*.wmf
Допустим не нужно - .ico удаляете в строке *.ico;
|
Drongo,
Странно, не заметил этой информации в том посте.
Но все равно спасибо.
Сейчас попробую, отпишу что вышло.
|
Время: 18:42.
© OSzone.net 2001-