Форум: "Начинающим";
Текущий архив: 2006.04.23;
Скачать: [xml.tar.bz2];
Вниздинамическое создание Tstringgrid Найти похожие ветки
← →
Daimyo (2006-04-05 10:44) [0]Здравствуйте вот возникла такая проблема, можно ли динамически создать Таблицы (TStringgrid) из одной формы на другой. поясняю :)
необходжимо по мере выполнения программы создавать таблицы явно больше 2-х количество не ограничено , в программе есть две формы жмем кнопку на одной и в это время на другой форме должны появится таблиццы количество как я сказал не ограничено,
я пробовал делать но почему то они у меня не появлялись, никаких ошибок не вылазило просто при открытии второй формы таблиц небыло ( вот пример кода:
var
a:array[1..10] of TStringgrid;
i,k:integer;
begin
i:=10
for k:=1 to i do
begin
a[k]:=TstringGrid.create(form2);
a[k].name:="somename"+inttostr(k);
a[k].left:=form2.left+20+k;
a[k].top:=form2.top+20+k;
a[k].visible:=true;
end;
end;
ошибок никаких не появлялось но при вызове form2.show; таблиц на ней не обнаружено (
помогите пожалуйста
← →
Жуков Олег (2006-04-05 10:55) [1]a[k].Parent := Form2;
← →
daimyo (2006-04-06 13:27) [2]
> Жуков Олег (05.04.06 10:55) [1]
>
> a[k].Parent := Form2;
большое спасибо помогло :)
а как для каждой вновь созданной таблицы прописать событие
те вот что есть :
procedure SGaSelectCell(Sender: TObject; ACol, ARow: Integer;
var CanSelect: Boolean);
var w:tstringgrid;
begin
КОД
end;
те событие будет для всех одинаковое - выделение ячейки а вот как опрределить какая именно таблица вызвала его , чтоб работать с данными именно той таблицы ??
я конечно понимаю что копать надо в Sender:TObject
но вот как узнать имя таблицы с помошью его ?? у меня так и не получилось (
← →
Amoeba © (2006-04-06 14:01) [3]Присваивай св-ву Tag таблицы уникальное значение, а потом по нему идентифицируй, какая таблица вызвала событие, приводя Sender к TComponent.
(Sender as TComponent).Tag
← →
daimyo (2006-04-06 15:29) [4]
> Присваивай св-ву Tag таблицы уникальное значение, а потом
> по нему идентифицируй, какая таблица вызвала событие, приводя
> Sender к TComponent.
>
> (Sender as TComponent).Tag
те в этом обработчике событий делать цикл по перебору соответсвий a[k].tag и (Sender as TComponent).Tag и если равны то это та самая таблоица так ?? )
← →
MBo © (2006-04-06 15:36) [5]>те в этом обработчике событий делать цикл по перебору соответсвий a[k].tag и (Sender as TComponent).Tag и если равны то это та самая таблоица так ?? )
Проще всего при создании назначить Tag - равным индексу в массиве, тогда ничего и сравнивать не надо
Кроме того, у тебя имя уникальное присваивается, так что можно и его анализировать
← →
Amoeba © (2006-04-06 15:39) [6]
> daimyo (06.04.06 15:29) [4]
Для 10 таблиц, IMHO, лучше использовать не цикл, аCase (Sender as TComponent).Tag of
← →
daimyo (2006-04-06 15:40) [7]
> Для 10 таблиц, IMHO, лучше использовать не цикл, а
>
> Case (Sender as TComponent).Tag of
ну да это понятно просто уточнил :)
← →
MBo © (2006-04-06 15:54) [8]да не надо case
T:= (Sender as TComponent).Tag;
N:=a[T].RowCount;
← →
daimyo (2006-04-07 10:18) [9]гуд все работает
а как убить эти таблицы ??
a[k].free;
- это не работает )
a[k].destroy;
тоже не работает
тогда как ?? ) подскажите плз
← →
MBo © (2006-04-07 12:42) [10]>a[k].free;
>- это не работает )
Работает (в цикле по всему массиву, конечно)
← →
MsGuns © (2006-04-07 13:12) [11]Если есть необходимость порождать произвольное кол-во однотипных объектов, принимающих (обрабатывающих) разные данные, ИМХО, рационально использовать фрэйм не только собственно с объектами (стрингрид, кнопки и т.д.), но и полной реализацией всего функционала. В фрэйме по необходимости предусмотреть переменные-указатели, куда после создания записать адреса объектов-приемников или источников данных, посредством которых код фрэйма будет обмениваться информацией с другими модулями (формами).
При этом не надо как-то идентифицировать эти фрэймы ибо каждый из них будет знать "что и как делать"
← →
daimyo (2006-04-07 14:15) [12]
> Работает (в цикле по всему массиву, конечно)
rконечно всеэто в цикле но не работает :(
← →
daimyo (2006-04-07 14:16) [13]
> Если есть необходимость порождать произвольное кол-во однотипных
> объектов, принимающих (обрабатывающих) разные данные, ИМХО,
> рационально использовать фрэйм не только собственно с объектами
> (стрингрид, кнопки и т.д.), но и полной реализацией всего
> функционала. В фрэйме по необходимости предусмотреть переменные-
> указатели, куда после создания записать адреса объектов-
> приемников или источников данных, посредством которых код
> фрэйма будет обмениваться информацией с другими модулями
> (формами).
> При этом не надо как-то идентифицировать эти фрэймы ибо
> каждый из них будет знать "что и как делать"
эх хорошо сказано но я понятия не имею что такое фрейм (
← →
daimyo (2006-04-07 14:17) [14]
> >a[k].free;
> >- это не работает )
>
> Работает (в цикле по всему массиву, конечно)
делал по всему циклу при новом создании говорит что такое имя уже есть (
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.04.23;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.019 c