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

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - 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,515
По умолчанию

Цитата:
а как тогда мне записать присвоение Тэга к элементу массива, на который кликнули?
так же как писали до этого.
Код:
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,515
По умолчанию

Цитата:
может, у кого-нибудь есть идеи?
вар 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