pisanie komponentów

0

W niektórych przypadkach np. kiedy chcemy mieć na formularzu dużo komponentów tego samego rodzaju (np. 200 pól Edit)...o wiele wygodniej byłoby.. zamiast przeciągać je z palety...po prostu je napisać( napisać kod ) ...Czy delphi daje taką możliwośc???Jeśli tak to w którym pliku należy pisać i co z tym potem zrobić aby program zamienił kod w wizualne komponenty na formularzu?????

0

Pisać łatwiej? wątpie. Jak nie chcesz wstawić 200 editów na formę to wstaw jeden, skopiuj (po prostu zaznacz i Ctrl+C) i wklejaj do woli (Ctrl+V). Nastpępnie View->Aligment Palette, zaznaczasz wszystkie komponenty i układasz je sobie. A jeśli chcesz bawić się w pisanie ręczne to możesz... klikasz prawym na formę i wybierasz 'View as text' i tam wklepujesz ręcznie komponenty i ich właściwości. Potem klikasz prawym na kod i wybierasz 'View as form'... i już.

[dopisane]
A ja się nie domysliłem, że chodzi o dymaniczne :-P

0

Trzybobry!

Domyslam sie, ze chodzi o komponenty dynamiczne. Tak mi sie zdaje, ze o to Ci chodzi. Zajrzyj do artykulow o Delphi. Tam to jest.

Pozdrawiam.

0

brzydkim zwyczajem delphi jest to że użytkownik ma pośredni tylko wpływ na nazwy/numery komponentów...jeśli chciałbym zmieniać nazwy 200tu komponentów, albo nawet tylko ich numery (np z Edit1 na Edit101 itd) to zajęłoby mi to mnóstwo czasu i kosztowało trochę nerwów. Prościej jest w Edytorze Worda (ew +Excel) napisać sobie wszystko tak jak ja chcę i powielić stosując np. odpowiedni ciąg liczb naturalnych jako numery kolejnych komponentów (to Excelem robi się łatwo), mogę również obliczać parametry rozmieszczenia komponentów na formularzu
kl

0

Sam sobie odpowiadasz na pytanie. Jeśli nie chesz tworzyć komponentów dynamicznie (co pewnie byłoby prostrze) to zobacz jak delphi zapisuje właściwości komponentów w pliku *.DFM (lewy Alt+F12) i powielaj to sposobem, który opisałeś.
Proponuje jednak dynamicznie... pętelka itd.

0

dzięki za radę ....wyprubuję..

0

Dynamiczne będą dużo prościej:

var
edit: array[0..200] of TEdit;
i: integer;

begin
for i:=0 to 200 do
begin
edit[i]:=Tedit.create;
//tutaj inne właściwości
edit[i].show;
end;
end;

Jeszcze w uses musi być wpisana biblioteka, w której są edity... Controls, czy coś. Nie pamiętam...
Ale sprawdzisz, wstawiając edita na formę i zobaczysz, co do uses Ci się dodało.

0

Nie trzeba używać tablicy. Chyba, że chce się szybko odwoływać do tych komponetów w tej samej procedurze. Inaczej chyba nie ma sensu. Wystarczy tak:

var
edit: TEdit;
i: integer;

Potem szukać editów za pomocą FindComponent. I jeszcze po stworzeniu edita nadać mu nazwę np. w tym przypadku:

edit.Name := 'edit' + IntToStr(i);

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