Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Delphi 5. Spinbutton

Автор: filja
Дата сообщения: 02.09.2004 19:03
Есть SpinButton. С ее помощью выбирается кол-во итераций, после чего должно появиться столько SpinButton, сколько я указала число итераций.
Иными словами, одной SpinButton я задаю количество последующих.
Как это сделать?
Автор: Sleepwalker
Дата сообщения: 02.09.2004 19:56
о блин... пятерка... я че-то не нашел компонента SpinButton
он как хоть выглядит-то?
Автор: filja
Дата сообщения: 02.09.2004 19:59
Он в Samples. Две стрелочки - вверх и вниз. Щелкни на времени виндовс - там в окне будет возможность изменить его - маленькое окошечко со стрелочками, где можно мышей, можно клавой выбирать цифры.
Это даже не спинбуттон, а спинэдит SpinEdit.
Автор: EZH
Дата сообщения: 02.09.2004 21:23
Тут даже не в SpinButton дело. Тут просто надо динамическт создавать компоненты. Делается это с пом. процедуры Create от соответствующего типа (TSpinButton), ей передается параметр-указатель - обычно на текущую форму. Потом полученному указателю на компонент надо в свойстве Parent присвоить ту форму, на которой он должен отобразиться. Ну и выставить св-ва Left, Top, Width и Height. Да! ещё и имя присвоить уникальное надо (Name).

Это всё можно проделать необходимое кол-во раз в цикле и использовать счетчик цикла для генерации как уникальных имен, так и для генерации координат расположения компонентов.
Автор: diggod
Дата сообщения: 02.09.2004 21:42
примерно так:

procedure TForm1.CreateSpinEdit(const x,y:integer);
var
Spin:TSpinEdit; //я так понял он так называется
begin
Spin:=TSpinEdit.Create(self);
Spin.Parent:=self;
Spin.Left:=x;
Spin.Top:=y;
//...другие параметры типа width, value и т.п.
end;
Автор: Sleepwalker
Дата сообщения: 03.09.2004 12:19
diggod
1. указатель self нужно использовать очень осторожно.. в данном случае прокатит, но в другом может и не прокатить...
лучше, имхо, так: parent:=Form1;
2. как к ним потом обращаться? варианты:
2.1 создавать динамический массив TSpinEdit (в виде списка)
2.2 делать spin.name:='spin'+inttostr(spinnum), где spinnum - некий номер, разный для каждого созданного спина. но потом тебе придется делать поиск по компонентам формы для определения данных с каждого спина...
Автор: filja
Дата сообщения: 03.09.2004 13:11
Н-да.
Вот еще вопрос.
А как создать "резиновый" массив? Он, кажется, "открытым" наз-ся? [1..n]
Кол-во эл-тов массива должно равнятся кол-ву циклов
Автор: Sleepwalker
Дата сообщения: 03.09.2004 13:29
filja
динамический массив, но не в том смысле, как он реализован исходно, а вручную.
во всяком случае, это даст определенную гибкость.
можно так:
type
PTSpins=^TSpins
TSpins=record
spin:TSpinEdit;
spinname:string;
Next:PTSpins;
end;
var
StartSpin,MySpin:PTSpins;

а далее - смотри работу с динамическими списками... это классика, инфы в инете полно...

Страницы: 1

Предыдущая тема: Интерполяция (нужна помощь)


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.