Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.04.23;
Скачать: CL | DM;

Вниз

динамическое создание 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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 1.511 c
2-1144535831
iyshnik
2006-04-09 02:37
2006.04.23
Относительный путь


9-1128284221
Ricks
2005-10-03 00:17
2006.04.23
Многопроходная отрисовка ландшафта


2-1144324054
barakuda
2006-04-06 15:47
2006.04.23
Полосатый


15-1142726262
ronyn
2006-03-19 02:57
2006.04.23
ICQ recovery password


2-1144231120
align
2006-04-05 13:58
2006.04.23
Работа с тектовыми файлами