Форум: "Прочее";
Текущий архив: 2008.05.04;
Скачать: [xml.tar.bz2];
ВнизImage Button какой выбрать? Найти похожие ветки
← →
Kolan © (2008-03-21 15:32) [0]Здравствуйте,
Нужен компонент кнопка-картинка. То есть надо чтобы была возможность задать картинку(для разных состояний) + написать Caption, назначить события.
Посмотрел на торри есть нескольок вариантов:
http://www.torry.net/quicksearchd.php?String=image+button&Title=Yes
Что посоветуете? Может есть еще что-то?
← →
Palladin © (2008-03-21 15:38) [1]ты не поверишь :) но TBitBtn
← →
Johnmen © (2008-03-21 15:38) [2]LMD
← →
DVM © (2008-03-21 15:42) [3]
> Может есть еще что-то?
Этот компонент писать минут 30. Сам бы написал, не позорился. :)
← →
Kolan © (2008-03-21 15:42) [4]> ты не поверишь :) но TBitBtn
Пока не верю. Как избавится от смой кнопки? У меня есть картинка с овалом. Как сделатьтак, чтобы пользователь видел только овал? А краев кнопки видно небыло…
← →
Kolan © (2008-03-21 15:45) [5]Кроме того, TBitBtn.Glyph — это BitMap как известно.
← →
Johnmen © (2008-03-21 15:46) [6]LMD Tools
← →
Palladin © (2008-03-21 15:48) [7]
> Kolan © (21.03.08 15:45) [5]
а... в этом смысле кнопку... ветер я так понимаю дует в сторону все тех же терминалов... фух... поверь мне.. там все строится на html интерфейсе, а на нем сделать подобное - раз плюнуть... а ты фигней страдаешь пытаясь воспроизвести красивости веб в интерфейсе приложения...
по существу: TImage
← →
Kolan © (2008-03-21 15:48) [8]> LMD Tools
ППЦ :) Я, честно, думал ты обзываешься… Пойду погляжу :)
← →
Palladin © (2008-03-21 15:49) [9]тока, AFAIK, она платная... :) если вдруг это станет для тебя препятствием :)
← →
Johnmen © (2008-03-21 15:50) [10]
> Kolan © (21.03.08 15:48) [8]
Это я подкалываю так :)
← →
Kolan © (2008-03-21 15:51) [11]> там все строится на html интерфейсе
Не везде как оказалось, как раз наоборот. Ну у меня и не терминал, у меня тач скрин устройство, почти автономное.
> по существу: TImage
Ну да, только доделать надо. тот же кепшен например + для разных состояний картинки.
← →
DVM © (2008-03-21 15:51) [12]
> Kolan ©
unit MyButton;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TImageButton = class(TCustomControl)
private
MOver: TBitmap;
MDown: TBitmap;
MUp: TBitmap;
Bmp: TBitmap;
ActualBmp: TBitmap;
BmpDAble: TBitmap;
BtnClick: TNotifyEvent;
OnMDown: TMouseEvent;
OnMUp: TMouseEvent;
OnMEnter: TNotifyEvent;
OnMLeave: TNotifyEvent;
procedure SetMOver(Value: TBitmap);
procedure SetMDown(Value: TBitmap);
procedure SetMUp(Value: TBitmap);
procedure SetBmp(Value: TBitmap);
procedure SetBmpDAble(Value: TBitmap);
protected
procedure Paint; override;
procedure MouseDown(Button: TMouseButton; Shift: TShiftState;
X, Y: Integer); override;
procedure MouseUp(Button: TMouseButton; Shift: TShiftState;
X, Y: Integer); override;
procedure MouseEnter(var Message: TMessage); message CM_MOUSEENTER;
procedure MouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
procedure Click; override;
public
constructor Create(AOwner: TComponent); override;
published
property BitmapOver: TBitmap read MOver write SetMOver;
property BitmapDown: TBitmap read MDown write SetMDown;
property BitmapUp: TBitmap read MUp write SetMUp;
property BitmapDisabled: TBitmap read BmpDAble write SetBmpDAble;
property Bitmap: TBitmap read Bmp write SetBmp;
property OnClick: TNotifyEvent read BtnClick write BtnClick;
property OnMouseDown: TMouseEvent read OnMDown write OnMDown;
property OnMouseUp: TMouseEvent read OnMUp write OnMUp;
property OnMouseEnter: TNotifyEvent read OnMEnter write OnMEnter;
property OnMouseLeave: TNotifyEvent read OnMLeave write OnMLeave;
property Enabled;
property ShowHint;
property ParentShowHint;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents("Buttons", [TImageButton]);
end;
constructor TImageButton.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
MOver := TBitmap.Create;
MDown := TBitmap.Create;
MUp := TBitmap.Create;
Bmp := TBitmap.Create;
BmpDAble := TBitmap.Create;
ActualBmp := TBitmap.Create;
Width := 50;
Height := 50;
Canvas.Brush.Color := clBtnFace;
ShowHint := true;
end;
procedure TImageButton.Paint;
begin
inherited Paint;
if ActualBmp.Width = 0 then ActualBmp.Assign(Bmp);
if Enabled or (BmpDAble.Width = 0) then Canvas.Draw(0,0,ActualBmp)
else begin
Width := BmpDAble.Width;
Height := BmpDAble.Height;
Canvas.Draw(0,0,BmpDAble);
end;
end;
procedure TImageButton.Click;
begin
inherited Click;
Paint;
if Enabled then if Assigned(BtnClick) then BtnClick(Self);
end;
procedure TImageButton.SetMOver(Value: TBitmap);
begin
MOver.Assign(Value);
Paint;
end;
procedure TImageButton.SetMDown(Value: TBitmap);
begin
MDown.Assign(Value);
Paint;
end;
procedure TImageButton.SetMUp(Value: TBitmap);
begin
MUp.Assign(Value);
Paint;
end;
procedure TImageButton.SetBmp(Value: TBitmap);
begin
Bmp.Assign(Value);
ActualBmp.Assign(Value);
Width := Bmp.Width;
Height := Bmp.Height;
Paint;
end;
procedure TImageButton.SetBmpDAble(Value: TBitmap);
begin
BmpDAble.Assign(Value);
paint;
end;
procedure TImageButton.MouseDown(Button: TMouseButton; Shift: TShiftState;
X, Y: Integer);
begin
inherited MouseDown(Button, Shift, X, Y);
if (Button = mbLeft) and Enabled then begin
if Assigned (OnMDown) then OnMDown(Self, Button, Shift, X, Y);
if MDown.Width > 0 then begin
ActualBmp.Assign(MDown);
Width := MDown.Width;
Height := MDown.Height;
Paint;
end;
end;
end;
procedure TImageButton.MouseUp(Button: TMouseButton; Shift: TShiftState;
X, Y: Integer);
var MouseOverButton: Boolean;
P: TPoint;
begin
inherited MouseUp(Button, Shift, X, Y);
if (Button = mbLeft) and Enabled then begin
if Assigned (OnMUp) then OnMUp(Self, Button, Shift, X, Y);
if MUp.Width > 0 then begin
GetCursorPos(P);
MouseOverButton := (FindDragTarget(P, True) = Self);
if MouseOverButton then begin
Width := MUp.Width;
Height := MUp.Height;
Canvas.FillRect(Rect(0,0,Width,Height));
Canvas.Draw(0,0,MUp);
end else begin
Width := bmp.Width;
Height := Bmp.Height;
Canvas.FillRect(Rect(0,0,Width,Height));
Canvas.Draw(0,0,Bmp);
end;
end else begin
if MouseOverButton = false then begin
Width := MOver.Width;
Height := MOver.Height;
Canvas.FillRect(Rect(0,0,Width,Height));
Canvas.Draw(0,0,MOver);
end else begin
Width := bmp.Width;
Height := Bmp.Height;
Canvas.FillRect(Rect(0,0,Width,Height));
Canvas.Draw(0,0,Bmp);
end;
end;
end;
end;
procedure TImageButton.MouseEnter(var Message: TMessage);
begin
if Enabled then begin
if MOver.Width > 0 then begin
ActualBmp.Assign(MOver);
Width := MOver.Width;
Height := MOver.Height;
Paint;
end;
end;
end;
procedure TImageButton.MouseLeave(var Message: TMessage);
begin
if Enabled then begin
if Bmp.Width > 0 then begin
ActualBmp.Assign(Bmp);
Width := Bmp.Width;
Height := Bmp.Height;
Paint;
end;
end;
end;
end.
← →
Johnmen © (2008-03-21 15:52) [13]
> Palladin © (21.03.08 15:49) [9]
Она бесплатно бонусом шла в D4, насколько помню. Т.е. можно было глянуть исходники...
← →
Palladin © (2008-03-21 15:55) [14]
> Ну у меня и не терминал, у меня тач скрин устройство, почти
> автономное.
ну я этот тач скрин и имел ввиду, например киоски ОСМП, тот же самый тач скрин... ну да... не везде, но очень очень очень просто строить его на html...
← →
Kolan © (2008-03-21 15:58) [15]> тока, AFAIK, она платная… :) если вдруг это станет для
> тебя препятствием :)
Жалко конечно деньги на такое тратить :). Так и не понял какая из них мне нужна.?
← →
Kolan © (2008-03-21 16:01) [16]> [12] DVM © (21.03.08 15:51)
Благодарю. Я, если честно, сам сразу бы не написал такую кнопку…
← →
Kolan © (2008-03-21 16:07) [17]> [12] DVM © (21.03.08 15:51)
А этот код ты откуда взял? То есть насколько ты в нем уверен?
← →
DVM © (2008-03-21 16:09) [18]
> А этот код ты откуда взял?
Не помню я, он у меня давно валяется. Я его точно не писал, подправил чего там, чего не помню. Код рабочий, хоть и не идеальный.
← →
DVM © (2008-03-21 16:12) [19]
> То есть насколько ты в нем уверен?
А что там быть уверенным - код же перед глазами все элементарно там. Деньги из банкомата он сам не снимет. :)
Подправить покарасивше местами, свойство Caption добавить, может вместо битмапов еще jpeg использовать.
← →
Поп Гапон (2008-03-21 18:18) [20]
> Kolan © (21.03.08 15:42) [4]
>
> > ты не поверишь :) но TBitBtn
>
> Пока не верю. Как избавится от смой кнопки? У меня есть
> картинка с овалом. Как сделатьтак, чтобы пользователь видел
> только овал? А краев кнопки видно небыло…
Гм тебе фон предка на ней отрисовывать, так как иначе только графикконтрол?
Если да, то [19]
http://delphimaster.net/view/1-1198608053/
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2008.05.04;
Скачать: [xml.tar.bz2];
Память: 0.55 MB
Время: 0.006 c