Использование TImage вместо TButton
Заранее благодарю.
Здравствуйте уважаемые господа! Подскажите мне пожалуйста возможно ли использовать TImage вместо TButton, т.е. хочется поместить картинку и на нее нажимать как на кнопку.
Заранее благодарю.
Легко, обрабатывай событие click и все....Брось TImage на форму два раза по нему щелкни и обрабатывай это событие...
Здравствуйте уважаемые господа! Подскажите мне пожалуйста возможно ли использовать TImage вместо TButton, т.е. хочется поместить картинку и на нее нажимать как на кнопку.
Заранее благодарю.
А может тебе TSpeedButton с его свойством Glyph подойдет?
А может тебе TSpeedButton с его свойством Glyph подойдет?
Нет лучше TImage в нем можно хотя бы кнопки рисовать делать подсветку и все такое, только одна беда он ресурсы кушает...Красота требует жертв
Нет лучше TImage в нем можно хотя бы кнопки рисовать делать подсветку и все такое, только одна беда он ресурсы кушает...Красота требует жертв
А такой вот вопрос: можно ли сделать нечто вроде встроенной в приложение базы данных картинок, которые (картинки) можно лепить при желании на место существующей? Каким образом это делается?
Хочется иметь следующее: нажимаем на TImage, который представлен как глазок (или можно сказать как потухший светодиод) и он меняет свою картинку на другую, типа загорелся светодиод.
Заранее благодарю за помощь!
А такой вот вопрос: можно ли сделать нечто вроде встроенной в приложение базы данных картинок, которые (картинки) можно лепить при желании на место существующей? Каким образом это делается?
Хочется иметь следующее: нажимаем на TImage, который представлен как глазок (или можно сказать как потухший светодиод) и он меняет свою картинку на другую, типа загорелся светодиод.
Заранее благодарю за помощь!
Смотри TImageList.
Смотри TImageList.
Скажите, программно можно менять картинку на TImage? Как это сделать?
Скажите, программно можно менять картинку на TImage? Как это сделать?
Да по-моему просто загружать их одноименного с exeшником каталога - типа
TImage1->Picture->LoadFromFile("1.bmp");
потом в конце можно освободить память
TImage1->Picture->FreeImage(); так кажется
А такой вот вопрос: можно ли сделать нечто вроде встроенной в приложение базы данных картинок, которые (картинки) можно лепить при желании на место существующей? Каким образом это делается?
Опять же база данных ведь может помочь если юзер хочет выбрать нравившуюся ему кратинку, если же просто нужен калейдоскоп, но в запланированном порядке, тогда Вам дорога через генератор случайных чисел без randomize(), то есть наверное что-то типа
int a;
int R();
{
a = rand();
}
а потом сгенерированный номер связать с картинкой
Да по-моему просто загружать их одноименного с exeшником каталога - типа
TImage1->Picture->LoadFromFile("1.bmp");
потом в конце можно освободить память
TImage1->Picture->FreeImage(); так кажется
А такой вот вопрос: можно ли сделать нечто вроде встроенной в приложение базы данных картинок, которые (картинки) можно лепить при желании на место существующей? Каким образом это делается?
Опять же база данных ведь может помочь если юзер хочет выбрать нравившуюся ему кратинку, если же просто нужен калейдоскоп, но в запланированном порядке, тогда Вам дорога через генератор случайных чисел без randomize(), то есть наверное что-то типа
int a;
int R();
{
a = rand();
}
а потом сгенерированный номер связать с картинкой
Мне необходимо сделать приложение, которое будет управлять асфальто-смесительным агрегатом. Под ОС QNX оно уже сделано. Необходимо сделать эмулятор этого приложения под Windows. Ни о каких картинках, лежащих на диске в читаемом формате не может быть и речи! Нужно встроить картинки в приложение. Причем картинки статичны, т.е. есть определенный набор, кроме которого нет ничего более. Я присоединяю файл приложения под Windows. Посмотрите, что оно будет.
Мне необходимо сделать приложение, которое будет управлять асфальто-смесительным агрегатом. Под ОС QNX оно уже сделано. Необходимо сделать эмулятор этого приложения под Windows. Ни о каких картинках, лежащих на диске в читаемом формате не может быть и речи! Нужно встроить картинки в приложение. Причем картинки статичны, т.е. есть определенный набор, кроме которого нет ничего более. Я присоединяю файл приложения под Windows. Посмотрите, что оно будет.
Во-первых, твоя прога без dll, и потому не запускается, во-вторых, для встраивания в программум ожет можно сделать что-то типа TableGrid невидимого visiblа, и оттуда загружать
Во-первых, твоя прога без dll, и потому не запускается, во-вторых, для встраивания в программум ожет можно сделать что-то типа TableGrid невидимого visiblа, и оттуда загружать
Я извиняюсь, это была моя ошибка. Здесь можно скачать этот файл. Все необходимые файлы там присутствуют. Я сам проверил специально на другой машине, где не установлен C++ Builder 6.
Благодарю за внимание! :)
P.S. Я извиняюсь, ссылку обновил, она была не верна. Теперь ссылка верная. :)
ImageList1->GetBitmap(0,Image1->Picture->Bitmap);
Это по поводу того, как менять картинки.
Дружище, во-первых файла не нашел (может совсем тупой стал), во-вторых, к слову, не надо инсталлятор запихивать в архив - получается архив в архиве
Дружище, во-первых файла не нашел (может совсем тупой стал), во-вторых, к слову, не надо инсталлятор запихивать в архив - получается архив в архиве
Дружище! http://kuenix.narod.ru/files/msu/input.rar - вот ссылка. Все работает, я проверил.
Дружище, во-первых файла не нашел (может совсем тупой стал), во-вторых, к слову, не надо инсталлятор запихивать в архив - получается архив в архиве
Ну что? Нашешел файл? К слову, там не инсталлятор. Там обыкновенный exe-шник+dll-ка+все остальное необходимое (от Borland) :)
Ребята! Кто подскажет, каким образом заставить TImage визуально нажиматься? Т.е. все работает, только TImage статично. Не видно, нажимается оно или нет. Определить это можно только по исполняемому коду. Хотелось бы иметь утапливаемость TImage как у TButton.
Тогда уже опишите, зачем вам понадобилось скрещивать ежика с удавом. Мне, например, кажется, что если нужен функционал кнопки, то лучше взять кнопку, а не рисунок.
Тогда уже опишите, зачем вам понадобилось скрещивать ежика с удавом. Мне, например, кажется, что если нужен функционал кнопки, то лучше взять кнопку, а не рисунок.
Ситуация следующая: есть программа, которая обслуживает систему управления асфальто-смесительным агрегатом, написанная под ОС QNX Momentics 6.2.1. Программу писал я. Необходимо написать эмулятор этой программы под Windows. Под Windows я раньше не писал вообще. Здесь примерно то, что должно получится. Необходимо использовать кнопки, окошки, меню и т.п. такого же вида как и в QNX. Соответственно в Windows таких элементов нет. Поэтому и приходится извращаться. Посмотрите пожалуйста ссылку. Т.е. должно получится нечто вроде скина, на стандартную кнопку TButton повесить рисунок, совершенно другого вида, как мне кажется отжатое и нажатое состояние. Вот такие дела... Какие будут предложения?
Понятно теперь зачем вам кнопки...:-)
Вы и под ДОС не учились программировать? В частности кнопки рисовать? Нас вот помню учили (как раз ваш случай). Страшная мутота, но это видимо как раз ваш случай. Проблемы запрограммировать нет. Фишка типа в том, чтобы нарисовать две картинки:
1) Кнопка в обычном (отжатом) состоянии;
2) Кнопка в нажатом состоянии, которая в примитивном случае отличается от 1-ой смещением рисунка немного влево вверх и рисованием тени(черной или серой полосы) по нижней и правой границе кнопки. Это типовое решение (так выглядит кнопка "Ответить" форума, которую я сейчас нажму).
Визуально, при переключении рисунков это будет похоже на нажатие.
Скачал, посмотрел - красивая штучка этот ваш бетоно-смесительный агрегат...
Понятно теперь зачем вам кнопки...:-)
Вы и под ДОС не учились программировать? В частности кнопки рисовать? Нас вот помню учили (как раз ваш случай). Страшная мутота, но это видимо как раз ваш случай. Проблемы запрограммировать нет. Фишка типа в том, чтобы нарисовать две картинки:
1) Кнопка в обычном (отжатом) состоянии;
2) Кнопка в нажатом состоянии, которая в примитивном случае отличается от 1-ой смещением рисунка немного влево вверх и рисованием тени(черной или серой полосы) по нижней и правой границе кнопки. Это типовое решение (так выглядит кнопка "Ответить" форума, которую я сейчас нажму).
Визуально, при переключении рисунков это будет похоже на нажатие.
Под DOS в свое время писал довольно много, вот под Windows не довелось... Но сейчас наверстываю упущенное. :)
Это прийдется все отрисовать? В принципе не вопрос, но как-то некрасиво (это сугобо мое ИМХО). Вот в QNX на любой компонент можно было посадить рисунок. Будь то кнопка, окошко или еще что... Если более красивого решения нет, что ж, прийдется заморачиваться.
P.S. Кнопка "Ответить" форума не имеет никакого отношения к двум изменяющимся рисункам. А если я в Линуксе открою форум? Кнопочка то поменяет свой вид! А самое интересное, это когда в QNX открыть форум - все кнопочки QNX-стандарта. Это в смысле как образец отжатия/нажатия...
P.P.S. Кстати в DOS была такая библиотечка (под Borland C) которая на уровне С++ позволяла создавать приложения с окошками, кнопочками и т.п. лабудой... Вот это была, в свое время, вещь!
Скачал, посмотрел - красивая штучка этот ваш бетоно-смесительный агрегат...
Кстати! Если вам интересно более подробно узнать про нашу продукцию (имеется в виду продукция фирмы на которой я работаю), заходите на официальный сайт НТЦ "Информационные Системы", также вы можете посмотреть мои проекты здесь или на моем личном сайте.
Спасибо за внимание!
Это прийдется все отрисовать? В принципе не вопрос, но как-то некрасиво (это сугобо мое ИМХО). Вот в QNX на любой компонент можно было посадить рисунок. Будь то кнопка, окошко или еще что... Если более красивого решения нет, что ж, прийдется заморачиваться.
По-моему, мы о разном. Я не предлагаю вам отрисовывать ЭТО на канве как в ДОС. Я идею кинул, что надо нарисовать. Короче, алгоритм такой: рисуете в графическом редакторе свои нестандарные элементы управления в двух видах(нажата/отжата), засовываете их в TImageList или в ресурсы, а при кликах переключаете рисунки. Какое красивое решение вам надо? Если у вас картинка нестандартная, то нарисовать же ее все равно кто-то должен.
По-моему, мы о разном. Я не предлагаю вам отрисовывать ЭТО на канве как в ДОС. Я идею кинул, что надо нарисовать. Короче, алгоритм такой: рисуете в графическом редакторе свои нестандарные элементы управления в двух видах(нажата/отжата), засовываете их в TImageList или в ресурсы, а при кликах переключаете рисунки. Какое красивое решение вам надо? Если у вас картинка нестандартная, то нарисовать же ее все равно кто-то должен.
Под красивым решением, я подразумевал следующее: в QNX создавалась форма, которую я заполнял картинками-кадрами. Потом, в любое время по необходимости я подтягивал на кнопку другую картинку. Там (в QNX) была возможность создать таймер (компонент такого же типа как и кнопка), положить его на форму и привязать к нему код. Собственно на форме его видно не было. Но код выполнялся, например, каждые 10 мс. Этот код подхватывал состояния глобальных булевых переменных (а значения переменных задавались через другой программный блок, т.е. грубо говоря анализировались состояния портов плат цифрового ввода/вывода), анализировал их и в зависимости от значения прорисовывал соответствующую кнопку или еще чего-нибудь. Например так:
ApDBase_t *db;
...
bool StatusKonveer, oldStatusKonveer;
...
//собственно вызов, который выполнялся по таймерному тику
int TIMER_REPEAT(PtWdget_t *widget, ApInfo_t *apinfo, PtCallbackInfo_t *cbinfo){
...
if(StatusKonveer!=oldStatusKonveer){
//Получаем ресурс картинку и устанавливаем ее на нужную кнопку
PtSetResource(ABW_button_konveer, Pt_ARG_LABEL_IMAGE,
ApGetImageRes(db, "indikator_on"), 0);
//"Старое" значение булевой переменной
//приравниваю текущему во избежание ненужного
//повторения вызова картинки, т.к.
//вызов картинки - ресурсоемкая функция
oldStatusKonveer=StatusKonveer;
}
//Такие структуры идут одна за одной
//для каждого элемента в программе,
//который управляет механизмами (кнопки).
...
return (Pt_CONTINUE);
};
...
Хочется поиметь такую же структуру в Windows. Возможно ли это? Или хотя бы нечто подобное?
Ну что? Нашешел файл? К слову, там не инсталлятор. Там обыкновенный exe-шник+dll-ка+все остальное необходимое (от Borland) :)
Да я про Rar3.20 с твоего сайта - с разницей в 4 кило
Похоже, что QNX не событийно-ориентированная ОС (может некорректно выразился). В Windows таймеры нужны редко. Во всяком случае для того, чтобы поменять картинку ПРИ НАЖАТИИ на кнопку (читай происшествия некоторого события), никакие таймеры не нужны. А так есть в винде TTimer - пожалуйста.
Вы немного неправильно поняли. Конечно же она событийная. :) Вообще это операционная система реального времени, которая применяется исключительно для содания специфических приложений - систем управления тех-процессом. В ней тоже возможно повесить отработку события нажатия на кнопку. Просто я использую такую структуру для того, чтобы программа была хорошо разбита на модули, т.е. был модульной и легко изменяемой. Вот например, написав блок отрисовки, я тем самым "забываю" о том, что нужно что-либо где-то отрисовывать. Я пишу логику тех-процесса следующим образом: анализирую состояние переменных и устанавливаю их значения в зависимости от текущей ситуации. По отношению к Windows я хочу структурно организовать программу сходным образом для облегчения переноса программного кода. Например, зачем мне переделывать уже написанный модуль логики на 4000 строк, когда его можно просто напрямую перенести в Wiondows, поскольку в модуле логики не используется ничего несовместимого - операторы if, else и анализ булевых переменных. Вот собственно почему я и хочу придерживаться такой структуры программы.
P.S. Вот на счет таймера (TTimer) - это хорошая новость! Все намного упрощается.
P.P.S. Вопрос таки остается открытым: можно ли сделать в Windows встраивание картинок в приложение (в exe-шник) и вызывать их по мере надобности? Желательно привести пример программного кода.
Заранее благодарю за помощь.
Про P.P.S.: внятно объясните чем вам не подходит TImageList? То, что вы туда загрузите в design-time, будет хранится в exe-шнике.
Реального времени - это круто...
Про P.P.S.: внятно объясните чем вам не подходит TImageList? То, что вы туда загрузите в design-time, будет хранится в exe-шнике.
Уточняю: я только-только начал программировать под Windows. Имеется немалый опыт программирования под QNX.
Теперь по сути: расскажите, каким образом это реализуется? Я посмотрел на TImageList - туда действительно можно закинуть много картинок разных. Если можно, приведите пример его использования, т.е. как картинку из TImageList вставить в произвольный TImage. Желательно привести программный код. Во вторых, если можно подскажите, где мне взять TTimer? Как им пользоваться? Желательно тоже в примерах с кодом.
Заранее благодарю!
Закидываете в ImageList1 кучу картинок. Кладете на форму Image1.
А вот так загружается 1-я картинка из ImageList1:
ImageList1->Draw(Image1->Canvas, 0, 0, 0);
2)
TTimer можно взять на странице компонет SYSTEM. Устанавливаете свойство Interval в 10000 (для 10сек.), щелкаете дважды по компонету TTimer на форме и пишите код, кот. должен выполняться каждые 10сек.
1)
Закидываете в ImageList1 кучу картинок. Кладете на форму Image1.
А вот так загружается 1-я картинка из ImageList1:
ImageList1->Draw(Image1->Canvas, 0, 0, 0);
2)
TTimer можно взять на странице компонет SYSTEM. Устанавливаете свойство Interval в 10000 (для 10сек.), щелкаете дважды по компонету TTimer на форме и пишите код, кот. должен выполняться каждые 10сек.
Большое спасибо за помощь! Вы мне очень помогли.