Komunikacja między formami

0

Witam

Stworzyłem kilka okienek w Delphi na których umieszczone są pola Edit do tego zrobiłem okienko 'Klawiatura' - klawiaturka numeryczna (Edit, buttony 0-9; ',' i Backspace), z dowolnego okienka po nacisnieciu myszką na Edit wywołuję okienko np z okna głównego:

procedure TGlowne.Edit1Click(Sender: TObject); 
begin 
     Klawiatura.open(Sender as TObject); 
end;

do pokazania okienka procedura:

procedure TKlawiatura.open(Sender: TObject); 
begin 
        Label1.Caption:=TComponent(sender).Name; 
        Label2.Caption:=TComponent(sender).Owner.Name; 
        Klawiatura.ShowModal; 
end;

tym sposobem na labelach (dla przykładu wpisałem do labeli) mam dane:
Label1 - które okno wywołało klawiaturę (np. Glowne)
Label2 - który Edit (np. Edit3)
Jak zapisać dane z klawiatury w elemencie który ją wywołał?
np Glowne.Edit3.Text:=Edit1.Text

W obrębie jednego formu do wyszukania komponentu po nazwie zastosowałbym cos takiego:
Tedit(findcomponent('Label1.caption')).Text:=Edit1;

ale jak po nazwie odaleźć form??
Czy może zabrałem sie do tego nie od tej strony co trzeba?!?

0

W obrębie jednego formu do wyszukania komponentu po nazwie zastosowałbym cos takiego:
Tedit(findcomponent('Label1.caption')).Text:=Edit1;

To źle byś zastosował ... ;)

ale jak po nazwie odaleźć form??

Tak samo jak dowolny komponent (findcomponent). ;)

0

po co tak? ustaw sobie dwie zmienne globalne, w jednej trzymaj obecnie aktywne okno, w drugiej poprzednio aktywne (czyli wartość pierwszej zmiennej przed jej nadpisaniem), wartości zmiennych ustawiaj w onactivate każdego z formularzy. w ten sposób w drugiej zmiennej masz odpowiedni formularz.
druga, dużo prostsza opcja - przed wykonaniem jakiejkolwiek akcji powodującej otwarcie nowej formatki, do jakiejś globalnej zmiennej zapisujesz obiekt aktywnej formatki..
i nie nazwy, a referencję do obiektu.

Tedit(findcomponent('Label1.caption')).Text:=Edit1;
  • masz tu dwa błędy ;-)
0

Dzięki za szybka odpowiedź, spróbowałem drugim sposobem i nawet mi się udało :) dzięki
Jak by komuś się przydało to tak zrobiłem:

Zmienna globalna:
EdytowanyEdit:TComponent;
Podstawienie do zmiennej globalnej po zdarzeniu OnEnter lub OnClick - Edit'a:
EdytowanyEdit:=TComponent(sender);
Podstawienie danych z klawiatury:
TEdit(EdytowanyEdit).Text:=Edit1.Text;

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