Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.013 c
15-1143407363
SkyRanger
2006-03-27 01:09
2006.04.23
Математика для программиста


2-1144683994
эксперт
2006-04-10 19:46
2006.04.23
соединение


1-1142857647
StriderMan
2006-03-20 15:27
2006.04.23
Как реализовать SPA (безопасная проверка пароля)


3-1141378241
ПТУ
2006-03-03 12:30
2006.04.23
Реализация локальной БД


15-1143710570
Kolan
2006-03-30 13:22
2006.04.23
Как в Delphi 2006 задать рабочюю папку?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский