Autor Téma: FMX - změna kurzoru  (Přečteno 650 krát)

Offline age.new

  • Plnoletý
  • ***
  • Příspěvků: 217
  • Karma: 0
FMX - změna kurzoru
« kdy: 01-04-2020, 12:28:41 »
Vážená komunito,

bohužel si opět nevím rady s banalitou, jako je změna kurzoru ve Firemonkey. Využívám z FMX.Forms property Cursor. Změna na crHourGlass funguje, ale změna zpět na crDefault (nebo jakýkoliv jiný kurzor) ne. Prostě zůstanou viset přesípací hodiny, což může uživatele zmást. Respektive změna se projeví až po nějaké aktivitě spojené s myší (klik, pohyb). Byl bych rád, kdyby to fungovalo tak jako cca 25 let nazpět co existují Delphi pro Windows.

Děkuji.

Offline Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 2697
  • Karma: 104
    • Verze Delphi: D2007, DXE + 2 poslední
    • O Delphi v češtině
Re:FMX - změna kurzoru
« Odpověď #1 kdy: 01-04-2020, 14:11:42 »
ukaz kratky kod kde se to projevuje
Embarcadero MVP - Czech republic

Offline age.new

  • Plnoletý
  • ***
  • Příspěvků: 217
  • Karma: 0
Re:FMX - změna kurzoru
« Odpověď #2 kdy: 01-04-2020, 14:17:02 »
Ukázka kódu:

Kód: Delphi [Vybrat]
  1. Form_Main.Cursor := crHourGlass;
  2.   try
  3.     SetCursorPos(Screen.Width div 2, Screen.Height div 2);
  4.  
  5. ..
  6. ..  zde se řeší načítání dat ze souborů a tak
  7. ..
  8.  
  9.   finally
  10.     Form_Main.Cursor := crDefault;
  11.   end;
  12.  

Offline Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 2697
  • Karma: 104
    • Verze Delphi: D2007, DXE + 2 poslední
    • O Delphi v češtině
Re:FMX - změna kurzoru
« Odpověď #3 kdy: 01-04-2020, 14:38:23 »
Kód: Delphi [Vybrat]
  1.  
  2. uses
  3.   FMX.platform;
  4.  
  5. procedure TForm13.Button1Click(Sender: TObject);
  6. var
  7.   CS: IFMXCursorService;
  8. begin
  9.  
  10.   CS := TPlatformServices.Current.GetPlatformService(IFMXCursorService) as IFMXCursorService;
  11.   Cursor := CS.GetCursor;
  12.   CS.SetCursor(crHourGlass);
  13.   try
  14.     Sleep(2000);
  15.   finally
  16.   CS.SetCursor(Cursor);
  17.   end;
  18. end;
  19.  
Embarcadero MVP - Czech republic

Offline age.new

  • Plnoletý
  • ***
  • Příspěvků: 217
  • Karma: 0
Re:FMX - změna kurzoru
« Odpověď #4 kdy: 01-04-2020, 14:46:35 »
Děkuji za kód. Doufal jsem, že nebudu muset dělat nějaký "wrapper" pro obyčejnou změnu kurzoru, ale asi se mu nevyhnu. Do kurzoru mi začal "kecat" FireDAC po přidání FireDAC.FMXUI.Wait do uses sekce. Přijde mi, že místo programování důležitého jen hledám opravy nesmyslů :(

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 5279
  • Karma: 41
    • Verze Delphi: W10 + Delphi 10.4 professional
Re:FMX - změna kurzoru
« Odpověď #5 kdy: 01-04-2020, 14:57:42 »
Ja sa tomu figu rozumiem, ale nedalo by sa niečo urobiť priamo s kurzorom FireDac?
W10 64b, Delphi 10.4, FireBird 3.05
Expert na kladenie nejasne formulovaných otázok.

Offline age.new

  • Plnoletý
  • ***
  • Příspěvků: 217
  • Karma: 0
Re:FMX - změna kurzoru
« Odpověď #6 kdy: 01-04-2020, 15:21:03 »
Používám TFDConnection a TFDQuery v ne-vizuální podobě. Nastavení kurzoru jsem u nich nikde nenašel, navíc bych to spíše potřeboval vyrušit.

Offline Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 2697
  • Karma: 104
    • Verze Delphi: D2007, DXE + 2 poslední
    • O Delphi v češtině
Re:FMX - změna kurzoru
« Odpověď #7 kdy: 01-04-2020, 15:46:04 »
Používám TFDConnection a TFDQuery v ne-vizuální podobě. Nastavení kurzoru jsem u nich nikde nenašel, navíc bych to spíše potřeboval vyrušit.

To zajistuji FireDAC.VCLUI.Wait resp. ekvivalenty pro FMX nebo console.
Embarcadero MVP - Czech republic

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 5279
  • Karma: 41
    • Verze Delphi: W10 + Delphi 10.4 professional
Re:FMX - změna kurzoru
« Odpověď #8 kdy: 01-04-2020, 18:57:28 »
Ten obrázok patrí k FireDAC.VCLUI.Wait. Je tam gcrNone. Preto som nadhodil otázku.
W10 64b, Delphi 10.4, FireBird 3.05
Expert na kladenie nejasne formulovaných otázok.

Offline age.new

  • Plnoletý
  • ***
  • Příspěvků: 217
  • Karma: 0
Re:FMX - změna kurzoru
« Odpověď #9 kdy: 02-04-2020, 08:34:12 »
Pokud někdo narazí na stejný problém, zde je řešení, které mi funguje:

https://en.it1352.com/article/4116f1454f2645c586cc13f7f0406b6d.html

Offline age.new

  • Plnoletý
  • ***
  • Příspěvků: 217
  • Karma: 0
Re:FMX - změna kurzoru
« Odpověď #10 kdy: 02-04-2020, 12:24:57 »
Pokud někdo narazí na stejný problém, zde je řešení, které mi funguje:

https://en.it1352.com/article/4116f1454f2645c586cc13f7f0406b6d.html

K článku v odkaze doporučuji přidat ošetření proměnných FWinCursorService a FPreviousPlatformService na nil - pro jistotu.