[delphi] problem z dynam. tworz. obiekt. do tabeli, POMOCY

0

Witam, troche to skomplikowane ale powoli...

Tworze dynamicznie X pol edycji (Edit) i przypisuje je automatycznie do tabeli (array of TEdit) z kolejnymi numerami indeksu...

pytanie moje brzmi: Istnieje funkcja ktora zwroci mi numer indeksu Edita w ktorym aktualnie pisze?. Przyklad: Stworzylem 10 Editow (edit[0], edit[1]...) i pisze aktualnie w edit[3]. Potrzebuje funkcje ktora by mi zwrocila wartosc indeksu. Powiedzmy ze w zdarzeniu OnChange zwracalaby indeks z tabeli edita w ktorym aktualnie pisze

Nie wiem czy rozumiecie ;-) Jesli macie pytania to piszcie, licze na was :-)

Pozdrawiam, Marcin Kroczek

0

przypisz do właściwości Tag poszczególnych TEdit index pod którym się znajdują - będzie najprościej i najszybciej

0

dziekuje za odpowiedz ale dalej jestem w kropce...

rano lepiej mi sie mysli, moze lepiej wyjasnie o co mi chodzi ;-)


var
nazwa : array [0..1000] of TEdit;

procedure Tform1.nowyedit;
begin
indeks := indeks + 1;
nazwa[indeks] := TEdit.Create(self);
with nazwa[indeks] do
begin
left := lewa;
top := gora;
Width := 140;
Height := 40;
text := '';
parent := self;
visible := true;
OnChange := ostatniedit;
end;
gora := gora + 22;
end;

i tworzy mi sie edit. Tworze w ten sposob powiedzmy 10 editow, kazdy o kolejnym indeksie. I teraz powiedzmy pisze cos w polu nazwa[3] (trzecim stworzonym edicie) i potrzebuje by program zrzucil mi te 3 do jakiejs zmiennej. Jezeli pisze w 5 to zrzuci 5 do zmiennej. Wydaje mi sie ze powinno takie cos byc doczepione do zdarzenia OnChange tylko nie wiem co i jak to zrobic ;-)

A z tymi tagami to dalej mysle ale nie wiem ;-) Zaznaczam, ze jestem programista samoukiem wiec nie linczujcie mnie od razu ;-) Pozdrawiam Marcin Kroczek

0

no to tak:
type
TForm1 = class(TForm)
Button1: TButton;
...

procedure Button1Click(Sender: TObject);
procedure zmiana(Sender: TObject); //dopisanie nowej procedury

private
...

potem napisz zaraz pod implementation {$R *.dfm}:

procedure TForm1.zmiana(Sender: TObject);
begin
zmienna:=(Sender as TEdit).Tag;
end;

A prcedura dodania przycisku niech wygląda tak:

procedure TForm1.Button1Click(Sender: TObject);
begin
indeks := indeks + 1;
nazwa[indeks] := TEdit.Create(self);
with nazwa[indeks] do
begin
left := left;
top := gora;
Width := 140;
Height := 40;
text := '';
parent := self;
visible := true;
tag:=indeks;
OnChange:=zmiana;
end;
gora := gora + 22;
end;

dodaj jeszcze do var na samej górze deklaracje
zmienna:integer;

Po zmianie dokonanej w edicie do zmiennej zmienna zostanie przypisany numer tego edita

EDIT// Też jestem samoukiem ;)

0

ok, teraz mam to samo pytanie tylko tablica jest dwuwymiarowa edit[indeks1,indeks2] i chce by po zmianie w edicie funkcja zwracala mi wartosci obydwu indeksow. Szukam oczywiscie tej funkcji ;-) Pozdrawiam!

Chcialem tylko dodac, iz chodzi mi dokladnie o identyfikacje pola w ktorym aktualnie pisze po indeksie, tak to chyba profesjonalniej brzmi ;-)

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