Avatar billede cornelius Nybegynder
07. marts 2003 - 22:55 Der er 4 kommentarer

Hvad understøtter et givet OLE objekt?

Hvis jeg nu har indlæst et givet OLE objekt i Delphi vha. TOleContainer, så kan jeg udføre et verbum (verb) med DoVerb. I dette tilfælde er jeg kun interesseret i en enkelt type, nemlig den der hedder ovUIActivate i Delphi og OLEIVERB_UIACTIVATE i Win32-API. Disse verbum-klasser, om du vil, er alle negative. Man kan aflæse mulige verber vha. TOleContainer.ObjectVerbs, men her har jeg ingen mulighed for at vide hvilken "klasse" de enkelte hører til. De har selvfølgelig captions, men det er et lidt svagt udgangspunkt, specielt fordi man aldrig kan vide om "&Edit" åbner applikationen til dokumentet eller åbner dokumentet (som jeg vil) i mit eget vindue (inplace).

Jeg skal bruge det til at sørge for at en given knap/menu/whatever kun er aktiv, når det er _muligt_ at lave inplace-aktivering.
Avatar billede stoney Nybegynder
07. marts 2003 - 23:33 #1
Jeg ved ikke om jeg forstår dit spørgsmål korrekt, men prøv
en af nedenstående, de kan måske give et hint

procedure TForm1.Button1Click(Sender: TObject);
begin
if opendialog1.Execute then

olecontainer1.CreateObjectFromFile(opendialog1.FileName,false);
Memo1.Lines.Assign(OleContainer1.ObjectVerbs);
// OleContainer1.DoVerb(OleContainer1.ObjectVerbs.Indexof('&Edit'));
  OleContainer1.DoVerb(OleContainer1.ObjectVerbs.Indexof('ovUIActivate'));
end;

Stoney
Avatar billede cornelius Nybegynder
08. marts 2003 - 00:05 #2
Til Stoney:
Det vil desværre ikke gå godt. Hvis vi nu tager en Word-fil som eksempel. Den har to Verbs:
  0: "&Edit"
  1: "&Open"

Nu ved jeg tilfældigvis at "&Edit" er den rigtige i dette tilfælde. Objektet vil gå over i Inplace-activation-mode, hvis man laver DoVerb(0) eller DoVerb(ovUIActivate). ObjectVerbs indeholder ikke standardverbs, men derimod kun dem, der er mulige - i dette tilfælde '&Edit' og '&Open'. IndexOf-opslaget vil derfor returnere -1, hvilket svarer til ovShow.
Avatar billede stoney Nybegynder
08. marts 2003 - 00:17 #3
Jeg fatter ikke helt hvad du mener.
Jeg kan da fint redigere et word doc. i min olecontainer.

Eller prøv at kigge i olectnrs.pas

const
  ovShow = -1;
  ovOpen = -2;
  ovHide = -3;
  ovUIActivate = -4;
  ovInPlaceActivate = -5;
  ovDiscardUndoState = -6;
  ovPrimary = -65536;

Stoney
Avatar billede cornelius Nybegynder
08. marts 2003 - 01:22 #4
Helt rigtigt. Det er dem jeg henviser til. Jeg vil vide *om* det er muligt at kalde DoVerb(ovUIActivate), *før* jeg gør det.
Som vi kan se i olectnrs.pas, har verbe-typerne alle negative værdier. ObjectVerbs giver positive værdier. For et Word-dokument gælder:
0, "Edit" -> ovUIActivate
1, "Open" -> ovOpen

For et billed-dokument kunne gælde
0, "Edit" -> ovOpen
1, "Open" -> ovShow

Jeg har ingen mulighed for at vide om der findes et verbum, der svarer til DoVerb(ovUIActivate).
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester