Exemple de création d'une feuille de calcul Excel avec le contrôle TOleContainer de l'onglet Système.
Notez que pour le placement des barres d'outils et l'affichage de la barre de formule la propriété d'alignement doit être déclarée à "alClient".
Des variables objets Excel sont définies en nombre suffisant pour construire un tableau de données avec mise en forme et vous initier à une traduction simple du langage VBA en Delphi 7.
Source / Exemple :
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, OleCtnrs, ExtCtrls;
type
TForm1 = class(TForm)
OleContainer1: TOleContainer;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Déclarations privées }
public
{ Déclarations publiques }
end;
var
Form1: TForm1;
Options : array[3..5] of Shortint;
oExcel,oCommandBars:OleVariant;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var
oActiveWindow, oActiveWorkBook, oSelection, oActiveSheet, oCells, oColumns :OleVariant;
i,j :Cardinal;
const
//Alignement
xlCenter=-4108;
//Bordures
//xlEdgeLeft=7;
//xlEdgeTop=8;
//xlEdgeBottom=9;
//xlEdgeRight=10;
//xlInsideVertical=11;
//xlInsideHorizontal=12;
//Largeur de ligne
xlContinuous=1;
//xlThin=2;
//xlMedium=-4138;
//Couleur
xlAutomatic=-4105;
begin
with OleContainer1 do begin
Align:=alClient;
CreateObject('Excel.Sheet', False);
Doverb(ovPrimary);
end;
//Variables objets
oExcel:=OleContainer1.OleObject.Application;
oCommandBars:=OleContainer1.oleobject.CommandBars;
oActiveWindow:=oExcel.ActiveWindow;
oActiveWorkBook:=oExcel.ActiveWorkBook;
oActiveSheet:=oExcel.ActiveSheet;
oColumns:=oExcel.Columns;
oCells:=oActiveSheet.Cells;
oSelection:=oExcel.Selection;
//Titre
Form1.Caption:=oActiveWorkBook.Name;
(* A. Options d'affichage *)
//Affiche au moins les barres d'outils " Standard " et " Mise en forme "
for i:=3 to 4 do begin
Options[i]:=oCommandBars.Item[i].Visible;
if Options[i]=0 then oCommandBars.Item[i].Visible:=-1;
end;
//Coche si nécessaire l'option d'affichage de la barre de formule
Options[5]:=oExcel.DisplayFormulaBar;
if (Options[5]=0) then oExcel.DisplayFormulaBar:=-1;
(* B. Tableau de données *)
//En-têtes de colonnes
for i:=2 to 8 do
oCells.Item[2,i].Value:= 'En-tête col. ' + IntToStr(i);
//Données
for i:=3 to 8 do
for j:=2 to 8 do
oCells.Item[i,j].Value:=' Cells(' + IntToStr(i) + ', ' + IntToStr(j) + ') ';
(* C. Mise en forme *)
//Sélection des en-têtes
oSelection:=oActiveSheet.Range[oCells.Item[2,2], oCells.Item[2,8]];
//Propriétés de la police des en-têtes
oSelection.Font.Bold:=1;
oSelection.Font.ColorIndex := 9;
//Couleur de fond de la sélection
oSelection.Interior.ColorIndex := 15;
//Centrer les en-têtes
oSelection.HorizontalAlignment:= xlCenter;
//Bordures
for i:=7 to 11 do
oSelection.Borders[i].LineStyle:=xlContinuous;
//Sélection
oActiveSheet.Rows[3].Select;
//Figer les volets
oActiveWindow.FreezePanes:=1;
//Ajustement automatique des colonnes
for i:=2 to 8 do
oColumns.Item[i].AutoFit;
//Largeur de la colonne 1
oColumns.Item[1].ColumnWidth:=1.71;
//Sélection finale
oCells.Item[3, 2].Select;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if (OleContainer1.State=osUIActive) then begin
//Rétablie les options initiales d'affichage
oCommandBars.Item[3].Visible:=Options[3];
oCommandBars.Item[4].Visible:=Options[4];
oExcel.DisplayFormulaBar:=Options[5];
//Ferme l'instance
oExcel.Quit;
end;
//Ferme la fiche
Action:=caFree;
end;
end.
Conclusion :
Aide Borland pour utiliser TOleContainer :
1 Placez un composant TOleContainer dans votre fiche.
2 Initialisez la propriété AllowActiveDoc à true si vous voulez pouvoir accueillir un document actif.
2 Initialisez la propriété AllowInPlace pour indiquer si l'objet accueilli doit apparaître dans le TOleContainer ou dans une fenêtre séparée.
4 Ecrivez des gestionnaires d'événements pour répondre quand l'objet est activé, désactivé, déplacé ou redimensionné.
5 Pour lier l'objet TOleContainer à la conception, cliquez avec le bouton droit de la souris et choisissez Insérer un objet. Dans la boîte de dialogue Insertion d'objet, choisissez l'objet serveur à accueillir.
6 Vous avez plusieurs moyens de lier l'objet TOleContainer à l'exécution, selon la manière dont vous voulez identifier l'objet serveur. La méthode CreateObject attend un identificateur de programme, CreateObjectFromFile attend le nom d'un fichier dans lequel l'objet a été enregistré, CreateObjectFromInfo attend un record contenant des informations sur la manière de créer l'objet ou CreateLinkToFile qui attend le nom d'un fichier dans lequel l'objet a été enregistré et effectue une liaison et non une incorporation.
7 Une fois l'objet lié, vous pouvez accéder à son interface en utilisant la propriété OleObjectInterface. Cependant, comme la communication avec les objets Ole2 était basée sur les verbes OLE, vous préférerez probablement envoyer des commandes au serveur en utilisant la méthode DoVerb.
8 Quand vous voulez libérer l'objet serveur, appelez la méthode DestroyObject
Un exemple d'application MDI est fourni par Borland à l'emplacement "\\Borland\Demos\ActiveX\OleCtnrs".
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.