Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Вид SpeedButton на Image в режиме Down:=true


Автор: Johnny_B 1.8.2007, 22:23
Есть форма, на ней Image1 - полностью покрывающий форму с текстуркой бумаги. Кидаю SpeedButton со свойствами AllowAllUp = true; Flat = true; GroupIndex= 1; Transparent= true; Вообщем получается довольно милая кнопка, которая на форме(картинке) отображается только за счет надписи, если курсор сверху - кнопка преподымается, фоновое изображение на кнопке остается, НО если кнопка на жата т.е. Down = true, и курсор вне кнопки! фоновое изображение пропадает и остается стандартный серый втопленный прямоугольничек-кнопка... Есть ли возможность сделать что бы после нажатия на кнопку картинка оставалась таже т.е. получалось как будто курсор мы не убираем - всё красивоsmile   Извеняюсь за сумбурность, надеюсь основную мысль донес... 

Автор: Sanchezzz 1.8.2007, 22:59
я так понял ты хочешь на задний фон формы картинку положить
лучше тебе от рисовать его на форме самим...

это пример из delphi world 
Код

type
   TForm1 = class(TForm)
     Button1: TButton;
     OpenDialog1: TOpenDialog;
     procedure Button1Click(Sender: TObject);
     procedure FormDestroy(Sender: TObject);
   private
     FWallpaper: TBitmap;
     procedure WMEraseBkGnd(var Msg: TWMEraseBkGnd); message WM_ERASEBKGND;
   end;

 var
   Form1: TForm1;

 implementation

 {$R *.DFM}
 procedure TForm1.FormDestroy(Sender: TObject);
 begin
   FWallpaper.Free;
 end;

 procedure TForm1.Button1Click(Sender: TObject);
 begin
   // Load the bitmap 
  // Bild laden 
  if OpenDialog1.Execute then
   begin
     if not Assigned(FWallpaper) then
       FWallpaper := TBitmap.Create;
     FWallpaper.LoadFromFile(OpenDialog1.FileName);
     Invalidate;
   end;
 end;

 procedure TForm1.WMEraseBkGnd(var Msg: TWMEraseBkGnd);
 var
   row, col: Integer;
 begin
   if not Assigned(FWallpaper) then
     inherited
   else
   begin
     // Draw the bitmap 
    // Das Bild zeichnen 
    for Row := 0 to ClientHeight div FWallpaper.Height do
       for Col := 0 to ClientWidth div FWallpaper.Width do
         BitBlt(Msg.Dc,
           Col * FWallpaper.Width,
           Row * FWallpaper.Height,
           FWallpaper.Width,
           FWallpaper.Height,
           FWallpaper.Canvas.Handle,
           0,
           0,
           SRCCOPY);
     Msg.Result := 1;
   end; { else }
 end;

 end.

а пробовал свой Image в на задний фон поставить?

Автор: Johnny_B 1.8.2007, 23:09
Sanchezzz, мне нужно что бы при нажатии СпидБатан*а, который находится на картинке (Имэйдж), СпидБатан не закрывал картинку, т.е. не появлялся на его месте серый прямоугольник-кнопка. А оставалась просто "вмятина-кнопка"..... Уффф... наверное скринами лучше все обьяснить... только куда их выложить...

Добавлено через 11 минут и 50 секунд
http://img127.imagevenue.com/img.php?image=99221_1_122_794lo.JPG
pic#1 
кнопка на форме...

http://img146.imagevenue.com/img.php?image=99227_2_122_862lo.JPG
pic#2
на кнопку наведен курсор, кнопка выделилась

http://img189.imagevenue.com/img.php?image=99238_3_122_600lo.JPG
pic#3
кнопку нажали, курсор всё еще над кнопкой

http://img42.imagevenue.com/img.php?image=99244_4_122_968lo.JPG
pic#4
кнопка нажата, курсор вне кнопки, 

Нужно что бы было при нажатии кнопки как на рис3 а не как на рис4 smile

ЗЫ К сожалению картинки неудалось выложить нормально так как: 
"Динамические страницы в тэгах [IMG] запрещены", а других хранилищ я наспех не нашел:(

Автор: Sanchezzz 2.8.2007, 00:01
используй RXLIB или JEDI там есть компонент аналогичный SpeedButton. называется в RXlib RXSpeedButton в JEDI JvSpeedButton
я проверил и в JEDI и RXlib - SpeedButton хорошо работает + побольше опций.
см рисунок...

Автор: Johnny_B 2.8.2007, 00:33
Sanchezzz, да это то что надо... хотя хотелось конечно стандартными средствамиsmile

Все равно спасибо, вот только где эти компоненты взять, да к тому же я и не разу не пользовался сторонними компонентами... не знаю как их ставить, но думаю разберусь, спсsmile

Добавлено через 12 минут и 53 секунды
Нашел инфу по RXLIB, незря поиск создан smile  

Автор: MetalFan 2.8.2007, 07:26
Цитата(Johnny_B @  2.8.2007,  00:33 Найти цитируемый пост)
Нашел инфу по RXLIB

RxLib вродеб давно не поддерживается. она включена в Jedi-VCL

Автор: W1zArD 2.8.2007, 08:01
jedi
http://jvcl.sourceforge.net

Автор: Sanchezzz 2.8.2007, 19:40
как это не поддерживается у меня на delphi 2006 работает и Jedi и RXlib 
в се компоненты можно найти на torry.ru
Лучше с официального сайта все покатила jedi.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)