Poslední příspěvky

Stran: 1 ... 8 9 [10]
91
Obecné / Re:Nesmrteľné formuláre?
« Poslední příspěvek od pf1957 kdy 05-01-2022, 16:01:24 »
No ďalej to mám akosi zle.
Na tomhle nic spatne nevidim:
Citace
Kód: Delphi [Vybrat]
  1.   sbfFOCList := TfrmsubFOCList.CreateAsSubForm(Self, jstpnlFOC);
  2.   class function TfrmsubFOCList.CreateAsSubForm(AOwner: TCustomForm; const AParentPanel: TjstAdvPanel): TfrmsubFOCList;
  3. begin
  4.   Result := TfrmsubFOCList.Create(AOwner);

Snad jen osetrit exception v pripade, ze selze konstrukce:
Kód: Delphi [Vybrat]
  1. class function TfrmsubFOCList.CreateAsSubForm(AOwner: TCustomForm; const AParentPanel: TjstAdvPanel): TfrmsubFOCList;
  2. begin
  3.   Result := nil;
  4.   try
  5.     Result := TfrmsubFOCList.Create(AOwner);
  6.     Result.Parent := AParentPanel;
  7.     ...
  8.   except
  9.     FreeAndNil(Result);
  10.     //raise;
  11.   end;
  12. end;
92
Firemonkey / Re:FMX komponenta - detekce kliku mimo
« Poslední příspěvek od Radek Červinka 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.
93
Firemonkey / Re:FMX komponenta - detekce kliku mimo
« Poslední příspěvek od pf1957 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.
94
Firemonkey / Re:FMX komponenta - detekce kliku mimo
« Poslední příspěvek od pf1957 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.
95
Firemonkey / Re:FMX komponenta - detekce kliku mimo
« Poslední příspěvek od age.new 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.
96
Firemonkey / Re:FMX komponenta - detekce kliku mimo
« Poslední příspěvek od Radek Červinka 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.
97
Firemonkey / Re:FMX komponenta - detekce kliku mimo
« Poslední příspěvek od Radek Červinka 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.
98
Obecné / Re:Nesmrteľné formuláre?
« Poslední příspěvek od Stanislav Hruška kdy 05-01-2022, 12:57:00 »
Citace
No ale ty odkazy se nemaji nikde valet v nejakych globalnich promennych a subformy by nemely fusovat do zivotniho cyklu parent form. Moznosti je hafo: predat/priradit parent form subformu jako parametr, interface na parent form ziskany za behu aj.
To robím pomocou Self. Lebo odvolať sa na frmxxx je skoro. No ďalej to mám akosi zle.
Dúfam, že sa z toho už vysomárim.
Kód: Delphi [Vybrat]
  1.   sbfFOCList := TfrmsubFOCList.CreateAsSubForm(Self, jstpnlFOC);
  2.  
  3.   class function TfrmsubFOCList.CreateAsSubForm(AOwner: TCustomForm; const AParentPanel: TjstAdvPanel): TfrmsubFOCList;
  4. begin
  5.   Result := TfrmsubFOCList.Create(AOwner);
99
Obecné / Re:Nesmrteľné formuláre?
« Poslední příspěvek od pf1957 kdy 05-01-2022, 12:40:07 »
Zoberme si formulár s podformulármi. Tie (+ objekty k nim, ktoré sú v samostatných jednotkách) vytváram práve vo FormCreate.
To je dobre.

Citace
A niektoré potrebujú odkaz na formulár.
No ale ty odkazy se nemaji nikde valet v nejakych globalnich promennych a subformy by nemely fusovat do zivotniho cyklu parent form. Moznosti je hafo: predat/priradit parent form subformu jako parametr, interface na parent form ziskany za behu aj.

Citace
presunúť to do FormShow.
Ne.
100
Firemonkey / Re:FMX komponenta - detekce kliku mimo
« Poslední příspěvek od age.new kdy 05-01-2022, 12:35:39 »
Přes fokus to není dobrá cesta. Některé objekty fokus nemají a pak by to nefungovalo. TComboBox to má řešené přes TPopup. Udělám to stejně, sic s omezením grafických prvků na max 99% průhlednost.

Domnívám se, že u VCL se nabízí řešení více. Globální hook, zachytávání message událostí ...
Stran: 1 ... 8 9 [10]