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 :

Utilisation de FMX.Graphics [Windows]


Sujet :

Composants FMX Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Utilisation de FMX.Graphics
    Bonjour,

    je cherche à porter ce code qui normalement est compatible FMX
    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
    var
     sl: TStringList;
     pic: TBitmap;
    begin
     pic := TBitmap.Create;
     pic.LoadFromFile(‘billgates.jpg’);
     sl := TStringList.Create;
     sl.AddObject(‘Photo=’,pic);
     sl.Add(‘Name=Bill Gates’);
     sl.Add(‘Street=Microsoft Way 1);
     sl.Add(‘City=Redmond’);
     sl.Add(‘Country=USA’);
     TMSFMXRichEditor1.Merge(sl);
     sl.Free;
     pic.Free;
    end;
    Alors la création du TBitmap se passe mal. Par quelle astuce TMS peut-il écrire le code ci-dessus sans provoquer d'erreur ?

    J'en suis là
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    var
    var
     sl: TStringList;
     pic: FMX.Graphics.TBitmap;
     aFileName : string;
    begin
      afilename := 'xx.jpg';
      pic := FMX.Graphics.TBitmap.CreateFromFile(afilename);
    end;
    C'est nettement plus verbeux Je m'y prends mal ?

    Enfin ceci dit, je veux placer mon image xx.jpg dans un conteneur quelconque de ma Form (TImage ?) et l'assigner à ce pic.
    Cela devrait être simple... et je n'y arrive pas.

    Quelqu'un peut-il m'aider ?
    Merci.
    Dernière modification par Invité ; 17/07/2015 à 16h57.

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    409
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 409
    Par défaut
    avec Firemonkey tu dois indiquer la taille du bitmap lors de la création

    pic := TBitmap.Create(size_width,size_height)

  3. #3
    Membre Expert
    Avatar de Thierry Laborde
    Homme Profil pro
    N/A
    Inscrit en
    Avril 2002
    Messages
    1 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : N/A

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 391
    Par défaut
    Citation Envoyé par exoseven Voir le message
    avec Firemonkey tu dois indiquer la taille du bitmap lors de la création

    pic := TBitmap.Create(size_width,size_height)
    Non ce n'est pas obligatoire. On peut le faire, mais on peut aussi faire un Create classique sans préciser la taille.
    En l’occurrence si je teste le code suivant (J'ai mis la ligne du composant TMS en commentaire car je n'ai pas le composant correspondant) :

    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
    var
      sl: TStringList;
      pic: TBitmap;
    begin
      pic := TBitmap.Create;
      pic.LoadFromFile('billgates.jpg');
      sl := TStringList.Create;
      sl.AddObject('Photo=',pic);
      sl.Add('Name=Bill Gates');
      sl.Add('Street=Microsoft Way 1');
      sl.Add('City=Redmond');
      sl.Add('Country=USA');
    //  TMSFMXRichEditor1.Merge(sl);
      sl.Free;
      pic.Free;
    end;
    Cela fonctionne sans problème (A partir du moment ou j'ai bien entendu l'image billgates.jpg dans le répertoire de l'appli). De plus lorsque je fais ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var
     pic: TBitmap;
     aFileName : string;
    begin
      afilename := 'billgates.jpg';
      pic := TBitmap.CreateFromFile(afilename);
    end;
    Cela fonctionne également sans problème, donc je ne vois pas ou sont les problèmes ?

    Par contre pour répondre à cela :

    Enfin ceci dit, je veux placer mon image xx.jpg dans un conteneur quelconque de ma Form (TImage ?) et l'assigner à ce pic.
    Cela devrait être simple... et je n'y arrive pas.
    Il suffit tout simplement de s'y prendre comme ça (On part du principe que mon composant TImage sur ma Form s'appelle Image1) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var
      pic:TBitmap;
    begin
      Image1.Bitmap.LoadFromFile('billgates.jpg');
      pic:=TBitmap.Create;
      pic.Assign(Image1.Bitmap);
    end;

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    j'ai laissé traîné un peu la question il est vrai. J'étais en train de me battre avec mon Delphi.

    Mon code est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    pic := FMX.Graphics.TBitmap.Create(16,16);
    pic.Assign(Image1.Bitmap);
    où Image1 est un TImage posé sur la Form.

    Ce qui me désopile vraiment, c'est l'obligation de placer le nom des classes devant les objets :
    FMX.Graphics.TBitmap.Create alors que dans les uses, FMX.Graphics est déclaré. Donc implicitement, on peu supposer qu'unTBitmap.Create y fait référence. En ne le mettant pas explicitement, on dirait qu'il y a un conflit avec la VCL, autrement dit avec ce quoi est fait l'éditeur.
    Et je ne parle pas des MessageDlg... Atroce ! Et en plus, je ne sais toujours pas pourquoi, en saisissant les uses, je n'obtiens aucune aide. J'ai beau taper les premières lettres... je ne vois rien venir. Je me sers peut-être mal de Delphi... certainement .

    Et j'allais oublier, le TMSFMXRichEditor1.Merge(sl); est (semble ?) défaillant... Il y avait beaucoup de raisons au final pour que cela ne fonctionne pas...

  5. #5
    Membre Expert
    Avatar de Thierry Laborde
    Homme Profil pro
    N/A
    Inscrit en
    Avril 2002
    Messages
    1 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : N/A

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 391
    Par défaut
    Citation Envoyé par selzig Voir le message
    Non ce qui me désopile vraiment, c'est l'obligation de placer le nom des classes devant les objets
    On est pas obligé de préfixer le nom des classes devant les objets. D'ailleurs dans les codes que je cite, à aucun moment je ne l'ai fait.

    Par contre ceci me choque :

    Citation Envoyé par selzig Voir le message
    On ne le mettant pas, on dirait qu'il y a un conflit avec la VCL.
    Qu'est ce que la VCL vient faire avec Firemonkey ?

    Si vous devez préfixer c'est qu'il y a une autre unité qui déclare un type TBitmap dans les uses. Le plus simple est donc d'enlever le préfixe et de laisser le type TBitmap et de faire un CTRL+Click dessus pour voir dans quelle unité cela vous redirige. Puis dites nous le nom de cette unité.

    Juste par curiosité c'est possible de copier ici le code de la clause USES, qu'on voit tout ce qu'il y a comme unité ?

  6. #6
    Invité
    Invité(e)
    Par défaut
    On n'a pas le même produit ! J'ai repris mon code de départ qui m'a fait poser la question. Le create et l'assign provoquent une erreur.
    Nom : 02.png
Affichages : 630
Taille : 107,9 Ko

    [dcc32 Erreur] Unit1.pas(204): E2003 Identificateur non déclaré : 'Create'
    [dcc32 Erreur] Unit1.pas(206): E2003 Identificateur non déclaré : 'Assign'
    [dcc32 Erreur] Unit1.pas(208): E2010 Types incompatibles : 'TObject' et 'tagBITMAP'
    avec les uses
    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
    uses
      System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
      FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
      FMX.TMSBaseControl, FMX.TMSScrollControl, FMX.TMSRichEditorBase,
      FMX.TMSRichEditor, FMX.TMSRichEditorToolBar, FMX.TMSToolBar,
      FMX.TMSSpellCheck, FMX.TMSRichEditorSpellCheck, FMX.StdCtrls,
      FMX.TMSSpellCheckCorrectForm, FMX.TMSBitmapContainer,
      FMX.TMSRichEditorEmoticons, FMX.TMSRichEditorIO,
    {$IFDEF MSWINDOWS}
      Winapi.Windows,  Winapi.ShellAPI,
    {$ENDIF}
    {$IFDEF POSIX}
      Posix.Stdlib,
    {$ENDIF POSIX}
      FMX.TMSPDFCreatorIO,
      FMX.TMSRichEditorPDFCreatorIO, FMX.Menus, FMX.TMSLabelEdit,
     
      FireDAC.Phys.MySQLDef, FireDAC.Stan.Intf,
      FireDAC.Stan.Option, FireDAC.Stan.Error, FireDAC.UI.Intf, FireDAC.Phys.Intf,
      FireDAC.Stan.Def, FireDAC.Stan.Pool, FireDAC.Stan.Async, FireDAC.Phys,
      FireDAC.Stan.Param, FireDAC.DatS, FireDAC.DApt.Intf, FireDAC.DApt,
      FireDAC.FMXUI.Wait, FireDAC.Comp.UI, Data.DB, FireDAC.Comp.DataSet,
      FireDAC.Comp.Client, FireDAC.Phys.MySQL,
     
      uAlea, uSQLModule, uGlobals, FMX.Objects,  FMX.Ani;
    Bon c'est un peu le bazar mais je cherchais à comprendre le problème.

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

Discussions similaires

  1. Utilisation de FMX.Forms.TFmxFormState
    Par Invité dans le forum Composants FMX
    Réponses: 7
    Dernier message: 11/10/2014, 18h03
  2. Utilisation de librairie externe '*.so' FMX Android
    Par rdr2510 dans le forum Delphi
    Réponses: 1
    Dernier message: 02/10/2014, 10h51
  3. Utilisation d'un scrollbar dans une fenêtre FMX
    Par alves1993 dans le forum Composants FMX
    Réponses: 6
    Dernier message: 18/08/2014, 15h18
  4. Utilisation d'un objet Graphics sur un autre
    Par Saltmm dans le forum 2D
    Réponses: 2
    Dernier message: 11/11/2013, 17h00
  5. [C# .Net] Utilisation de la classe Graphics
    Par superjaja dans le forum ASP.NET
    Réponses: 2
    Dernier message: 15/01/2007, 16h07

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