|
Вопрос # 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] [Следующая »]
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|