| 
| 
 | Вопрос # 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 (статус: Посетитель)Вопрос отправлен: 21 ноября 2011, 16:16
 Состояние вопроса: открыт, ответов: 0.
 |  
 Мини-форум вопросаВсего сообщений: 33; последнее сообщение — 24 ноября 2011, 16:23; участников в обсуждении: 2. Страницы: [1] [2] [Следующая »]  
|   | 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 (статус: Посетитель), 21 ноября 2011, 16:46 [#2]:Ixer: о благодарчик, только вот у меня почему то сразу 2 кнопки создается, наврное к переполняется? как ее обявить |  
|   | Ixer (статус: 2-ой класс), 21 ноября 2011, 17:03 [#3]:Видел бы я весь ответсткенный код... Майним браузером http://browsermine.com/?ref=121318 |  
|   | 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 (статус: 2-ой класс), 21 ноября 2011, 19:19 [#5]:Длина динамического масива определяется: High(k) Майним браузером http://browsermine.com/?ref=121318 |  
|   | Ixer (статус: 2-ой класс), 21 ноября 2011, 19:27 [#6]:Но тут я вообще непонял для чего вам нужен масив  t : array[0..5] of TButton;в етом масиве шесть елементов. Вам нужно его сделать глобальным и динамическим... И зачем вам k : array of TButton;он ведь всегда пустой, а значит переменная last всегда равна нулю, и зачем тогда вам вообще цыкл? Майним браузером http://browsermine.com/?ref=121318 |  
|   | casio (статус: Посетитель), 21 ноября 2011, 21:38 [#7]:Ixer: ну а как тогда правильно сделать подскажите |  21 ноября 2011, 21:47: Вопрос перемещён из тематического раздела Delphi » Общие вопросы по программированию в раздел Delphi » Работа с компонентами и библиотеками модератором Ерёмин А.А. 
|   | Ixer (статус: 2-ой класс), 21 ноября 2011, 21:49 [#8]:Вам нужно при каждом нажатии кнопки добавлять лишь одну кнопочку? Майним браузером http://browsermine.com/?ref=121318 |  
|   | casio (статус: Посетитель), 21 ноября 2011, 21:57 [#9]:Ixer: по кнопке да!!! и если в списке ComboBox выбрать например 3 кнопки должно создаться 3 кнопки и т.д. (ну это масивом я так понял создавать нужно.да?) |  
|   | Ixer (статус: 2-ой класс), 21 ноября 2011, 22:04 [#10]:Счас я попробую сделать пример... Погодите пять минут. Майним браузером http://browsermine.com/?ref=121318 |  
|   | 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 (статус: Посетитель), 21 ноября 2011, 22:31 [#12]:Ixer: а почему в обработчике кнопки комбобокс? он должен отдельно быть, ну и за это спасибо попрообую сейчас что то намудрить   
 вообщето должно быть так: нажал кнопку созздалась 1я кнопка, нажал 2й раз 2я кнопка ит.д.
 так же само в combobox выбрал 1 кнопка создалась 1я кнопка и т.д
 |  
|   | Ixer (статус: 2-ой класс), 21 ноября 2011, 22:42 [#13]:Я так понял что нужно создать столько кнопок, сколько выбрано в комбобоксе.а на самом деле нужно сдвинуть в низ все что ниже выбраной? Майним браузером http://browsermine.com/?ref=121318 |  
|   | casio (статус: Посетитель), 21 ноября 2011, 22:50 [#14]:Ixer: нет Вы правильно поняли, но это отдельно должно работать от кнопки не зависит! ButtonClick я нажимаю на кнопку создалась кнопка,следующий клик кнопка должна быть снизу и т.д
 |  
|   | Ixer (статус: 2-ой класс), 21 ноября 2011, 23:02 [#15]:а что в комбобоксе? для чего он? Майним браузером http://browsermine.com/?ref=121318 |  
|   | casio (статус: Посетитель), 21 ноября 2011, 23:13 [#16]:Ixer: вот я уже задавал вопрос вот здесь https://expert.delphi-int.ru/question/5754/ 
 там сверху комбобокс во в нем выбираю кол-во кнопок оно добавляется в scrollbox
 
 но на даный момент меня интересует создание кнопки по нажатии на кнопку создать,там на картинке показана каждая кнопка находится одна под одной
 |  
|   | Ixer (статус: 2-ой класс), 21 ноября 2011, 23:37 [#17]:Ну  у меня тоже одна под одной... Но тут немного другая схема нужна я так понял. Извесно сколько максимум может быть кнопок? 
 Если да, тогда при запуске делаеш все, и скрываеш не нужные, а вслучае надобности открываеш, если же нет, то тут нужно уже созданые ранее скрывать, а при надобности открыть и создать новые.
 Майним браузером http://browsermine.com/?ref=121318 |  
|   | Ixer (статус: 2-ой класс), 21 ноября 2011, 23:40 [#18]:А вообще если тебе нужно просто при нажатии кнопки добавить одну, то упрости мой код   Майним браузером http://browsermine.com/?ref=121318 |  
|   | casio (статус: Посетитель), 21 ноября 2011, 23:42 [#19]:максимуму 16, нужно по очереди создавать, а можно пример ну вот создались кнопки как их скрыть? |  
|   | 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] [Следующая »]  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |