Mam formę z kilkoma editami i np edit2 jest aktywny z kursorem. Jak sprawdzić żeby z poziomu innej formy odznaczyć tą aktywność lub jak sprawdzić który edit na pierwszej formie jest aktywny?
O tym czy kontrolka Edit posiada focus, informuje własność Focused
. Także pętla po kontrolkach na przykład z użyciem FindComponent
i rzutowania na TEdit
. I sobie sprawdzasz. Natomiast żeby kontrolce edycyjnej zabrać Focus, powinno się wysłać komunikat WM_KILLFOCUS
. Po więcej patrz na MSDN.
@Rafał D - klasa TForm posiada taką właściwość jak ActiveControl typu TWinControl, która zawiera referencję do klasy aktywnego komponentu; Jeżeli masz dostęp do pierwszego formularza to możesz sprawdzić wartość tej właściwości; Właściwość ta zawiera wskaźnik na klasę komponentu nawet w przypadku, gdy formularz nie jest aktywny;
Przykładowy projekt z Delphi7 masz w załączniku (bez exeka);
Zamiast sprawdzać który komponent jest aktywny, możesz także przekazać do niego referencję do drugiego formularza, jeśli np. ten drugi wykorzystywany jest jako okno modalne lub dialogowe.
Program jest na zakładkach które są tworzone dynamicznie, dlatego formy czy ramki umieszczam na TabSheet-ach - Na inny pomysł nie wpadłem
dodanie obrazu do załączników posta - Furious Programming