Tablica obiektów

0

Probuje sobie pogrupowac elementy na formie w tablicy dwuwymiarowej i do tego ma byc ona stała.

Chcialbym zeby w takiej tablicy byla przechowywana nazwa obiektu:

np.

tab: array[1..2,1..2] of TObject = ( 
                    (edit1,memo1),
                    (edit2,memo2) );

myslalem ze cos takiego da rade zrobic, taka deklaracja, jednak wyrzuca mi blad

[Error] MainUnit.pas(201): Undeclared identifier: 'Edit2'

jak sobie z tym poradzic ???

po prostu chce abym wiedział ze jak zrobie cos w memo1 to ma na to zareagować edit1 :). Dla małej ilości mozna sie pobawic w klepywanie po kolei jednak przy duzych wartosciach (100,100) to juz chyba trudno.

<font color="red">Sprobowalem rownież to o czym wspomniano w poscie niżej i nic. Nikt jeszcze nie robił tablicy obiektów???</span>

0

Moze sprobuj edit1 as TEdit, memo1 as Tmemo

0

To nie ma senstu. Tablica obiektow, to jest tablica wskaznikow. W czasie kompilacji jeszcze te obiekty nie istnieja, wiec nie mozna zainicjowac takiej tablicy (jest to tablica const). Moglbys to zrobic co najwyzej juz po ich utworzeniu, czyli w trakcie dzialania programu.
Ale tak jak ty chcesz sie odwolywac po nazwie, to nie ma najwiekszego sensu. Proponuje skorzystac z wlasciwosci tag jezeli chcesz wiedziec do czego sie odwolac, albo utworzyc pochodna od TMemo, ktorej polem bedzie wskaznik na TEdit.

0

Powyzsze rozwiazanie jest bardzo dobre, ale jezeli uprzesz sie na nazwy to mozesz sobie zrobic tablice stringow, ktore to beda nazwami kontrolek, a potem bedziesz uzywal metody FindComponent formatki glownej. Mam nadzieje, ze dobrze zrozumialem problem :)

Wpadlem jeszcze na jeden pomysl. Stworz sobie nowy typ np.

TZestaw = record
  Edit: TEdit;
  Memo: TMemo;
end;

i z tych elementow zrob sobie tablice. Jak masz ich taka ilosc to na pewno tworzysz je dynamicznie to przy tworzeniu do Tag wpisuj numer indeksu w tablicy a w procedurze podpietej np. do memo mozesz od razu odwolac sie do odpowiedniego edita.

1 użytkowników online, w tym zalogowanych: 0, gości: 1