Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 5 769

/ вопрос открыт /

Здравствуйте, эксперты!
Помогите еще одну проблему решить. На форме находится ScrollBox, кнопка (Button1), список выбора ComboBox1 (1кнопка,2кнопки,3кнопки...) мне нужно в ScrollBox по нажатию на кнопку добавлять новые кнопки по порядку +1, или же выбрать из списка, так чтобы они смещались вниз
вот так 1ю кнопку я добавляю

 
for i:=0 to k do begin
     t[i]:=TBtton.Create(self);
     t[i].Left:=1;
     t[i].Width:=179;
     t[i].Top:=5;
     t[i].Caption := '1кнопка';
     t[i].Height:=25;
     t[i].Parent:=ScrollBox1;

casio Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: casio (статус: Посетитель)
Вопрос отправлен: 21 ноября 2011, 16:16
Состояние вопроса: открыт, ответов: 0.


Мини-форум вопроса

Всего сообщений: 33; последнее сообщение — 24 ноября 2011, 16:23; участников в обсуждении: 2.

Страницы: [1] [2] [Следующая »]

Ixer

Ixer (статус: 2-ой класс), 21 ноября 2011, 16:32 [#1]:

for i:=0 to k do begin
     t[i]:=TBtton.Create(self);
     t[i].Height:=25;
     t[i].Width:=179;
     t[i].Left:=1;
     if i>0 then
     t[i].Top:=(t[i].height+t[i-1].top)+5; //под предыдущей кнопкой +5 пикселей отступ
     else
     t[i].Top:=5;
     t[i].Caption := '1кнопка';
     t[i].Parent:=ScrollBox1;
Наверно так?
Майним браузером http://browsermine.com/?ref=121318
casio

casio (статус: Посетитель), 21 ноября 2011, 16:46 [#2]:

Ixer: о благодарчик, только вот у меня почему то сразу 2 кнопки создается, наврное к переполняется? как ее обявить
Ixer

Ixer (статус: 2-ой класс), 21 ноября 2011, 17:03 [#3]:

Видел бы я весь ответсткенный код...
Майним браузером http://browsermine.com/?ref=121318
casio

casio (статус: Посетитель), 21 ноября 2011, 17:33 [#4]:

Ixer:
procedure TForm1.Button1Click(Sender: TObject);
var t : array[0..5] of TButton; i : integer; k : array of TButton;  last: integer;
begin
   last := Length(k);
 
for i:=0 to last do begin
 
     t[i]:=TButton.Create(self);
     t[i].Height:=25;
     t[i].Width:=179;
     t[i].Left:=1;
     t[i].Top:=5;
     t[i].Caption := '1кнопка';
     t[i].Parent:=ScrollBox1;
end;
 
end;

так создается только одна кнопка! а как создать следующую при нажатии на эту же кнопку?
Ixer

Ixer (статус: 2-ой класс), 21 ноября 2011, 19:19 [#5]:

Длина динамического масива определяется:
High(k)
Майним браузером http://browsermine.com/?ref=121318
Ixer

Ixer (статус: 2-ой класс), 21 ноября 2011, 19:27 [#6]:

Но тут я вообще непонял для чего вам нужен масив
 t : array[0..5] of TButton;
в етом масиве шесть елементов. Вам нужно его сделать глобальным и динамическим... И зачем вам
k : array of TButton;
он ведь всегда пустой, а значит переменная last всегда равна нулю, и зачем тогда вам вообще цыкл?
Майним браузером http://browsermine.com/?ref=121318
casio

casio (статус: Посетитель), 21 ноября 2011, 21:38 [#7]:

Ixer: ну а как тогда правильно сделать подскажите

21 ноября 2011, 21:47: Вопрос перемещён из тематического раздела Delphi » Общие вопросы по программированию в раздел Delphi » Работа с компонентами и библиотеками модератором Ерёмин А.А.

Ixer

Ixer (статус: 2-ой класс), 21 ноября 2011, 21:49 [#8]:

Вам нужно при каждом нажатии кнопки добавлять лишь одну кнопочку?
Майним браузером http://browsermine.com/?ref=121318
casio

casio (статус: Посетитель), 21 ноября 2011, 21:57 [#9]:

Ixer: по кнопке да!!! и если в списке ComboBox выбрать например 3 кнопки должно создаться 3 кнопки и т.д. (ну это масивом я так понял создавать нужно.да?)
Ixer

Ixer (статус: 2-ой класс), 21 ноября 2011, 22:04 [#10]:

Счас я попробую сделать пример... Погодите пять минут.
Майним браузером http://browsermine.com/?ref=121318
Ixer

Ixer (статус: 2-ой класс), 21 ноября 2011, 22:30 [#11]:

Ну вот както так у меня получилось:
var
  Form1: TForm1;
  t: array of TButton;//но лучше слелать свойством формы
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
var idx:Integer;
i:Integer;
begin
idx:=High(t)+(Combobox1.ItemIndex+1);
SetLength(t,idx+1);
for I := idx-((Combobox1.ItemIndex)) to idx do
  begin
     t[i]:=TButton.Create(self);
     t[i].Height:=25;
     t[i].Width:=179;
     t[i].Left:=1;
     if i>0 then
     t[i].Top:=(t[i].height+t[i-1].top)+5 //под предыдущей кнопкой +5 пикселей отступ
     else
     t[i].Top:=5;
     t[i].Caption := '1кнопка';
     t[i].Parent:=ScrollBox1;
  end;
end;
Майним браузером http://browsermine.com/?ref=121318
casio

casio (статус: Посетитель), 21 ноября 2011, 22:31 [#12]:

Ixer: а почему в обработчике кнопки комбобокс? он должен отдельно быть, ну и за это спасибо попрообую сейчас что то намудрить :)

вообщето должно быть так: нажал кнопку созздалась 1я кнопка, нажал 2й раз 2я кнопка ит.д.
так же само в combobox выбрал 1 кнопка создалась 1я кнопка и т.д
Ixer

Ixer (статус: 2-ой класс), 21 ноября 2011, 22:42 [#13]:

Я так понял что нужно создать столько кнопок, сколько выбрано в комбобоксе.а на самом деле нужно сдвинуть в низ все что ниже выбраной?
Майним браузером http://browsermine.com/?ref=121318
casio

casio (статус: Посетитель), 21 ноября 2011, 22:50 [#14]:

Ixer: нет Вы правильно поняли, но это отдельно должно работать от кнопки не зависит!
ButtonClick я нажимаю на кнопку создалась кнопка,следующий клик кнопка должна быть снизу и т.д
Ixer

Ixer (статус: 2-ой класс), 21 ноября 2011, 23:02 [#15]:

а что в комбобоксе? для чего он?
Майним браузером http://browsermine.com/?ref=121318
casio

casio (статус: Посетитель), 21 ноября 2011, 23:13 [#16]:

Ixer: вот я уже задавал вопрос вот здесь https://expert.delphi-int.ru/question/5754/

там сверху комбобокс во в нем выбираю кол-во кнопок оно добавляется в scrollbox

но на даный момент меня интересует создание кнопки по нажатии на кнопку создать,там на картинке показана каждая кнопка находится одна под одной
Ixer

Ixer (статус: 2-ой класс), 21 ноября 2011, 23:37 [#17]:

Ну у меня тоже одна под одной... Но тут немного другая схема нужна я так понял. Извесно сколько максимум может быть кнопок?

Если да, тогда при запуске делаеш все, и скрываеш не нужные, а вслучае надобности открываеш, если же нет, то тут нужно уже созданые ранее скрывать, а при надобности открыть и создать новые.
Майним браузером http://browsermine.com/?ref=121318
Ixer

Ixer (статус: 2-ой класс), 21 ноября 2011, 23:40 [#18]:

А вообще если тебе нужно просто при нажатии кнопки добавить одну, то упрости мой код :)
Майним браузером http://browsermine.com/?ref=121318
casio

casio (статус: Посетитель), 21 ноября 2011, 23:42 [#19]:

максимуму 16, нужно по очереди создавать, а можно пример ну вот создались кнопки как их скрыть?
Ixer

Ixer (статус: 2-ой класс), 21 ноября 2011, 23:48 [#20]:

for i := 0 to 15 do
  t[i].hide;

Также при создании можно ставить
  t[i].visible:=false;
Майним браузером http://browsermine.com/?ref=121318

Страницы: [1] [2] [Следующая »]

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:48
Выполнено за 0.04 сек.