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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.05.2014, 22:13   #11
Nikolas_555
Пользователь
 
Аватар для Nikolas_555
 
Регистрация: 16.11.2013
Сообщений: 47
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Что такое Back?
это Name кнопки SpeedButton.

Код:
Back: TSpeedButton;

Хорошо, попробую разобраться с массивами SpeedButton.

Последний раз редактировалось Nikolas_555; 05.05.2014 в 22:18.
Nikolas_555 вне форума Ответить с цитированием
Старый 05.05.2014, 22:20   #12
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,926
По умолчанию

Ругается потому что
Код:
Procedure Hod_V_Malye_Kletki(Sender: TObject);
это регулярная процедура, а не метод класса.
Ну а это
Код:
    TForm5.SpeedButtonA1Click(Sender);
    TForm5.SpeedButtonA1MouseEnter(Sender);
    TForm5.SpeedButtonA1MouseLeave(Sender);
совсем чушь.
northener вне форума Ответить с цитированием
Старый 05.05.2014, 22:24   #13
doktor255
Заблокирован
 
Регистрация: 31.03.2011
Сообщений: 976
По умолчанию

Цитата:
это Name кнопки SpeedButton.
Код:
(Sender as TSpeedButton).Name <> 'Back' // или равно. не углубляюсь в задачу
doktor255 вне форума Ответить с цитированием
Старый 05.05.2014, 22:34   #14
Nikolas_555
Пользователь
 
Аватар для Nikolas_555
 
Регистрация: 16.11.2013
Сообщений: 47
По умолчанию

Цитата:
Сообщение от doktor255 Посмотреть сообщение
Код:
(Sender as TSpeedButton).Name <> 'Back' // или равно. не углубляюсь в задачу
Вот спасибо, понял в чем было дело.
теперь окрашивает красным ту самую "чушь", о которой мне указал пользователь northener.

тогда вопрос, как правильно записать в процедуру(или функцию) вызов этих трёх процедур?
(которые меняют картинку при наведении\отведении курсора, и при клике на SpeedButton'ы)
Код:
procedure TForm5.SpeedButtonA1Click(Sender: TObject);
    begin
     ImageList1.GetBitMap(0,TSpeedButton(Sender).Glyph);
     F := False;
   end;

   procedure TForm5.SpeedButtonA1MouseEnter(Sender: TObject);
   begin
      if F=True then
      TSpeedButton(Sender).Glyph.LoadFromFile('C:\Users\Lenovo\Downloads\!!! ХО\Devil Hard XO\Pictures\1.bmp');
    end;

   procedure TForm5.SpeedButtonA1MouseLeave(Sender: TObject);
   begin
     if F=True then
        TSpeedButton(Sender).Glyph.LoadFromFile('C:\Users\Lenovo\Downloads\!!! ХО\Devil Hard XO\Pictures\fon.bmp');
    end;

Последний раз редактировалось Nikolas_555; 05.05.2014 в 22:44.
Nikolas_555 вне форума Ответить с цитированием
Старый 05.05.2014, 22:46   #15
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,926
По умолчанию

Код:
Procedure TForm5.Hod_V_Malye_Kletki(Sender: TObject);
Begin
 if (Sender is TSpeedButton) and (Sender <> Back) then
  Begin
    SpeedButtonA1Click(Sender);
    SpeedButtonA1MouseEnter(Sender);
    SpeedButtonA1MouseLeave(Sender);
  End;
End;
И не забыть добавить Procedure Hod_V_Malye_Kletki(Sender: TObject); в описание класса TForm5.
В смысл кода не вдумывался. Снимаю с себя всякую ответственность за него.

Последний раз редактировалось northener; 05.05.2014 в 22:49.
northener вне форума Ответить с цитированием
Старый 05.05.2014, 23:03   #16
Nikolas_555
Пользователь
 
Аватар для Nikolas_555
 
Регистрация: 16.11.2013
Сообщений: 47
По умолчанию

northener,doktor255 благодарю за помощь! программа работает, разобрался теперь и с вызовом процедур.

Но всё ещё не добился нужного результата
работает только кнопка SpeedButtonA1, в то время, как должны были по сути, работать все SpeedButton'ы, исключая только Back.
Думал эта проблема решалась с помощью Sender'а, но результат остался прежним, что и был в начале темы.

Вот код. собственно всё, чего я добился с вашей помощью

Код:
    procedure TForm5.SpeedButtonA1Click(Sender: TObject);
    begin
     ImageList1.GetBitMap(0,TSpeedButton(Sender).Glyph);
     F := False;
   end;

   procedure TForm5.SpeedButtonA1MouseEnter(Sender: TObject);
   begin
      if F=True then
      TSpeedButton(Sender).Glyph.LoadFromFile('C:\Users\Lenovo\Downloads\!!! ХО\Devil Hard XO\Pictures\1.bmp');
    end;

   procedure TForm5.SpeedButtonA1MouseLeave(Sender: TObject);
   begin
     if F=True then
        TSpeedButton(Sender).Glyph.LoadFromFile('C:\Users\Lenovo\Downloads\!!! ХО\Devil Hard XO\Pictures\fon.bmp');
    end;
{------------------------------------------------------------------------------}
Procedure TForm5.Hod_V_Malye_Kletki(Sender: TObject);
Begin
 if (Sender is TSpeedButton) and ((Sender as TSpeedButton).Name <> 'Back') then
  Begin
    SpeedButtonA1Click(Sender);
    SpeedButtonA1MouseEnter(Sender);
    SpeedButtonA1MouseLeave(Sender);
  End;
End;
Впрочем, вопрос остаётся открытым.

Последний раз редактировалось Nikolas_555; 05.05.2014 в 23:11.
Nikolas_555 вне форума Ответить с цитированием
Старый 05.05.2014, 23:16   #17
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,926
По умолчанию

Цитата:
работает только кнопка SpeedButtonA1, в то время, как должны были по сути, работать все SpeedButton'ы
Всем ли SpeedButton'ам присвоены эти обработчики:
procedure TForm5.SpeedButtonA1Click(Sender: TObject);
procedure TForm5.SpeedButtonA1MouseEnter(Send er: TObject);
procedure TForm5.SpeedButtonA1MouseLeave(Send er: TObject);
?
northener вне форума Ответить с цитированием
Старый 05.05.2014, 23:18   #18
doktor255
Заблокирован
 
Регистрация: 31.03.2011
Сообщений: 976
По умолчанию

Цитата:
работает только кнопка SpeedButtonA1
А Вы присвоили обработчики ВСЕМ кнопкам???
P.S. если уж речь зашла о массивах компонентов, попробуйте вот такую штуку
Код:
var
  Form1: TForm1;
  Buttons: Array [1..100] of TSpeedButton;
implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
 i, X, Y: integer;
begin
 X := 10;
 Y := 10;
 for I := Low(buttons) to High(buttons) do
   begin
     buttons[i] := TSpeedButton.Create(Owner);
     buttons[i].Parent := Form1;
     buttons[i].Left := X;
     buttons[i].Top := Y;
     buttons[i].OnMouseDown := ... // а вот тут как раз и присваиваешь все обработчики какие нужны
     inc(X, 20);
     if X > form1.Width then
       begin
         X := 10;
         inc(Y, 20);
       end;
   end;
end;

Последний раз редактировалось doktor255; 05.05.2014 в 23:30.
doktor255 вне форума Ответить с цитированием
Старый 05.05.2014, 23:32   #19
Nikolas_555
Пользователь
 
Аватар для Nikolas_555
 
Регистрация: 16.11.2013
Сообщений: 47
По умолчанию

Так, ясно..
да, забыл уточнить ещё одну важную вещь.
надо сделать так, что бы в результате, при выполнении этих процедур

procedure TForm5.SpeedButtonA1Click(Sender: TObject);
procedure TForm5.SpeedButtonA1MouseEnter(Send er: TObject);
procedure TForm5.SpeedButtonA1MouseLeave(Send er: TObject);

у разных SpeedButton'ов менялись ещё и разные картинки.

а так как я вывожу картинки не только из ImageList, но ещё и загружаю с диска..
Тогда придётся добавить множество условных операторов if в определенных местах кода конкретных процедур...

Последний раз редактировалось Nikolas_555; 05.05.2014 в 23:34.
Nikolas_555 вне форума Ответить с цитированием
Старый 05.05.2014, 23:36   #20
Nikolas_555
Пользователь
 
Аватар для Nikolas_555
 
Регистрация: 16.11.2013
Сообщений: 47
По умолчанию

northener,doktor255
ладно, это уже другая проблема, вы и так помогли мне разобраться со многими вещами. Благодарю!

З.Ы. doktor255, спасибо за пример массива, буду разбираться!
Nikolas_555 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Процедуры и функции - Заданы три двумерных массива одинаковой размерности. Написать фукнции и процедуры их обработки sekirei Паскаль, Turbo Pascal, PascalABC.NET 8 21.11.2013 15:45
Использование имени процедуры в качестве параметра другой процедуры Alexey355 Помощь студентам 1 23.04.2011 13:59
Вызов процедуры в процедуре alexvav Общие вопросы Delphi 3 18.02.2011 13:07
Использование процедуры в другой процедуре (хм .. или метода?)...?? newprog12 Общие вопросы Delphi 4 11.01.2010 00:45
Вызывание процедуры в другой процедуре Dura4ok Общие вопросы Delphi 7 22.01.2008 19:45