![]() |
|
|
![]()
|
|
| susanin |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 587 Регистрация: 7.10.2006 Где: Санкт-Петербург Репутация: нет Всего: 7 |
как сделать, чтобы компилятор определял есть ли в компоненте Image рисунок??? и сразу еще вопрос.... создал операцию отмены поворота изображения с помощью Clipboard(), но почему то эта операция нормально работает только в главном меню...при создании такого же кода на быстрой кнопке вылетает страшная ошибка....как будто ассемблирование программы( если я правильно понял) в чем может быть проблема?
вот код для главного меню
и вот код который я записываю в обработчик быстрой кнопки
сразу скажу, изображение я заношу в память перед поворотом...
в чем проблема, подскажите??? кстати, возникает эта ошибка только при запуске из самого борланда...если пролграмму скомпилировать и запустить потом как простую прогу, то никаких ошибок не возникает и все идет нормально! Это сообщение отредактировал(а) susanin - 5.3.2007, 18:32 |
||||||
|
|||||||
| susanin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 587 Регистрация: 7.10.2006 Где: Санкт-Петербург Репутация: нет Всего: 7 |
вопрос с ошибкой решился!!!!!!
как сделать, чтобы компилятор определял есть ли в компоненте Image рисунок??? этот вопрос остается открытым!! |
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 24 Всего: 98 |
IMHO никак не сделать: компилятору абсолютно всеравно какие значения имеют поля класса (окромя статических членов). тут проще другим путем пойти...
-------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| susanin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 587 Регистрация: 7.10.2006 Где: Санкт-Петербург Репутация: нет Всего: 7 |
_hunter, каким? можешь подсказать?
у меня была идея, сделать обработчик ошибки ....т.е. если в буфер ничего не занесено, то он бы выводил соответствующее сообщение об этом(а так выводится сообщение "Invalid Clipboard format"), но как это сделать я к сожалению никак не могу найти.... может вы знаете? там try{ } catch { } или что то в этом роде... Это сообщение отредактировал(а) susanin - 5.3.2007, 20:07 |
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 24 Всего: 98 |
стоп. так тебе проверка где/для чего нужна? для Image'а или для Clipboard'а?
для второго можно GetClipboardFormatName/EnumClipboardFormats использовать (или их VCL аналоги) хотя судя по коду: тебе достаточно перед Assign'ом Picture на NULL проверять... -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| aldari |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 5.3.2007 Репутация: нет Всего: нет |
Использование перехватчика исключений не поможет.
Код находящийся в try выполниться только во время исполнения программы. Подумай как по другому сделать. Объясни постановку задачи |
|||
|
||||
| susanin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 587 Регистрация: 7.10.2006 Где: Санкт-Петербург Репутация: нет Всего: 7 |
вобщем такое дело! написана у меня программа, которая работате с изображениями bmp. есть на форме 2 компонента Image. в одном находится исходное изображение, во втором измененное. я хочу сделать отмену, для изменения изображения. т.е пользователь сделал изменение изображения, нажал отмену и оно вернулось к предыдущему виду. я это сделал используя буфер обмена..., но теперь надо сделать, чтобы при нажатии на отмену сразу после загрузки изображения на экран выводилось сообщение, говорящее, что изображение не изменялось. вот я подумал это сделать с помошью перехватчика исключений. _hunter, я написал вот так
но ничего путнего не получилось...по прежнему выводится только сообщение программы "Invalid Clipboard format"...что я неправильно написал??? Это сообщение отредактировал(а) susanin - 6.3.2007, 20:18 |
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 24 Всего: 98 |
довольно оригинальное решение... а смысл тут проверять Picture? тут нужно формат буффера проверять... -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| susanin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 587 Регистрация: 7.10.2006 Где: Санкт-Петербург Репутация: нет Всего: 7 |
_hunter , а как это сделать?
|
|||
|
||||
| aldari |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 5.3.2007 Репутация: нет Всего: нет |
1) сохранять копию твоего рисунка в объект TBitmap требуется много оперативной памяти 2) если ты можешь описать изменения рисунка, то запоминай исходный рисунок и все изменения после отмены применяй все изменения, кроме последнего к исходному требется много процессорного времени можно сделать их кобинацию: во втором случае делай копии после определенного числа изменений. Всё зависит от того, какие действия ты проводишь с рисунком. Кстати, с помощью TBitmap (оболочка для WIN API Bitmap) можно рисовать в памяти, а затем измененый рисунок выводить на Canvas, что намного быстрее. Это сообщение отредактировал(а) aldari - 7.3.2007, 09:23 |
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 24 Всего: 98 |
примерно так:
-------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| susanin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 587 Регистрация: 7.10.2006 Где: Санкт-Петербург Репутация: нет Всего: 7 |
aldari , не, не катит! мне надо проверять не изменение рисунка, а его появление в объекте Image....
_hunter , а можно пример кода использования GetClipboardFormatName/EnumClipboardFormats как например его применить для проверки буфера? |
|||
|
||||
| FFFFFFF7 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 167 Регистрация: 13.10.2006 Репутация: 2 Всего: 2 |
ну, так использовать поле Tag нельзя? ;) Если ужо загружено, Tag ставь в 1, коли нет - в 0, например.
--------------------
Да помоги кодеру, а значит - ближнему своему! |
|||
|
||||
| codelord |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 777 Регистрация: 7.5.2005 Где: ты моя темноглаза я где?! Репутация: 16 Всего: 39 |
Как нибудь так TClipboard *pClip = Clipboard(); и соответственно if(Clipboard()->HasFormat(CF_TEXT)); или if(Clipboard()->HasFormat(CF_BITMAP)); ну или звук if(Clipboard()->HasFormat(CF_WAVE) ); Добавлено @ 00:50
а если так
|
||||||
|
|||||||
| susanin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 587 Регистрация: 7.10.2006 Где: Санкт-Петербург Репутация: нет Всего: 7 |
codelord , отлично!!!! 5 баллов за подсказку! как раз то что надо!!!
|
|||
|
||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |