Autor Téma: FMX komponenta - detekce kliku mimo  (Přečteno 4967 krát)

Offline Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 3516
  • Karma: 112
    • Verze Delphi: D2007, DXE + 2 poslední
    • O Delphi v češtině
Re:FMX komponenta - detekce kliku mimo
« Odpověď #15 kdy: 05-01-2022, 13:00:55 »

Domnívám se, že u VCL se nabízí řešení více. Globální hook, zachytávání message událostí ...

Tak tady si muzes leda tak pretizit metodu TForm (resp. z "cistych" reseni), ale stejne to neni "zapozdrenost"

    procedure MouseDown(Button: TMouseButton; Shift: TShiftState; AFormX, AFormY: Single); override;

Ale pokud to dokazes pres ty popup tak je to asi cesta.
Embarcadero MVP - Czech republic

Offline Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 3516
  • Karma: 112
    • Verze Delphi: D2007, DXE + 2 poslední
    • O Delphi v češtině
Re:FMX komponenta - detekce kliku mimo
« Odpověď #16 kdy: 05-01-2022, 13:03:03 »
Treba v browserech a JavaScriptu se to resi obsluhou udalosti onClick, kterou tam ma ale kazdy element a udalosti lze obsluhovat hromadne pres JQUERY a mam dojem, ze pres OnClick, na ktery muze byt poveseno vic posluchacu, se to delava i v dotNetu.

Jen tak pro zajimavost: jako ze das OnClick na vsechny ostatni prvky? Aby jsi docilil toho, ze detekujes ze nekdo kliknul mimo tvoji komponentu? Tomu se rika zapouzdreni?
Proto jsem navrhoval aby tam dal na pozadi formulare dal TPanel. Podle mne tam stejne nejaky Layout musi mit. A pak dostane focus budto ten zakladni nebo nekdo kdo muze mit focus, a to mi prijde spravne i uzivatelsky. Ale OK, fokus nechce.
Embarcadero MVP - Czech republic

Offline age.new

  • Hrdina
  • ****
  • Příspěvků: 360
  • Karma: 0
Re:FMX komponenta - detekce kliku mimo
« Odpověď #17 kdy: 05-01-2022, 13:08:24 »
U VCL si většinou vystačím s původními komponenty a proto jsem nic podobného v podstatě nemusel použít, ale šlo by to. Pro Firemonkey si komponenty (tlačítka, comba, edity aj.) dělám sám. Ty původní jsou mizerně udělané. Styly jsem zavrhl.

TPopup je řešení. Škoda, že je to formulář a né např. panel.

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 3527
  • Karma: 139
    • Verze Delphi: D2007, XE3, DX10
Re:FMX komponenta - detekce kliku mimo
« Odpověď #18 kdy: 05-01-2022, 13:32:10 »
Jen tak pro zajimavost: jako ze das OnClick na vsechny ostatni prvky? Aby jsi docilil toho, ze detekujes ze nekdo kliknul mimo tvoji komponentu? Tomu se rika zapouzdreni?
Vetsinou to davaji na parenty. O zapouzdreni jsem psal jen v souvislosti s OP, ze se mu to nelibi, ze by pokazde pri pouziti komponenty musel resit jeji okoli.

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 3527
  • Karma: 139
    • Verze Delphi: D2007, XE3, DX10
Re:FMX komponenta - detekce kliku mimo
« Odpověď #19 kdy: 05-01-2022, 13:38:07 »
Tomu se rika zapouzdreni?
Jinak ono to z principu nemuze byt zapouzdrene, protoze na urovni objektu nemas nic vedet o okoli - to je task pro infrastrukturu, v ramci ktere ty objekty ziji.

Dalsi vec je, ze si zkousim vzpomenout, jestli jsem se nekde s necim podobnym v UI setkal a zatim bezuspechu.

Offline Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 3516
  • Karma: 112
    • Verze Delphi: D2007, DXE + 2 poslední
    • O Delphi v češtině
Re:FMX komponenta - detekce kliku mimo
« Odpověď #20 kdy: 05-01-2022, 13:56:37 »
Dalsi vec je, ze si zkousim vzpomenout, jestli jsem se nekde s necim podobnym v UI setkal a zatim bezuspechu.

No jedine co mne napada je takove to vysouvaci okno s https://delphi.cz/post/VCL-TSplitView-v-DX-Seattle.aspx nebo https://delphi.cz/post/XE7-MultiView.aspx (FMX - tam je i screenshot), kde v jednom modu se zobrazuje overlayer, ktery se zasune kdyz kliknes nekam jinam na formulari.

Edit: kecam - tam je podle mne taky parent control, ktery to zapouzdruje.
Embarcadero MVP - Czech republic