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 :
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 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;
Avec mon code j'ai deux erreurs :
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; } } }
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![]()
Partager