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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.09.2014, 16:31   #11
indexx
Заблокирован
 
Регистрация: 12.09.2014
Сообщений: 544
По умолчанию

На первый взгляд всё нормально. В открытии формы создаётся 5 динамических кнопок. На статической кнопке висит обработчик создания доп. динамической кнопки. Единственный совет, для определения индекса кнопки использовать всё же Tag а не Caption.
indexx вне форума Ответить с цитированием
Старый 14.09.2014, 17:34   #12
zvygin1964
Старожил
 
Аватар для zvygin1964
 
Регистрация: 19.06.2013
Сообщений: 2,463
По умолчанию

Цитата:
Сообщение от indexx Посмотреть сообщение
Tag а не Caption.
Спасибо,но без полного листинга примера, ваш совет смогу понять много лет спустя...
Восстанавливая пример из темы, делал всё наугад.. Это случайность, что результат получен.
Репутация: полный "0"
zvygin1964 вне форума Ответить с цитированием
Старый 14.09.2014, 17:53   #13
indexx
Заблокирован
 
Регистрация: 12.09.2014
Сообщений: 544
По умолчанию

Пример Вы сами дали. Там есть и Tag, и Caption. Tag предназначен для хранения чисел. Caption для отображения текста поверх кнопки. Где по логике лучше хранить индекс?
indexx вне форума Ответить с цитированием
Старый 16.09.2014, 23:42   #14
zvygin1964
Старожил
 
Аватар для zvygin1964
 
Регистрация: 19.06.2013
Сообщений: 2,463
По умолчанию

Код:
 Buttons[i].Tag := I;
не работает.
Код:
IntToStr(TButton(Sender).Tag)
всегда дает 0
Репутация: полный "0"
zvygin1964 вне форума Ответить с цитированием
Старый 16.09.2014, 23:48   #15
indexx
Заблокирован
 
Регистрация: 12.09.2014
Сообщений: 544
По умолчанию

Значит Tag не был присвоен. Если кнопка была создана в этом отрезке кода
Код:
procedure TForm1.FormCreate(Sender: TObject);
 var
i : Byte;
begin
for i := 1 to 5 do
begin
Button[i] := TButton.Create(Self);
with Button[i] do
begin
Caption := 'Button' + IntToStr(i);
Width := 50;
Height := 20;
Top := 30;
Left := 30 + (70 * i);
OnClick := Reaction;
Parent := Self;
end;
end;
end;
То где тут присвоение Tag?
indexx вне форума Ответить с цитированием
Старый 17.09.2014, 09:11   #16
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

zvygin1964, опять ты?!
Код:
Buttons[i].Tag := I; // Не работает? Выдаёт ошибку или нет? Чему здесь равно I?
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 17.09.2014, 14:16   #17
zvygin1964
Старожил
 
Аватар для zvygin1964
 
Регистрация: 19.06.2013
Сообщений: 2,463
По умолчанию

Я. Думаю, что I изменяется от 1 до 5. Но:
Код:
procedure TForm1.FormCreate(Sender: TObject);
 var
i :Integer ;    //было Byte, заменил на Integer я и сделал глобальной.
begin
for i := 1 to 5 do
begin
Button[i] := TButton.Create(Self);
with Button[i] do
begin
Caption := 'Button' + IntToStr(i);
Width := 50;
Height := 20;
Top := 30;
Left := 30 + (70 * i);
Buttons[i].Tag := 3; // Даже так не работает: Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address 00454B90 in module 'Project1.exe'. Read of address 00000004'. Process stopped. Use Step or Run to continue.
OnClick := Reaction;
Parent := Self;
end;
end;
end;
Репутация: полный "0"
zvygin1964 вне форума Ответить с цитированием
Старый 17.09.2014, 14:33   #18
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Button и Buttons не одно и то же
Код:
Button[i] := TButton.Create(Self);
with Button[i] do
begin
...
Buttons[i].Tag := 3; // Даже так не работает:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 17.09.2014, 14:51   #19
zvygin1964
Старожил
 
Аватар для zvygin1964
 
Регистрация: 19.06.2013
Сообщений: 2,463
По умолчанию

Получилось!
Репутация: полный "0"
zvygin1964 вне форума Ответить с цитированием
Старый 20.09.2014, 12:30   #20
zvygin1964
Старожил
 
Аватар для zvygin1964
 
Регистрация: 19.06.2013
Сообщений: 2,463
По умолчанию

А как бы сделать наоборот: извлечь из Caption его номер и присвоить его в Tag. Ну, типа, так:
Buttons[i].Tag :=Caption ; //ведь Caption := 'Button' + IntToStr(i);
Репутация: полный "0"
zvygin1964 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод элементов массива.Изменение элементов массива. Vesnushka18 Помощь студентам 6 09.06.2011 13:05
Перегрузка операций для созданных шаблонов(C#) Mixim Общие вопросы .NET 4 28.09.2010 11:03
найти среднее арифметическое элементов массива состоящее из 5 элементов viatlon Общие вопросы C/C++ 9 12.12.2009 00:45
Для массива определить сумму всех элементов, стоящих после максимального HECTOR.A. Паскаль, Turbo Pascal, PascalABC.NET 4 17.06.2009 22:04
В одномерном массиве, состоящем из n вещественных элементов, вычислить сумму элементов массива HazelHen Общие вопросы C/C++ 2 29.03.2009 15:16