AGB  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Excel in OLE Container

Ein Thema von michael.cohrs · begonnen am 29. Nov 2008 · letzter Beitrag vom 29. Nov 2008
Antwort Antwort
michael.cohrs

Registriert seit: 11. Nov 2005
Ort: Hamburg
39 Beiträge
 
#1

Excel in OLE Container

  Alt 29. Nov 2008, 08:11
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
Michael Cohrs
  Mit Zitat antworten Zitat
Benutzerbild von Chemiker
Chemiker
Online

Registriert seit: 14. Aug 2005
1.674 Beiträge
 
Delphi XE6 Professional
 
#2

Re: Excel in OLE Container

  Alt 29. Nov 2008, 08:20
Hallo michael.cohrs,

Versuch mal mit:

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

Bis bald Chemiker
wer gesund ist hat 1000 wünsche wer krank ist nur einen.
  Mit Zitat antworten Zitat
michael.cohrs

Registriert seit: 11. Nov 2005
Ort: Hamburg
39 Beiträge
 
#3

Re: Excel in OLE Container

  Alt 29. Nov 2008, 08:30
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
Michael Cohrs
  Mit Zitat antworten Zitat
Benutzerbild von Chemiker
Chemiker
Online

Registriert seit: 14. Aug 2005
1.674 Beiträge
 
Delphi XE6 Professional
 
#4

Re: Excel in OLE Container

  Alt 29. Nov 2008, 08:47
Hallo michael. Cohrs,

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
wer gesund ist hat 1000 wünsche wer krank ist nur einen.
  Mit Zitat antworten Zitat
michael.cohrs

Registriert seit: 11. Nov 2005
Ort: Hamburg
39 Beiträge
 
#5

Re: Excel in OLE Container

  Alt 29. Nov 2008, 08:51
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
Michael Cohrs
  Mit Zitat antworten Zitat
Benutzerbild von Chemiker
Chemiker
Online

Registriert seit: 14. Aug 2005
1.674 Beiträge
 
Delphi XE6 Professional
 
#6

Re: Excel in OLE Container

  Alt 29. Nov 2008, 09:15
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
wer gesund ist hat 1000 wünsche wer krank ist nur einen.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:16 Uhr.
Powered by vBulletin® Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2014 by Daniel R. Wolf