Содержание
Bitbtn как правильно называется
Функция BitBlt
Функция BitBlt выполняет передачу битовых блоков данных о цвете, соответствующих прямоугольнику пикселей из заданного исходного контекста устройства в целевой контекст устройства.
[in] Дескриптор целевого контекста устройства. [in] Устанавливает x-координату, в логических единицах измерения, левого верхнего угла целевого прямоугольника. [in] Устанавливает y-координату, в логических единицах измерения, левого верхнего угла целевого прямоугольника. [in] Устанавливает ширину, в логических единицах измерения, исходного и целевого прямоугольников. [in] Устанавливает высоту, в логических единицах измерения, исходного и целевого прямоугольников. [in] Дескриптор источникового контекста устройства. [in] Устанавливает x-координату, в логических единицах измерения, левого верхнего угла исходного прямоугольника. [in] Устанавливает y-координату, в логических единицах измерения, левого верхнего угла исходного прямоугольника. [in] Устанавливает код растровой операции. Эти коды определяют, как данные о цвете для исходного прямоугольника должны быть объединены с данными о цвете для целевого прямоугольника, чтобы достигнуть конечного цвета.Список ниже показывает некоторые общие коды растровых операций.
Если функция завершается успешно, величина возвращаемого значения — не нуль.
Если функция завершается с ошибкой, величина возвращаемого значения — нуль.
Windows NT/2000/XP: Чтобы получать дополнительные сведения об ошибке, вызовите GetLastError .
Функция BitBlt делает отсечение по границам только в целевом контексте устройства (DC).
Если в исходном контексте устройства действует вращение или преобразование сдвига фрагмента изображения, BitBlt возвращает ошибку. Если в исходном контексте устройства встречаются другие преобразования (а преобразование соответствия в целевом контексте устройства не действует ), прямоугольник в целевом контексте устройства растягивается, сжимается или вращается, по мере необходимости.
Если цветовые форматы источниковых и целевых контекстов устройства не соответствуют, функция BitBlt преобразует исходный цветовой формат, чтобы он соответствовал целевому формату.
Когда фиксируется расширенный метафайл, происходит ошибка, если исходный контекст устройства идентифицирует контекст устройства расширенного метафайла.
Не все устройства поддерживают функцию BitBlt. Для подробной информации, см. RC_BITBLT характеристика растровой записи в функции GetDeviceCaps, а так же в следующих функциях: MaskBlt , PlgBlt и StretchBlt .
BitBlt возвращает ошибку, если источниковый и целевой контексты устройства обозначают различные устройства. Чтобы пересылать данные между контекстами устройства (DC) для разных устройств, преобразуйте точечный рисунок в аппаратно-независимый растровый формат (DIB) при помощи вызова функции GetDIBits . Чтобы показать на экране аппаратно-независимый растровый формат (DIB) для второго устройства, вызовите функцию SetDIBits или StretchDIBits .
ICM: Управление цветом не выполняется тогда, когда происходит копирование или пересылка массива данных.
Bitbtn как правильно называется
Компонент Delphi BitBtn это пиктографическая кнопка, представляющая собой один из вариантов стандартной кнопки Button. В отличие от последней кнопка Delphi BitBtn умеет отображать на своей поверхности не только надпись, но и изображение, которое задаётся свойством Glyph. В состав Delphi входит большое количество готовых изображений, которые можно размещать на кнопках Delphi BitBtn. В стандартном случае они располагаются по адресу C:Program FilesCommon FilesBorland SharedImagesButtons .
Свойство Kind компонента Delphi BitBtn определяет один из стандартных вариантов кнопки BitBtn:
Нажатие на любую из них (кроме кнопок со свойством BitBtn.Kind, равным bkCustom или bkHelp) приводит к закрытию модального окна, в котором она установлена, а результат, возвращаемый в программу равен mrName (Name — Yes, Abort, Cancel и т.д. — название кнопки). Отличие есть у кнопки Close, её нажатие (после закрытия модального окна) приводит к возвращению не mrClose а mrCancel, а для главное окно программы просто закрывается, поэтому работа программы сразу завершается.
В случае если пиктограмма Glyph у кнопки Delphi BitBtn была изменена, система Delphi автоматически изменит и её значение BitBtn.Kind, которое станет равным bkCustom
Специфические свойства компонента — пиктографической кнопки Delphi BitBtn перечислены в таблице:
BitBtn — кнопка с рисунком в Delphi
Кнопка с рисунком в Delphi представлена компонентом BitBtn, класс которой TBitBtn порожден непосредственно от класса TButton стандартной кнопки Button. Кнопка с рисунком отличается от стандартной кнопки тем, что помимо заголовка на ней можно отобразить растровое изображение. Видом и размещением изображения на поверхности кнопки BitBtn можно управлять с помощью свойств.
Свойство Glyph
Свойство Glyph типа TBitmap определяет растровый рисунок кнопки. По умолчанию свойство Glyph имеет значение None, т. е. кнопка не содержит рисунок. Рисунок может содержать до трех отдельных изображений (глифов). Какое именно изображение выводится на кнопке, зависит от ее текущего состояния:
- первое изображение отображается, если кнопка не нажата (по умолчанию);
- второе изображение отображается, если кнопка неактивна и не может быть выбрана;
- третье изображение отображается, когда кнопка нажата (выполнен щелчок).
Панель для выбора ресунков (скриншот выше) вызываеться по нажатию на кнопку с тремя точками ввозле свойства Glyph (скриншот ниже).
При использовании нескольких изображений они должны быть подготовлены и сохранены в одном файле растрового формата BMP. Подготовить рисунок для кнопки можно в графическом редакторе. (например с помощью редактора Image Editor, входящего в состав Delphi или Adobe Photoshop). Все отдельные изображения в рисунке должны располагаться без промежутков в горизонтальной строке и иметь одинаковую высоту и ширину (как правило, 16×16 пикселов). По умолчанию левый нижний пиксел каждого рисунка определяет фоновый цвет рисунка. Обычно ему задают цвет поверхности кнопки (значение clBtnFace), при этом все пикселы изображения, имеющие тот же цвет, будут не видны, т. е. являются прозрачными. По этой причине фоновый цвет также называют прозрачным. Если установить, например, желтый цвет фонового пиксела, то фон изображения тоже станет желтым.
Изменить режим отображения картинки в случае, когда фоновый цвет задается левым нижним пикселом рисунка, можно, установив значения его взаимосвязанных свойств TransparentColor и TransparentMode. Для восстановления режима отображения по умолчанию нужно установить свойство TransparentMode в значение tmAuto.
Используя рисунок с несколькими различными изображениями, можно при нажатии кнопки воспроизводить на ее поверхности простейшую анимацию. Для этого первое и третье изображения должны различаться не только цветом, но и видом и расположением фигур. Отметим, что для реализации более сложной анимации можно использовать компонент Animate, расположенный непосредственно на кнопке.
Cвойство NumGlyph
Количество изображений указывается в свойстве NumGlyph типа TNumGiyphs. По умолчанию свойство NumGlyph имеет значение 1, и на кнопке всегда отображается первое изображение.
Cвойство Kind
Delphi предлагает для кнопки BitBtn несколько предопределенных видов, выбираемых с помощью свойства Kind типа TBitBtnKind. При выборе какого-либо вида для кнопки на ней отображается соответствующий глиф. Для задания вида кнопки могут использоваться следующие константы:
- bkCustom— на кнопке имеется выбранное изображение; первоначально изображение отсутствует, и его нужно загружать дополнительно;
- bkOK — на кнопке имеются глиф «зеленая галочка» и текст ОК; свойство Default кнопки установлено в значение True, а свойство ModalResult — в значение mrOK;
- bkCancel — на кнопке имеются глиф «красный знак х» и текст Cancel; свойство Cancel кнопки установлено в значение True, а свойство ModalResult— в значение
- mrCancel;
- bkYes— на кнопке имеются глиф «зеленая галочка» и текст Yes; свойство Default кнопки установлено в значение True, а свойство ModalResult — в значение mrYes;
- bkNo — на кнопке имеются глиф «красная перечеркнутая окружность» и текст No; свойства Cancel кнопки установлено в значение True, а свойство ModalResult — в значение mrNO;
- bkHelp— на кнопке имеются глиф «сине-зеленый вопросительный знак» и текст Help;
- bkClose — на кнопке имеются глиф «дверь с обозначением выхода» и текст Close; при нажатии кнопки форма автоматически закрывается;
- bkAbort — на кнопке имеются глиф «красный знак х» и текст Abort;
- bkRetry— на кнопке имеются глиф «зеленая стрелка повтора операции» и текст Retry;
- bkIgnore — на кнопке имеются глиф «игнорирование» и текст Ignore;
- bkAll — на кнопке имеются глиф «двойная зеленая галочка» и текст Yes to All.
По умолчанию свойство Kind имеет значение bkCustom, и пользователь может сам выбирать изображение, управляя свойством. Не рекомендуется изменять свойство Glyph для предопределенных кнопок (например, для кнопки Close), т. к. в этом случае кнопка не будет выполнять закрепленные за ней действия (в данном случае закрытие окна).
Cвойство Layout
Расположением изображения на поверхности кнопки относительно текста управляет свойство Layout типа TButtonLayout, принимающее следующие значения:
- blGlyphLeft (изображение слева от текста) — по умолчанию;
- blGlyphRight (изображение справа от текста);
- blGlyphTop (изображение над текстом);
- blGlyphBottom (изображение под текстом).
Cвойство Margin
С помощью свойства Margin типа Integer можно управлять выравниванием глифа и текста относительно сторон кнопки. Это свойство задает расстояние в пикселах между стороной кнопки и изображением и по умолчанию имеет значение −1, что означает расположение глифа и текста по центру кнопки. Сторона, относительно которой производится выравнивание, определяется свойством Layout. Например, если значение Layout равно blGlyphLeft, то выравнивание выполняется по левой стороне кнопки.
На скриншоте показаны варианты выравнивания изображения и текста, соответствующие разным значениям свойства Margin.
Свойство Spacing
Свойство Spacing типа Integer определяет размер (в пикселах) промежутка, отделяющего глиф от текста. По умолчанию значение этого свойства равно 4 пикселам. Если значение этого свойства равно −1, то имеет место центрирование текста между краем глифа и дальней от него стороной кнопки.
На скриншоте показано использование различных значений свойства Spacing, отображенных в виде текста на кнопках.
BitBtn — изменение состояния кнопки при нажатии
Изменение картинки при нажатии на BitBtn
Как правильно записать условие? if (BitBtn6->Glyph->LoadFromFile("bmp\strelka_up.bmp")).
Ошибка при нажатии кнопки
У меня при запуске форма работает, но при нажатии на кнопку выбивает вот такую ошибку Access.
Ошибка при нажатии кнопки
При нажатии на BitBtn3 вылазит ошибка. Project Project2.exe raised exeption class.
Переход при нажатии кнопки
Доброго времени суток! Мне нужно сделать меленькую программу на среде Borland C++ Builder 6.0.
Не вызывается событие при нажатии кнопки
Ошибка вероятно глупая, но не реагирует на кнопки. void __fastcall TForm1::FormKeyPress(TObject.
Для этих целей больше подходит SpeedButton и его свойство Down
По моему у вас «легкая паника» (не обижайтесь). Вам всего-то нужно было, чтоб кнопка фиксировалась в нажатом положении и «отлипала» при повторном нажатии. Для этого вообще ничего писать не нужно было. Просто у спидбатона по умолчанию свойство Group=0; а если ее изменить на другое число и проставить AllowUp=true, то все и будет как вы хотели. Принцип такой: если на форме много кнопок (SpeedButton), то присваивая им группу вы получаете то, что в одной группе может быть нажата лишь одна кнопка, — нажатие любой другой кнопки в этой группе отпускает кнопку, нажатую ранее. Если AllowUp=false (по умолчанию), то всегда хоть одна кнопка группы остается нажатой; если true, то могут быть отжаты все кнопки. К группе 0 это не относится. А все разговоры на тему Sender — это попытки объяснить, что можно написать одну функцию для обработки нажатия любой кнопки, если операции в обработчике однотипные. Просто аргумент (TObject *Sender) у функции SpeedButtonClick — это и есть конкретная кнопка, которой назначили эту функцию в качестве обработчика нажатия: в случае SpeedButton2 Sender — это SpeedButton2, в случае SpeedButton3 Sender — это SpeedButton3 и т.д. Но напрямую использовать в функции имя Sender не получится, а посредством приведения типов (может это по другому называется, но выглядит так: ((TSpeedButton*)Sender) ) -можно.
Добавлено через 1 час 17 минут
П.С. Я ошибся: Group имеется в виду GroupIndex
Управляющие кнопки Button и BitBtn
Простейшей и, пожалуй, наиболее часто используемой кнопкой является кнопка Button (см. на рис. 7. в верхнем левом углу формы), расположенная на странице библиотеки Standard. Реже используется кнопка BitBtn (см. на рис. 7. под кнопкой Button), отличающаяся, прежде всего, возможностью отобразить на ее поверхности изображение. Большинство свойств, методов и событий у этих видов кнопок одинаковы.
Основное с точки зрения внешнего вида свойство кнопки — Caption (надпись). В надписях кнопок можно предусматривать использование клавиш ускоренного доступа, выделяя для этого один из символов надписи. Перед символом, который должен соответствовать клавише ускоренного доступа, ставится символ амперсанта «&». Этот символ не появляется в надписи, а следующий за ним символ оказывается подчеркнутым. Тогда пользователь может вместо щелчка на кнопке нажать в любой момент клавишу Alt совместно с клавишей выделенного символа.
Например, если в вашем приложении имеется кнопка выполнения какой-то операции, вы можете задать ее свойство Caption равным «&Выполнить». На кнопке эта надпись будет иметь вид «Выполнить». И если пользователь нажмет клавиши Alt-В, то это будет эквивалентно щелчку на кнопке.
Основное событие любой кнопки — OnClick, возникающее при щелчке на ней. Именно в обработчике этого события записываются операторы, которые должны выполняться при щелчке пользователя на кнопке. Помимо этого есть еще ряд событий, связанных с различными манипуляциями клавишами и кнопками мыши.
Свойство Cancel, если его установить в true, определяет, что нажатие пользователем клавиши Esc будет эквивалентно нажатию на данную кнопку. Это свойство целесообразно задавать равным true для кнопок «Отменить» в различных диалоговых окнах, чтобы можно было выйти из диалога, нажав на эту кнопку или нажав клавишу Esc.
Свойство Default, если его установить в true, определяет, что нажатие пользователем клавиши ввода Enter будет эквивалентно нажатию на данную кнопку, даже если данная кнопка в этот момент не находится в фокусе. Правда, если в момент нажатия Enter в фокусе находится другая кнопка, то все-таки сработает именно кнопка в фокусе.
Еще одно свойство — ModalResult используется в модальных формах, рассмотрение которых выходит за рамки данной книги. В обычных приложениях значение этого свойства должно быть равно mrNone.
Из методов, присущих кнопкам, имеет смысл отметить один — Click. Выполнение этого метода эквивалентно щелчку на кнопке, т.е. вызывает событие кнопки OnClick. Этим можно воспользоваться, чтобы продублировать какими-то другими действиями пользователя щелчок на кнопке. Пусть, например, вы хотите, чтобы при нажатии пользователем клавиши с символом «С» или «с» в любой момент работы с приложением выполнялись операции, предусмотренные в обработчике события OnClick кнопки Button1. Поскольку неизвестно, какой компонент будет находиться в фокусе в момент этого события, надо перехватить его на уровне формы. Такой перехват осуществляется, если установить свойство формы KeyPreview в true. Тогда в обработчике события формы OnKeyPress можно написать оператор
if (key=’C’ or key=’c’) then Button1.Click;
Если пользователь ввел символ «С» или «с», то в результате будет выполнен обработчик щелчка кнопки Button1.
Все сказанное выше в равной степени относится и к Button, и к BitBtn. Рассмотрим теперь особенности кнопки с пиктограммой BitBtn. Изображение на этой кнопке задается свойством Glyph. При нажатии кнопки с многоточием в строке свойства Glyph в Инспекторе Объектов вызывается окно, представленное на рис. 8. Нажав в нем кнопку Load вы перейдете в обычное окно открытия файла рисунка и можете выбрать файл битовой матрицы .bmp, содержащий желаемое изображение. В частности, с Delphi поставляется большое количество изображений для кнопок. Они расположены в каталоге ImagesButtons, а сам каталог Images в Delphi 5 и 4 расположен в каталоге program filescommon filesborland shared, а в других версиях Delphi — в каталоге program filesborlanddelphi. .
Рис. 8. Окно редактора пиктограммы
После того, как вы выбрали изображение, нажмите OK и выбранное изображение появится на вашей кнопке левее надписи.
Файл изображения для кнопки может содержать до четырех изображений пиктограмм размера 16×16. Самое левое соответствует отжатой кнопке. Второе слева соответствует недоступной кнопке, когда ее свойство Enabled равно false. Третье слева изображение используется при нажатии пользователя на кнопку при ее включении. Четвертое слева изображение используется в кнопках с фиксацией SpeedButton, о которых будет сказано позднее, для изображения кнопки в нажатом состоянии. Большинство изображений для кнопок использует две пиктограммы. Число пиктограмм вы можете узнать из свойства кнопки NumGlyphs, которое после загрузки изображения покажет вам число пиктограмм в нем.
Расположение изображения и надписи на кнопке определяется свойствами Margin, Layout и Spacing. Если свойство Margin равно -1 (значение по умолчанию), то изображение и надпись размещаются в центре кнопки. При этом положение изображения но отношению к надписи определяется свойством Layout, которое может принимать значения: blGlyphLeft (слева, это значение принято по умолчанию), blGlyphRight (справа), blGlyphТор (вверху), blGlyphBottom (внизу). Если же Margin > 0, то в зависимости от значения Layout изображение и надпись смещаются к той или иной кромке кнопки, отступая от нее на число пикселей, заданное значением Margin.
Свойство Spacing задает число пикселей, разделяющих изображение и надпись на поверхности кнопки. По умолчанию Spacing = 4. Если задать Spacing = 0, изображение и надпись будут размещены вплотную друг к другу. Если задать Spacing = -1, то текст появится посередине между изображением и краем кнопки.
Еще одно свойство BitBtn — свойство Kind определяет тип кнопки. По умолчанию значение этого свойства равно bkCustom — заказная. Но можно установить и множество других предопределенных типов: bkOK, bkCancel, bkHelp, bkYes, bkNo, bkClose, bkAbort, bkRetry, bkIgnore, bkAll. В этих типах уже сделаны соответствующие надписи, введены пиктограммы, заданы еще некоторые свойства. Обычно все-таки лучше ими не пользоваться. Во-первых, надписи все равно надо переводить на русский язык. Во-вторых, предопределенные рисунки обычно выбиваются из общего стиля конкретного приложения. И главное — предопределение некоторых свойств, не учтенных вами, может иногда приводить к странным результатам работы. Уж лучше использовать заказные кнопки и самому устанавливать в них все необходимые свойства.
Читайте далее: