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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.05.2008, 12:40   #1
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию SpeedButton.Glyph

Пытался поменять рантайм битмап (свойство Glyph) у спидбатона, не меняет. Первый раз присваивается (тоже рантайм) и все, поменять невозможно.
Может кто знает, в чем тут дело и как это обойти?
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 03.05.2008, 13:12   #2
N!ckeL
Форумчанин
 
Регистрация: 29.03.2008
Сообщений: 300
По умолчанию

У меня всё прекрасно меняет, может я не так понял. Вот код:
Код:
... private
   b:boolean;.....
procedure TForm1.BitBtn1Click(Sender: TObject);/{3 кнопка, по нажатию меняет glyph}
begin
if b=false then
begin
speedbutton1.Glyph.LoadFromFile('c:\1.bmp');//загружаем из файла
b:=true;
end
else
speedbutton1.Glyph:=speedbutton2.Glyph;//берём из 2 speedbuttona
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
b:=false;
end;
Карп преодолевший водопад становится драконом.
N!ckeL вне форума Ответить с цитированием
Старый 03.05.2008, 14:11   #3
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Я из Имиджлиста брал, вот так, первый раз присваивает а потом не меняет
Код:
procedure TForm1.SpeedButton6Click(Sender: TObject);
begin
MusicEnabled:=not MusicEnabled;
if MusicEnabled then
  begin
  ImageList1.GetBitmap(0,SpeedButton6.Glyph);
  MediaPlayer1.Play;
  end
else
  begin
  ImageList1.GetBitmap(1,SpeedButton6.Glyph);
  MediaPlayer1.Stop;
  end;
end;
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 03.05.2008, 14:43   #4
SunKnight
Участник клуба Подтвердите свой е-майл
 
Аватар для SunKnight
 
Регистрация: 14.12.2007
Сообщений: 1,434
По умолчанию

Код:
var
  Form1: TForm1;
  Fuck:array [1..2] of TBitmap;
implementation

{$R *.dfm}

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
    if SpeedButton1.Tag=1 then
    begin
      SpeedButton1.Glyph:=Fuck[1];
      SpeedButton1.Tag:=0;
    end
    else
    begin
      SpeedButton1.Glyph:=Fuck[2];
      SpeedButton1.Tag:=1;
    end

end;

procedure TForm1.FormCreate(Sender: TObject);
begin
    fuck[1]:=TBitmap.Create;
    fuck[2]:=TBitmap.Create;
    fuck[1].LoadFromFile('D:\TEST\IMG\add.bmp');
    fuck[2].LoadFromFile('D:\TEST\IMG\delete.bmp');
end;
вот небольшой пример, конечно не идеальный, на скорую руку. Здесь Битмап берется из рисунка, но можно переделать и под ресурсы.
Проповедую design patterns, верую в MVC, доверяю eXtrime programming.
SunKnight вне форума Ответить с цитированием
Старый 03.05.2008, 14:52   #5
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Спасибо, я в принципе уже понял, что из файла грузит и вот из битмапа тоже, так и сделаю с битмапами.
Но спортивный интерес остался, что не так в способе с имиджлистом, почему не меняется?
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 03.05.2008, 16:26   #6
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Цитата:
Сообщение от mutabor Посмотреть сообщение
Спасибо, я в принципе уже понял, что из файла грузит и вот из битмапа тоже, так и сделаю с битмапами.
Но спортивный интерес остался, что не так в способе с имиджлистом, почему не меняется?
Может потому, что у SpeedButton

property Glyph: TBitmap read FOriginal write SetGlyph;

и при вызове GetBitMap передается FOriginal, т.к. параметр не var, а требуется вызов setGlyph.

Если использовать промежуточную переменную, то все работает:

Код:
procedure TForm1.BitBtn1Click(Sender: TObject);
var B:TBitMap;
begin
   B := TBitMap.Create;
   try
      MusicEnabled:=not MusicEnabled;
      if MusicEnabled then begin
         ImageList1.GetBitmap(0,B);
      end else begin
         ImageList1.GetBitmap(1,B);
      end;
      SpeedButton1.Glyph := B;
   finally
      B.free;
   end;
end;
alexBlack вне форума Ответить с цитированием
Старый 03.05.2008, 16:51   #7
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,239
Сообщение

Код:
procedure TForm1.SpeedButton1Click(Sender: TObject);
var Bmp :TBitMap;
begin
  Bmp := TBitMap.Create;
  Bool := Not Bool;
 IF Bool Then
 begin
  ImageList1.GetBitmap(0, Bmp);
  SpeedButton1.Glyph.Assign(Bmp);
 end
  ELSE
 begin
  ImageList1.GetBitmap(1, Bmp);
  SpeedButton1.Glyph.Assign(Bmp);
 end;
  Bmp.Free;
end;
Alter вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
PopUpMenu из SpeedButton Altera Общие вопросы Delphi 4 15.07.2008 04:14
Вопрос SpeedButton-а...??? Altera Компоненты Delphi 3 25.02.2008 00:15
А где можно найти новые Glyph? love2508 Помощь студентам 1 02.11.2007 16:24
Вопрос о SpeedButton Micha Компоненты Delphi 1 16.09.2007 15:10
ОЧистить SpeedButton ZhekON Компоненты Delphi 4 19.06.2007 12:28