Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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

Пока не верю. Как избавится от смой кнопки? У меня есть картинка с овалом. Как сделатьтак, чтобы пользователь видел только овал? А краев кнопки видно небыло&#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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.55 MB
Время: 0.006 c
6-1184079238
nord12345
2007-07-10 18:53
2008.05.04
Возможно ли получить имя ПК в другой подсети?


15-1205827501
Montero
2008-03-18 11:05
2008.05.04
Ричард Столлмен против Веб 2.0


15-1206408609
DimonS
2008-03-25 04:30
2008.05.04
Как заинсталлить драйвер Access?


2-1207383847
andreil
2008-04-05 12:24
2008.05.04
Преобразовать массив пикселей в BitMap?


2-1207637311
bagos
2008-04-08 10:48
2008.05.04
findcomponent в потоке





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский