Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Excel in OLE Container (https://www.delphipraxis.net/125021-excel-ole-container.html)

michael.cohrs 29. Nov 2008 08:11


Excel in OLE Container
 
Guten morgen zusammen,

ich habe folgendes Problem:

Es wird eine Excel Datei in einen OLEContainer geladen und in unserer Oberfläche Angezeigt.

mit folgendem Quellcode verden die Symbolleisten von Excel ausgeblendet.

Delphi-Quellcode:
{============================================================================
  Methode : FormatExcelformular
  ---------------------------------------------------------------------------
  Zweck : Ausblenden der Menueleiste sowie der Eingabeleiste von Excel,
  ---------------------------------------------------------------------------
  Bemerkung: Beim schließen von Excel Grundeinstellung wieder
             hergestellen
=============================================================================}
procedure FormatExcelFormular(aExcel : OleVariant); Var
   i     : Integer;
Begin
  Setlength(FARRCommandBars,0);
  aExcel.CommandBars['Worksheet Menu Bar'].Enabled := TRUE;
  aExcel.DisplayFormulaBar                         := FALSE;
  for i := 2 to aExcel.CommandBars.Count do
  begin
    if aExcel.CommandBars.Item[i].Visible then
    begin
      Setlength(FARRCommandBars, 1 + Length(FARRCommandBars));
      FARRCommandBars[High(FARRCommandBars)] := aExcel.CommandBars.Item[i].Name; // merken der ursprünglichen Einstellungen
      aExcel.CommandBars[FARRCommandBars[high(FARRCommandBars)]].Enabled := TRUE;
      aExcel.CommandBars[FARRCommandBars[high(FARRCommandBars)]].Visible := FALSE;
    end;
  end;
end;

Meine Versuche mit dem nachfolgenden Quelltext die Einstellungen von Excel wieder herzustellen scheitern komplett und ich
kann mir nicht erklären woran das liegt.
Delphi-Quellcode:
{============================================================================
  Methode : ResetExcelFormular
  ---------------------------------------------------------------------------
  Zweck : Grundeinstellung von Excel wieder herstellen
  ---------------------------------------------------------------------------
=============================================================================}
procedure ResetExcelFormular(aExcel: OleVariant); Var
   i  : Integer;
Begin
  aExcel.CommandBars['Worksheet Menu Bar'].Enabled := TRUE;
  aExcel.DisplayFormulaBar                         := TRUE;
  for i := low(FARRCommandBars) to high(FARRCommandBars)do
  begin
    aExcel.CommandBars[FARRCommandBars[i]].Visible := TRUE;  // hier sollten die Symbolleiten doch sichtbar sein oder?
    aExcel.CommandBars[FARRCommandBars[i]].Enabled := TRUE;
  end;
  Setlength(FARRCommandBars,0);
  FARRCommandBars:=NIL;
end;

Weiß vieleicht jemand was ich da falsch mache??
Vielen Dank bereits jetzt für die Tipps oder Antworten

Gruß

Michael

Chemiker 29. Nov 2008 08:20

Re: Excel in OLE Container
 
Hallo michael.cohrs,

Versuch mal mit:

Delphi-Quellcode:
aExcel.CommandBars['Worksheet Menu Bar'].Reset;
die Menüleiste zurückzusetzen.

Bis bald Chemiker

michael.cohrs 29. Nov 2008 08:30

Re: Excel in OLE Container
 
Vielen Dank für die schnelle Antwort,

werden dadurch denn auch die Ursprünglichen Einstellungen des Anwenders in Excel wieder hergestellt?
Das Problem ist ja das jeder Anwender so seine eigenen Einstellungen in Excel vornehmen kann und ich
möchte diese nach Beenden meiner Applikation wieder herstellen, so wie der Anwender es sich eingerichtet hat


Viele Grüße

Michael

Chemiker 29. Nov 2008 08:47

Re: Excel in OLE Container
 
Hallo michael. Cohrs,

Zitat:

Zitat von michael. Cohrs
werden dadurch denn auch die Ursprünglichen Einstellungen des Anwenders in Excel wieder hergestellt?

Nein. Die Menüleiste wird mit diesem Befehl in ihren Originalzustand zurückgesetzt.

Ob, es eine einfache Möglichkeit Excel Anwenderspezifisch zurückzusetzen ist mir jetzt nicht bekannt.

Ein Weg wehre vor jeder Änderung sich den Ausgangszustand zu merken und zum Schluss in den alten Zustand zurückzusetzen.

Edit: Was mir noch einfällt eigene Schaltflächen kann man noch das Argument: Temporary:= TRUE mitgeben, dann bleiben die Schaltflächen nur so lange erhalten wie die Applikation läuft.

Bis bald Chemiker

michael.cohrs 29. Nov 2008 08:51

Re: Excel in OLE Container
 
Hallo Chemiker,

das ist ja genau das was ich mit obigem Quelltext versuche, in dem Array FARRCommandBars
merke ich mir ja die ursprünglichen Einstellungen


Viele Grüße

Michael

Chemiker 29. Nov 2008 09:15

Re: Excel in OLE Container
 
Hallo michael. Cohrs,

Ausblenden:


Delphi-Quellcode:
aExcel.CommandBars['Worksheet Menu Bar'].Enabled := FALSE;
aExcel.DisplayFormulaBar                         := FALSE;
Einblenden:

Delphi-Quellcode:
aExcel.CommandBars['Worksheet Menu Bar'].Enabled := TRUE;
aExcel.DisplayFormulaBar                         := TRUE;
Edit: Wenn es nur um das ein- und Ausblenden geht braucht man nicht mehr anzugeben.

Bis bald Chemiker


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:08 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz