|
begin process at 2008 07 20 04:33:01
Derniers logiciels
|
Trouver une ressource (Nouvelle version du moteur, plus rapide & pertinent, essayez le !)
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
CRÉATION D'UNE FEUILLE DE CALCUL EXCEL (CONTRÔLE TOLECONTAINER)
Information sur la source
Description
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'alignment 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
- 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.
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".
Historique
- 06 avril 2006 14:42:26 :
- Ajout des options d'affichage
- 06 avril 2006 15:51:38 :
- Index erronée sue l'événement "OnDestroy"
- 06 avril 2006 17:45:31 :
- Ajout code source
capture d'écran (affichage d'une feuille sans barre d'outils ni barre de formule)
- 06 avril 2006 18:00:58 :
- Erreur de manip
- 07 avril 2006 15:29:49 :
- Fermeture de l'instance Excel : condition sur le statut de l'objet OleContainer
- 07 avril 2006 15:55:41 :
- Correction faute d'orthographe
- 10 avril 2006 10:39:26 :
- Propriété d'alignement, capture d'écran
- 10 avril 2006 11:06:06 :
- Capture d'écran
Sources de la même categorie
Commentaires
Discussions en rapport avec ce code source
|
CalendriCode
| | | L | M | M | J | V | S | D |
| | 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 | | | |
|
Téléchargements
Logiciels à télécharger sur le même thème :
|
|