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

C++Builder Discussion :

Equivalent en borland d'un code Delphi


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de marcootz
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 159
    Par défaut Equivalent en borland d'un code Delphi
    Salut à tous,
    J'ai acheté un composant permettant de "skinner" rapidement toutes les fenêtres, composants et boites de dialogue de mon appli. Il y a un bug connu avec ce composant et les fenêtres quickreport : les previews des QuickReport s'ouvrent toujours en petit, même si on met la propriété state sur 'Maximized'.
    L'éditeur met en ligne un bout de code pour corriger ce bug mais celui ci est pour du Delphi. Il utilise notement une fonction findform() que je n'arrive pas à faire fonctionner sur BDS2006. L'editeur ne me propose pas de solution pour Builder.

    Voici ce code donné par l'éditeur :
    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
    function FindForm(s:string):TForm;
    var i:integer;
    begin
    result:=nil;
    for i:= 0 to screen.FormCount-1 do begin
    if screen.Forms[i].ClassName=s then begin
    result:=screen.Forms[i];
    break;
    end;
    end;
    end;
     
    procedure TfrmQR3Demo.SkinData1FormSkin(Sender: TObject; aName: String;
    var DoSkin: Boolean);
    var fm:TForm;
    begin
    if (aname='TQRStandardPreview') then begin
    fm:= FindForm(aName);
    if fm<>nil then begin
    fm.Top:=0;
    fm.Left:=0;
    fm.Width:=screen.Width;
    fm.Height:=screen.Height;
    end;
    end;
    end;
    et voici mon code :
    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
     
    void __fastcall TF_Menu::SkinData1FormSkin(TObject *Sender, AnsiString aName, bool &DoSkin)
    {
    	TForm frm = new TForm(this);
     
    	if (aName=="TQRStandardPreview"){
    		frm = FindForm(aName);
    		if(frm!=NULL){
    			frm->Top=0;
    			frm->Left=0;
    			frm->Width=Screen->Width;
    			frm->Height=Screen->Height;
    		}
    	}
    }
     
     
    TForm __fastcall TF_Menu::FindForm(AnsiString str){
     
    	for(int i= 0;i<Screen->FormCount-1;i++){
    		if(AnsiCompareStr(str,Screen->Forms[i]->ClassName()) == 0){
    			return Screen->Forms[i];
    			break;
    		}
    	}
    }
    Avec mon code j'ai deux erreurs :

    1) sur la 1° ligne (TForm frm = new TForm(this)) le compilateur me dit que toute les classes de style VCL doivent être construites en utilisant l'opérateur new, alors que je l'utilise.

    2) Dans la 2° fonction (sur return Screen->Forms[i]) j'ai le même message.

    Quelqu'un à t'il une idée pour m'aider ?

    Merci d'avance

  2. #2
    Membre Expert
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Par défaut
    Tu as oublier un petit détail:

    TForm *frm = new TForm(this);

    PS: n'oublie pas de mettre un delete à la fin
    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
    void __fastcall TF_Menu::SkinData1FormSkin(TObject *Sender, AnsiString aName, bool &DoSkin)
    {
    	TForm *frm = new TForm(this);
     
    	if (aName=="TQRStandardPreview"){
    		frm = FindForm(aName);
    		if(frm!=NULL){
    			frm->Top=0;
    			frm->Left=0;
    			frm->Width=Screen->Width;
    			frm->Height=Screen->Height;
    		}
    	}
            delete frm; 
    }

  3. #3
    Membre Expert
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Par défaut
    Bonjour,

    Pour afficher l'aperçu de ton QuickReport, utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    QuickReport1 -> Preview() ;

  4. #4
    Membre confirmé Avatar de marcootz
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 159
    Par défaut
    Salut,

    Effectivement j'avais oublié l'*, ca marche bcp mieux comme ça. En revanche le delete FRM me donne un message d'erreur à la fin de la fonction...

    Sinon j'utilisais bien le "preview" pour afficher mon report, le problème venait vraiment d'un bug du composant vclSkin, ce code permet donc de le résoudre.

    Merci à vous

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

Discussions similaires

  1. [D2006] Code delphi et c#
    Par the big ben 5 dans le forum Langage
    Réponses: 10
    Dernier message: 13/03/2006, 09h48
  2. Séminaire Borland gratuit autour de Delphi 2006, le 8/12.
    Par Laurent Dardenne dans le forum EDI
    Réponses: 1
    Dernier message: 01/12/2005, 12h47
  3. code Delphi pour créer des sources ODBC
    Par lassad dans le forum Bases de données
    Réponses: 1
    Dernier message: 12/10/2005, 11h18
  4. Portabilité de code Delphi
    Par ludovic tambour dans le forum EDI
    Réponses: 2
    Dernier message: 20/08/2005, 16h14
  5. Cherche equivalent a l'inspecteur d'objet Delphi
    Par LeBigornot dans le forum Composants VCL
    Réponses: 3
    Dernier message: 09/11/2004, 13h27

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