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

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

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

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

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

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

Цитата:
Сообщение от evg_m Посмотреть сообщение
вообще-то мы щелкали не по элементу массива, а по некоторому объекту

так что Buttons[p] ЭТО не то где мы щелкали !!! им может быть только buttons[x].button .
а вот какой из всех этих ?!
а как тогда мне записать присвоение Тэга к элементу массива, на который кликнули?
на buttons[x].button.Tag1 ругается, т.к. такого параметра у SpeedButton'ов просто нету.
возможно, есть у SpeedButton'а параметр, типа integer, на подобии Tag'а?

Последний раз редактировалось Nikolas_555; 30.05.2014 в 13:50.
Nikolas_555 вне форума Ответить с цитированием
Старый 30.05.2014, 14:03   #12
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
а как тогда мне записать присвоение Тэга к элементу массива, на который кликнули?
так же как писали до этого.
Код:
buttons[????].tag1:=2;
и помнить при этом что мы еще не ответили на вопрос а какой собственно элемент массива мы хотим изменить.

Элемент массива это не кнопка по которой мы щелкали. Кнопка по которой мы щелкнули есть Sender, но где она "спрятана" в массиве мы еще не знаем, хотя уверены что она там есть в том самом buutons[x].button c НЕИЗВЕСТНЫМ(x) индексом!!
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 30.05.2014 в 14:06.
evg_m вне форума Ответить с цитированием
Старый 30.05.2014, 14:12   #13
Nikolas_555
Пользователь
 
Аватар для Nikolas_555
 
Регистрация: 16.11.2013
Сообщений: 47
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
так же как писали до этого.
Код:
buttons[????].tag1:=2;
и помнить при этом что мы еще не ответили на вопрос а какой собственно элемент массива мы хотим изменить.

Элемент массива это не кнопка по которой мы щелкали. Кнопка по которой мы щелкнули есть Sender, но где она "спрятана" в массиве мы еще не знаем, хотя уверены что она там есть в том самом buutons[x].button c НЕИЗВЕСТНЫМ(x) индексом!!
ага.. так, значит мне надо написать процедуру, которая определяет нажатый компонент.
Nikolas_555 вне форума Ответить с цитированием
Старый 04.06.2014, 19:05   #14
Nikolas_555
Пользователь
 
Аватар для Nikolas_555
 
Регистрация: 16.11.2013
Сообщений: 47
По умолчанию

Цитата:
Сообщение от Nikolas_555 Посмотреть сообщение
ага.. так, значит мне надо написать процедуру, которая определяет нажатый компонент.
блин, сколько мучился, никак не могу написать
может, у кого-нибудь есть идеи?
Nikolas_555 вне форума Ответить с цитированием
Старый 05.06.2014, 08:45   #15
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
может, у кого-нибудь есть идеи?
вар 0. переименуйте ваш массив buttons в любое другое имя не имеющее созвучия с внутренним полем button
например так pole: array [ ] of ...;
может тогда у вас пропадет путаница с какой объектом вы работаете (или хотите работать).

вар 1. искать
Код:
if buttons[x].button =sender then i:=x; //OK;
вар 2. при заполнении массива и соответственно создании кнопок "запоминать" какому элементу массива кнопка соответствует.
Код:
  buttons[i].button:=TSpeedButton.Create(...);
  ..... 
  buttons[i].button.tag:=i; // теперь кнопка(TSpeedButton)  "знает" о "своем" индексе.
а так и мы узнаем
Код:
 i:=(sender as TSpeedButton).tag;
вар 3 отказаться от массива buttons и всю нужную информацию хранить "вместе с кнопкой" в том самом поле Tag. круто но нереально на вашем уровне.
Цитата:
ага.. так, значит мне надо написать процедуру, которая определяет нажатый компонент.
Цитата:
блин, сколько мучился, никак не могу написать
Код:
 btn:=TSpeedButon.Create();
 ..........
 btnext:=TButtonExt.Create;
 .........
 btn.tag:=Pointer(btnext);

 btnext:=TButtonExt(sender as TSpeedButton).tag);
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 05.06.2014 в 09:11.
evg_m вне форума Ответить с цитированием
Старый 05.06.2014, 10:43   #16
Nikolas_555
Пользователь
 
Аватар для Nikolas_555
 
Регистрация: 16.11.2013
Сообщений: 47
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
вар 1. искать
Код:
if buttons[x].button =sender then i:=x; //OK;
спасибо! выбрал этот, самый оптимальный вариант, и вот результат



ещё раз, огромное спасибо за помощь!
Nikolas_555 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему алгоритмы быстрых сортировок не дают большого выигрыша при малых размерах массивов? Proskurina Общие вопросы по программированию, компьютерный форум 9 26.12.2012 15:42
подредактировать античит к игре игре Nhl 09 (античит написан на дельфи) Viper18 Фриланс 3 03.08.2011 17:37
Найдите вероятность выигрыша для А и для В supavlova Помощь студентам 0 01.02.2011 19:24
Объекты в игре ZotaC Gamedev - cоздание игр: Unity, OpenGL, DirectX 2 03.03.2010 21:15
Процедура в процедура в C++ Builder Ecosasha C++ Builder 2 06.06.2009 17:17