Jump to content
GSForum - Segélyvonal

Word eszköztárak és a menü eltüntetése


wizard

Recommended Posts

wizard

Sziasztok!

 

OleContainer segítségével betöltök 1 doksit. A doksi be is jön szépen, csak a menüimet összefésüli a Word menüjével. + ehhez még hozzájön a Word eszköztára is. Erre pedig semmi szükségem, mert nagyon zavaró.

 

Hogy lehet ezeket eltüntetni?

 

A kód:

 

unit U_Ole_w97;

 

interface

 

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls,

Forms, StdCtrls, Menus, OleCtnrs;

 

type

TForm1 = class(TForm)

MainMenu1: TMainMenu;

mnuFile: TMenuItem;

mnuOpen: TMenuItem;

OleContainer1: TOleContainer;

procedure mnuOpenClick(Sender: TObject);

 

private

procedure CloseDoc;

public

{ Public declarations }

end;

 

var

Form1: TForm1;

 

implementation

 

{$R *.DFM}

 

procedure TForm1.CloseDoc;

begin

if OleContainer1.State=osEmpty then Exit;

OleContainer1.Close;

OleContainer1.DestroyObject;

OleContainer1.AutoActivate:=aaManual;

end;

 

procedure TForm1.mnuOpenClick(Sender: TObject);

var filenev:string;

begin

filenev:='1.doc';

if OleContainer1.State<>osEmpty then CloseDoc;

OleContainer1.AutoActivate:=aaGetFocus;

OleContainer1.CreateObjectFromFile(GetCurrentDir+'\'+filenev,false);

OleContainer1.DoVerb(OleContainer1.PrimaryVerb);

end;

end.

 

 

Kaptam 1 tippet az eszköztár eltüntetéséhez, de elszállt vele a progi.

 

A hibaüzenet:

Project POlecont.exe raised exception class EIntfCastError with message 'Interface not supported'.

Process stopped. Use Step or Run to continue.

 

A tipp:

 

uses Word97, Office97, ActiveX;

 

procedure TForm1.mnuOpenClick(Sender: TObject);

var filenev:string;

cbs :CommandBars;

cb :CommandBar;

ObjEnum :IEnumVariant;

TmpObj :OleVariant;

RetVal :Cardinal;

 

begin

filenev:='1.doc';

if OleContainer1.State<>osEmpty then CloseDoc;

OleContainer1.AutoActivate:=aaGetFocus;

OleContainer1.CreateObjectFromFile(GetCurrentDir+'\'+filenev,false);

OleContainer1.DoVerb(OleContainer1.PrimaryVerb);

 

cbs:=IUnknown(OleContainer1.OleObject.CommandBars) as CommandBars;

ObjEnum:=cbs._NewEnum as IEnumVariant;

while ObjEnum.Next(1,TmpObj,RetVal)=S_OK do

begin

cb:=IUnknown(TmpObj) as CommandBar;

try

cb.Set_Visible(FALSE);

except

end;

end;

end;

 

 

Link to comment
Share on other sites

arpsoft

A menüket nem fogod tudni kiirtani, az eszköztárat talán.

Ez van, ha az ember OLE konténert használ.

Link to comment
Share on other sites

wizard

Ez a régi változatom:

(Benne van 1 scrollboxban, hogy lehessen görgetni.)

 

 

procedure TForm1.FormActivate(Sender: TObject);

begin

Olecontainer1.sizemode:=smAutoSize;

end;

 

 

procedure TForm1.Button1Click(Sender: TObject);

var filenev:string;

begin

try

filenev:='1.doc';

OleContainer1.CreateObjectFromFile(GetCurrentDir+'\'+filenev,false);

except

showmessage ('Valahol hiba van!')

end;

end;

 

 

 

Se újabb menük, se eszköztár.

 

De a következõ gondok voltak vele:

1. lassú betöltés

2. szimbólumokat nem jelenítette meg.

3. egyenletszerkesztõ képeit rossz helyen jelenítette meg.

 

A Word-ös változatnál nincs semmi ilyen gond, csak az az eszköztár ne lenne...

+ a menümbe is "belerondít."

Link to comment
Share on other sites

wizard

Próbálgattam a menü OnDrawItem-jét. Ha pl ennek az eljárásába csak annyit írtam be, hogy height:=100; lazán eltüntette az 1. menüpontomat. Ezzel esetleg nem lehetne a Word menüit is megpiszkálni?

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...