IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants FMX Delphi Discussion :

[Win64] Afficher le sablier [Windows]


Sujet :

Composants FMX Delphi

  1. #1
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 344
    Points : 3 122
    Points
    3 122
    Par défaut [Win64] Afficher le sablier
    Bonjour,

    Cursor n'existe plus dans TScreen sous FMX.

    Comment faire pour faire patienter l'utilisateur pendant un traitement un peu long ? (j'ai vu des trucs sur le web, mais qui me paraissent hyper compliqués !!)

    Merci, par avance

    A+
    Charly

  2. #2
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 072
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 072
    Points : 15 462
    Points
    15 462
    Billets dans le blog
    9
    Par défaut
    Bonjour !

    Le code proposé sur cette page n'est pas trop compliqué.

    Je précise que je ne l'ai pas testé.
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  3. #3
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 038
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 038
    Points : 40 943
    Points
    40 943
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    à la place tu as le TAniIndicator
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  4. #4
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 344
    Points : 3 122
    Points
    3 122
    Par défaut
    Merci, le sablier fonctionne bien.

    pour le TAniIndicator, je n'ai pas encore testé. Je cherche un exemple d'utilisation (l'aide est bien faite, mais par rapport à D7, je trouve qu'elle ne donne pas les propriétés, ni les méthodes et qu'il n'y a pas d'exemples. Dommage !)

    A+
    Charly

    PS : FMX dur dur : pas mal d'unités ont été renommées, certains Controls ont changé d'unité, certaines propriétés n'existent plus (exemple Application.exename) ... Mais il y a surement de bonnes raisons

  5. #5
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 038
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 038
    Points : 40 943
    Points
    40 943
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par Charly910 Voir le message
    l'aide est bien faite, mais par rapport à D7, je trouve qu'elle ne donne pas les propriétés, ni les méthodes et qu'il n'y a pas d'exemples.
    L'aide par F1 oui, mais si tu passes par le docwiki ...
    FMX dur dur : pas mal d'unités ont été renommées, certains Controls ont changé d'unité, certaines propriétés n'existent plus (exemple Application.exename) ... Mais il y a surement de bonnes raisons
    Comme la portabilité entre OS après tout c'est le principal objectif
    et y a pas que certaines propriétés qui n'existent plus , certains composants ont disparus où ne sont plus aux mêmes endroits i.e TPageControl n'existe plus remplacé par TTabControl, il y TLabel mais aussi TText ....
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  6. #6
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 387
    Points : 2 999
    Points
    2 999

  7. #7
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 344
    Points : 3 122
    Points
    3 122
    Par défaut
    Merci pour le lien je vais potasser tout cela (et me servir de DocWiki)
    A+
    Charly

  8. #8
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 344
    Points : 3 122
    Points
    3 122
    Par défaut Question toute bête
    Bonjour,
    sous FMX, en Win64, pourquoi le curseur revient à crDefault à la fin de ce traitement (après le Sleep(2000)) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    procedure TForm3.Button6Click(Sender: TObject);
    var
      CS: IFMXCursorService;
    begin
      if TPlatformServices.Current.SupportsPlatformService(IFMXCursorService) then
        begin
          CS := TPlatformServices.Current.GetPlatformService(IFMXCursorService) as IFMXCursorService;
        end;
      if Assigned(CS) then
        begin
          Cursor := CS.GetCursor;
          CS.SetCursor(crHourGlass);
        end;
      Sleep(2000);
    end;
    Est ce qu'il ne devrait pas rester à CrHourGlass ?

    A+
    Charly

  9. #9
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 423
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 423
    Points : 1 326
    Points
    1 326
    Par défaut
    @ Charly910, bonjour tu ne devrais pas finir avec je pense :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    procedure TForm3.Button6Click(Sender: TObject);
    var
      CS: IFMXCursorService;
    begin
      if TPlatformServices.Current.SupportsPlatformService(IFMXCursorService) then
        begin
          CS := TPlatformServices.Current.GetPlatformService(IFMXCursorService) as IFMXCursorService;
        end;
      if Assigned(CS) then
        begin
          Cursor := CS.GetCursor;
          CS.SetCursor(crHourGlass);
        try
     
      Sleep(2000);
     
    finally
    CS.SetCursor(Cursor); //ou (crHourGlass)
    end;
    end;
    @+,

    cincap

  10. #10
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 344
    Points : 3 122
    Points
    3 122
    Par défaut
    Bonjour Cincap,

    même avec CS.SetCursor(CrHourGlass) à la fin, après Finally, cela ne change rien : le curseur revient à crDefault (la flèche)

    A+
    Charly

  11. #11
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 072
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 072
    Points : 15 462
    Points
    15 462
    Billets dans le blog
    9
    Par défaut
    Et en mettant CS en variable globale ?
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  12. #12
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 344
    Points : 3 122
    Points
    3 122
    Par défaut
    Merci, mais je voudrais l'éviter, car je voudrais mettre ce code dans une fonction qui active le sablier (ou qui le désactive)

    A+
    Charly

  13. #13
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 038
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 038
    Points : 40 943
    Points
    40 943
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par Charly910 Voir le message
    sous FMX, en Win64, pourquoi le curseur revient à crDefault à la fin de ce traitement (après le Sleep(2000)) :
    Parce que cs est un interface libéré après usage.
    Si tu suis attentivement la démo de Alistair Christie indiquée par Papy214 cela me semble assez clair car il couvre les différentes possibilités

    @cincap cs est détruit, puisque déclaré comme interface donc le finally ne sert pas à grand chose
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  14. #14
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 344
    Points : 3 122
    Points
    3 122
    Par défaut
    J'ai reregardé la video, mais cela ne répond pas à mon problème. Finalement, je fais tout simplement cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Procedure Sablier(Indic:Integer) ;
    Begin
      If Indic = 1 Then Screen.ActiveForm.Cursor := crHourGlass
      Else Screen.ActiveForm.Cursor := crDefault ;
    End;
    Seul petit Pb, le sablier ne s'affiche pas dans les Controls enfants de la fenêtre.

    A+
    Charly

  15. #15
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 423
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 423
    Points : 1 326
    Points
    1 326
    Par défaut
    @ Charly910,

    J'avais trouvé ceci on ne sait jamais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
     
    unit Unit2;
     
    interface
     
    uses
      FMX.Platform, FMX.Types, System.UITypes;
     
    type
      TWinCursorService = class(TInterfacedObject, IFMXCursorService)
      private
        class var FPreviousPlatformService: IFMXCursorService;
        class var FWinCursorService: TWinCursorService;
        class var FCursorOverride: TCursor;
        class procedure SetCursorOverride(const Value: TCursor); static;
      public
        class property CursorOverride: TCursor read FCursorOverride write SetCursorOverride;
     
        class constructor Create;
        procedure SetCursor(const ACursor: TCursor);
        function GetCursor: TCursor;
      end;
     
    implementation
     
    { TWinCursorService }
     
    class constructor TWinCursorService.Create;
    begin
      FWinCursorService := TWinCursorService.Create;
     
      FPreviousPlatformService := TPlatformServices.Current.GetPlatformservice(IFMXCursorService) as IFMXCursorService; // TODO: if not assigned
     
      TPlatformServices.Current.RemovePlatformService(IFMXCursorService);
      TPlatformServices.Current.AddPlatformService(IFMXCursorService, FWinCursorService);
    end;
     
    function TWinCursorService.GetCursor: TCursor;
    begin
      result :=  FPreviousPlatformService.GetCursor;
    end;
     
    procedure TWinCursorService.SetCursor(const ACursor: TCursor);
    begin
      if FCursorOverride = crDefault then
      begin
        FPreviousPlatformService.SetCursor(ACursor);
      end
      else
      begin
        FPreviousPlatformService.SetCursor(FCursorOverride);
      end;
    end;
     
     
    class procedure TWinCursorService.SetCursorOverride(const Value: TCursor);
    begin
      FCursorOverride := Value;
      TWinCursorService.FPreviousPlatformService.SetCursor(FCursorOverride);
    end;
     
    end.
     
    MainUnit:
    procedure TForm1.Button1Click(Sender: TObject);
    var
      i: integer;
    begin
      TWinCursorService.CursorOverride := crHourGlass;
      try
        Sleep(2000);
      finally
        TWinCursorService.CursorOverride := crDefault;
      end;
    end;

    Je pensais qu'avec cette version de Delphi, le simple fait de choisir "Curseur" dans les propriétés du composant pouvait remplacer le curseur mais apparemment cette propriété n'existe plus ?

    @+,

    cincap

  16. #16
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 344
    Points : 3 122
    Points
    3 122
    Par défaut
    La propriété Cursor existe encore pour TScreen et TButton par exemple.

    On peut donc faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    Procedure Sablier(Indic:Integer) ;
    Var
      i : Integer ;
      MyControl : TComponent ;
    Begin
      If Indic = 1 Then
        Begin
          Screen.ActiveForm.Cursor := crHourGlass ;
          for i := 0 to Screen.ActiveForm.ComponentCount - 1 do
            begin
                MyControl := Screen.ActiveForm.Components[i] ;
                if MyControl is TButton then
               begin
                  with MyControl as TButton do  cursor := CrHourGlass ;
                end;
            end;
        End
      Else
        Begin
          Screen.ActiveForm.Cursor := crDefault ;
          for i := 0 to Screen.ActiveForm.ComponentCount - 1 do
            begin
                MyControl := Screen.ActiveForm.Components[i] ;
                if MyControl is TButton then
               begin
                  with MyControl as TButton do  cursor := CrDefault ;
                end;
            end;
        End
    End;
    pour activer ou désactiver le sablier sur la fenêtre et ses boutons.

    A+
    Charly

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 9
    Dernier message: 27/04/2011, 14h54
  2. Souris=Sablier
    Par BillyBoy666 dans le forum Débuter
    Réponses: 6
    Dernier message: 05/11/2008, 10h03
  3. Afficher le sablier sur le desktop
    Par barthelv dans le forum MFC
    Réponses: 2
    Dernier message: 02/09/2005, 11h25
  4. Sablier grand format
    Par cjacquel dans le forum MFC
    Réponses: 1
    Dernier message: 05/05/2005, 18h26
  5. [débutant] problème avec le curseur (sablier)
    Par bat dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 01/12/2004, 08h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo