Уважаемые форумчане, есть к примеру компонент TImage (у него есть хорошие свойства для моей задачи такие как отображение изображения с пропорциональным масшабированием и в центре своей области, но у него к примеру нет фокуса ), есть контрол TButton и TBitBtn(у обоих есть фокус но у второго нет масштабирование отображаемого глифа)
и как мне поступить чтобы получить на форме все эти свойства(масштабированое отображение и наличие фокуса с событием OnClick) в одном флаконе или как их можно скомпоновать чтобы на форме они выглядели как один контрол?(может есть готовые решения)
совет по Контролу
Модератор: Модераторы
Написать свой компонент. Что касается window$: TImage - неоконный контрол. Он не может иметь фокус, поскольку системе об этом контроле ничего неизвестно. Объект просто прорисовывает картинку на родительском контроле.
TButton - оконный контрол. Один из его базовых классов - TWinControl. При создании объекта кнопки, создаётся соответствующее окно.
Т.е., кнопка является окном и, соответственно, полноценным объектом ОС: имеет хэндл, получает фокус, содержится в списках объектов ОС и т.д..
Готовые решения почти наверняка есть. Стоит поискать. Но, думаю, не столь сложно самому реализовать такое.
Добавлено спустя 53 секунды:
Кстати, а причём тут OnClick? Он есть и у TImage.
TButton - оконный контрол. Один из его базовых классов - TWinControl. При создании объекта кнопки, создаётся соответствующее окно.
Т.е., кнопка является окном и, соответственно, полноценным объектом ОС: имеет хэндл, получает фокус, содержится в списках объектов ОС и т.д..
Готовые решения почти наверняка есть. Стоит поискать. Но, думаю, не столь сложно самому реализовать такое.
Добавлено спустя 53 секунды:
Кстати, а причём тут OnClick? Он есть и у TImage.
Кстати, а причём тут OnClick? Он есть и у TImage.
да есть? не так выразил просто интересен компонент TImage в виде кнопки с каймой и эфектом нажатия не только мышкой но и с клавиатуры
Добавлено спустя 58 минут 49 секунд:
а еще попутный вопрос может кто знает имеется изображение к примеру внутри TImage как загнать из него в компонент TBitBtn в свойство Glyph это изображение причем в том виде как его отобразил TImage (c пропорциональным масштабированием)
К примеру, так:
Минус в том, что на glyph'е будет именно то, что на канве Image.
Т.е., если снизу - контрол, он также будет прорисован.
Добавлено спустя 16 часов 10 минут 42 секунды:
Кстати, совсем забыл, ещё имеется: Canvas.StretchDraw().
Код: Выделить всё
var bmp: TBitmap;
r: TRect;
begin
bmp := TBitmap.Create;
bmp.Width := Image1.Width;
bmp.Height := Image1.Height;
r := Rect(0, 0, bmp.Width, bmp.Height);
bmp.Canvas.CopyRect(r, Image1.Canvas, r);
BitBtn1.Glyph.Assign(bmp);
bmp.Free;
Минус в том, что на glyph'е будет именно то, что на канве Image.
Т.е., если снизу - контрол, он также будет прорисован.
Добавлено спустя 16 часов 10 минут 42 секунды:
Кстати, совсем забыл, ещё имеется: Canvas.StretchDraw().
