Zapamiętanie który komponent ma aktualnie fokus

Zapamiętanie który komponent ma aktualnie fokus
robertz68
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Zielona Góra
0

Cześć,

Mam aplikację z interfejsem dotykowym. Na formie są dwa pola edit w których mogę coś wpisać. Jest też komponent ToggleSwitch (z pakietu Windows 10). Chciałbym aby po zmianie stanu tego komponentu (palcem) w momencie gdy go opuszczam fokus wrócił mi na poprzedni element Edit.
Macie pomysł jak to zrobić?

SK
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 101
1

Oprogramuj odpowiednie zdarzenie/zdarzenia. Nie wiem jakie są w ToggleSwitch, ale pewnie typu OnChange, OnOn / OnOff itp.
Tam wpisz coś w stylu Edit1.SetFocus

robertz68
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Zielona Góra
0

Dobra zrobiłem ale trochę mi się to nie podoba (dobrze że chociaż działa). Dla potomnych (lub lepiej dla konstruktywnych krytyków):

Kopiuj
var Fokus: string;

procedure TfrmMain.edtScaleEnter(Sender: TObject);
begin
  Fokus := TControl(Sender).Name;
end;

procedure TfrmMain.edtProductNameEnter(Sender: TObject);
begin
  Fokus := TControl(Sender).Name;
end;

procedure TfrmMain.swAutomaticModeClick(Sender: TObject);
begin
  tmr1.Enabled := True;
end;

procedure TfrmMain.tmr1Timer(Sender: TObject); // interval 500 ms
begin
  if Fokus = 'edtProductName' then
    edtProductName.SetFocus;
  if Fokus = 'edtScale' then
    edtScale.SetFocus;
  tmr1.Enabled := False;
end;
CL
  • Rejestracja: dni
  • Ostatnio: dni
3

A tak nie byłby prościej?

Kopiuj
var obj : TEdit;

procedure TForm4.EditEnter(Sender: TObject);
begin
  obj := Sender as tedit;
end;

procedure TForm4.ToggleSwitch1Click(Sender: TObject);
begin
  obj.SetFocus;
end;
flowCRANE
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tuchów
  • Postów: 12270
4

@robertz68: nie używaj nazw komponentów, a referencji — zmienisz nazwę komponentu i kod szlag trafi. Natomiast do fokusowania kontrolki użyj metody SetFocusedControl, podając jej w parametrze referencję komponentu.

KA
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Gorlice
4

https://docwiki.embarcadero.com/Libraries/Sydney/en/Vcl.Forms.TScreen.OnActiveControlChange + to co w "See Also"
a dalej co z tym zrobić to już chyba wiadomo.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.