Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.05.04;
Скачать: CL | DM;

Вниз

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

Пока не верю. Как избавится от смой кнопки? У меня есть картинка с овалом. Как сделатьтак, чтобы пользователь видел только овал? А краев кнопки видно небыло&#133


 
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

ППЦ :) Я, честно, думал ты обзываешься&#133 Пойду погляжу :)


 
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, она платная&#133 :) если вдруг это станет для
> тебя препятствием :)

Жалко конечно деньги на такое тратить :). Так и не понял какая из них мне нужна.?


 
Kolan ©   (2008-03-21 16:01) [16]

> [12] DVM ©   (21.03.08 15:51)

Благодарю. Я, если честно, сам сразу бы не написал такую кнопку&#133


 
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;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.017 c
3-1196665593
Alice
2007-12-03 10:06
2008.05.04
распарсить в БД


15-1206382954
oxffff
2008-03-24 21:22
2008.05.04
The Unicode Shift


3-1196422520
Delpher555
2007-11-30 14:35
2008.05.04
Как удалить/(снять атрибут) PRIMARY и FOREIGN KEY с поля?..


2-1207579151
Снежинка
2008-04-07 18:39
2008.05.04
Сортировка


2-1207560659
AndrewG
2008-04-07 13:30
2008.05.04
InterBase 6.5