Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.08.2019, 18:58   #1
Alex711
Пользователь
 
Регистрация: 21.09.2018
Сообщений: 99
По умолчанию SpeedButton

Здравствуйте, как можно сделать SpeedButton не доступным для нажатия, но видимым, процедуру OnClick удалять нельзя (недоступность для нажатия нужна только на время)?
Alex711 вне форума Ответить с цитированием
Старый 07.08.2019, 19:11   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Enabled False
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 07.08.2019, 19:17   #3
Alex711
Пользователь
 
Регистрация: 21.09.2018
Сообщений: 99
По умолчанию

Enabled False и кнопка пропадает совсем.
Alex711 вне форума Ответить с цитированием
Старый 07.08.2019, 19:22   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Дык может цветовая схема ненормальная? Visible скрывает, Enabled ни капли
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 07.08.2019, 19:22   #5
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Цитата:
Сообщение от Alex711 Посмотреть сообщение
и кнопка пропадает совсем.
Чо? Это в каких Дельфях?
Black Fregat вне форума Ответить с цитированием
Старый 07.08.2019, 19:26   #6
Alex711
Пользователь
 
Регистрация: 21.09.2018
Сообщений: 99
По умолчанию

Delphi 7. Картинки из ImageList, Enabled прячет всё.
Alex711 вне форума Ответить с цитированием
Старый 07.08.2019, 20:13   #7
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

А в этом ImageList добавлены глифы для Disabled состояния кнопок?
Посмотрите, как устроены поставляемые с Delphi глифы, они лежат в Program Files\Common Files\Borland Shared\Images\Buttons

И ещё смотреть свойство NumGlifs

Последний раз редактировалось Black Fregat; 07.08.2019 в 20:22.
Black Fregat вне форума Ответить с цитированием
Старый 08.08.2019, 20:02   #8
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,183
По умолчанию

https://programmersforum.ru/showpost...55&postcount=9
и
http://rsdn.org/forum/delphi/1136207.1

Вот набросал код делающий из одного активного изображения в Glyph два:
Код:
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Buttons, Vcl.StdCtrls;

type
  TForm1 = class(TForm)
    SpeedButton1: TSpeedButton;
    CheckBox1: TCheckBox;
    procedure CheckBox1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormPaint(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  procedure BmpGrayscale(var Bmp: TBitmap);
  procedure SpeedButtonGray2Bmp(SB: TSpeedButton);

implementation

{$R *.dfm}

procedure BmpGrayscale(var Bmp: TBitmap);
var
  r, g, b, w, h, x, y, irgb, Gscale : integer;
begin // делаем серым изображение
  w := Bmp.Width - 1;
  h := Bmp.Height - 1;

  for x := 1 to w do
  begin
    for y := 1 to h do
    begin
      irgb := ColorToRgb(Bmp.Canvas.Pixels[x, y]);
      r := getRvalue(irgb);
      g := getGvalue(irgb);
      b := getBvalue(irgb);
      gscale := round((0.30 * getRvalue(irgb)) + (0.59 * getGvalue(irgb)) +
        (0.11 * getBvalue(irgb)));
      Bmp.Canvas.Pixels[x, y] := rgb(gscale, gscale, gscale);
    end;
  end;
end;

procedure SpeedButtonGray2Bmp(SB: TSpeedButton);
var
  bmp, bmpGray :TBitmap;
begin // делаем два изображения из одного, Активное + Неактивное
 bmp := TBitmap.Create;
 bmpGray := TBitmap.Create;
  try
 bmp.Height := SB.Glyph.Height;
 bmp.Width := SB.Glyph.Width * 2;
 bmpGray.Height := SB.Glyph.Height;
 bmpGray.Width := SB.Glyph.Width;
  // заливка
 bmp.Canvas.Brush.Color := clFuchsia;
 bmp.Canvas.FillRect(bmp.Canvas.ClipRect);
  // активное
 bmp.Canvas.Draw(0, 0, SB.Glyph);
  // серое
 bmpGray.Assign(bmp);
 BmpGrayscale(bmpGray);
 bmp.Canvas.Draw(SB.Glyph.Width, 0, bmpGray);
  // копируем
 SB.Glyph.Assign(bmp);
 SB.NumGlyphs := 2; // сообщаем что два изображения
  finally
 FreeAndNil(bmp);
 FreeAndNil(bmpGray);
  end;
end;

procedure TForm1.CheckBox1Click(Sender: TObject);
begin // вкл-выкл кнопку
 SpeedButton1.Enabled := CheckBox1.Checked;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin // делаем из одного активного изображения два
 SpeedButtonGray2Bmp(SpeedButton1);
end;

procedure TForm1.FormPaint(Sender: TObject);
begin // для наглядности
 Canvas.Draw(10, 10, SpeedButton1.Glyph);
end;

end.

Последний раз редактировалось Alter; 08.08.2019 в 21:15.
Alter вне форума Ответить с цитированием
Старый 09.08.2019, 21:19   #9
Alex711
Пользователь
 
Регистрация: 21.09.2018
Сообщений: 99
По умолчанию

Exit по условию помогло, всем спасибо.
Alex711 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
SpeedButton HTTqp Компоненты Delphi 4 16.03.2014 14:02
SpeedButton Ko$ Помощь студентам 2 09.11.2011 13:33
speedbutton.... f_z_l Компоненты Delphi 3 21.03.2011 18:56
SpeedButton mustang007 Общие вопросы Delphi 5 14.05.2009 19:44
ОЧистить SpeedButton ZhekON Компоненты Delphi 4 19.06.2007 12:28