Objekt Linkning og Embedding


2022-09-01 008.384





1. Forord

SW-Tools Objekt Linkning og Embedding giver mulighed for på en enkel måde at integrere indholdet af andre Windows applikationer i en rapport eller et forespørgselsprogram defineret i SW-Tools TRIO. Denne manual vil referere til Objekt Linkning og Embedding med forkortelsen OLE.

For eksempel er man i stand til at anvende tekstbehandlings faciliteterne i Microsoft Word ved definition af et kunde brev, eller til at afspille en videosekvens i forbindelse med forespørgsel på vareinformationer mm.

Det interface, TRIO stiller til rådighed, beror simpelthen på muligheden for definition af et frifelt, der markeres som OLE. Når man indsætter dette i layoutet for en rapport eller i skærmbilledet på en forespørgsel, kan man herefter vælge at linke til et bestående dokument eller oprette et 'embedded' eller 'indbundet' dokument.

En link til et bestående Microsoft Word dokument er kun en reference til et filnavn. Hvis man har et dokument gemt som c:/Microsoft/word/customer.doc, kan man linke direkte til dette. Hvis dokumentet ændres af en anden bruger, der ikke nødvendigvis anvender TRIO, vil dette alligevel være opdateret næste gang rapporten/forespørgselen bliver udført.

Hvis man anvender OLE med et 'embedded' eller 'indbundet' dokument, vil selve indholdet af dokumentet blive gemt sammen med TRIO programmet. Ændringer til dette sker herefter nu kun fra TRIO ved hjælp af det pågældende OLE program, det kan ikke længere ændres som et selvstændigt Word dokument.

Valget mellem link eller indbinding af et OLE objekt afhænger af, hvordan man ønsker at gemme indholdet af dokumentet.

Denne manual vil gennemgå forskellige eksempler både i RAPGEN og IQ for at vise den enkle brug af OLE objekter i TRIO.

1.1. Release noter

Følgende udvidelser er implementeret i brugeroverfladen for SW-Tools RAPGEN/IQ:

- Et nyt felttype OLE er tilføjet frifeltdialogen

Se eksemplerne herpå senere i denne manual.

2. OLE i RAPGEN

Dette kapitel vil skridt for skridt beskrive, hvordan man ganske enkelt definerer et brev, der vil læse og udskrive information fra en database inklusive en tekst skrevet med Microsoft Word.

2.1. Skridt 1 - Definition af et leverandørbrev

Vi begynder dette eksempel med at definere et simpelt leverandørbrev, baseret på TRIOs demokartoteker.


1. Definition af et leverandørbrev

Kartoteket 'le' vælges som hovedkartotek for brevet, og rapportens navn indtastes som 'Leverandørbrev'.


2. Indsættelse af felter i brevets layout

Herefter indsættes 3 felter fra leverandørkartoteket på layoutet.

2.2. Skridt 2 - Indsættelse af indholdet af et Microsoft Word dokument som et felt

For at indsætte indholdet af et Microsoft Word dokument som et felt må man først definere et felt af typen OLE 2.0 objekt. I dette eksempel har vi valgt frifelt nummer 10 fra database vinduet nederst.


3. Definition af et OLE 2.0 Objekt frifelt

Når feltet er indsat i layoutet og størrelsen tilpasset, kan vi herefter vælge arten af OLE objekt ved at højreklikke med musen på feltet og vælge funktionen 'Tekst...'


4. Valg af den ønskede OLE objekttype

Den første gang man vælger 'Tekst...' funktionen for et OLE objekt fremkommer en dialog med oversigt over alle de installerede OLE 2.0 objekter. Fra denne liste vælges nu:


5. Valg af Microsoft Word som objekt type

Herefter vil RAPGEN aktivere serveren for det valgte objekt, i dette tilfælde Microsoft Word, hvorved man får hele tekstbehandlings funktionaliteten herfra til at indtaste den ønskede tekst.


6. Indtastning af objektes indhold i Microsoft Word

Når teksten er indtastet kan applikationen lukkes og objekt indholdet vil blive vist i brevets layout.


7. Brevets layout inklusive indholdet af OLE objektet

Endelig kan vi tilføje saldofeltet oven i OLE objekt feltet, og brevet er færdigt.

2.3. Det færdige leverandørbrev

Når brevet udskrives fås følgende:


8. Udskriften af leverandørbrevet

2.4. Anvendelse af link i stedet for indbundet objekt

I dette eksempel kunne vi istedet linke til et eksisterende dokument. Vi kunne have gemt præcis den samme tekst i en fil med navn

c:/swtools/leveran.doc

og vil nu linke hertil istedet for at indbinde objektet i rapporten.

Feltet defineret som OLE objekt indsættes i layoutet, og man vælger 'Tekst...' funktionen ved at højreklikke på dette i layoutet.

I den herved fremkomne dialog krydsmarkeres feltet 'Link til eksisterende fil' og filnavnet indtastes.


9. Linkning til en eksisterende fil

Den færdige udskrift vil være den samme som ovenfor, hvor objektet var indbundet i layoutet.

Bemærk at man ikke kan skifte direkte fra indbundet til linket objekt. Man bliver først nødt til at fjerne feltet fra layoutet og herefter indsætte dette igen, hvorefter man kan definere link til en eksisterende fil istedet for indbinding.

3. OLE i IQ/DATAMASTER

Dette kapitel beskriver, hvordan man kan indføje OLE funktionalitet i enhver slags IQ/DATAMASTER program. I dette afsnit vises dog kun et eksempel på en IQ forespørgsel, idet metoden ved et DATAMASTER program er præcis den samme.

Vi har valgt et eksempel, som fungerer som en leverandørforespørgsel, hvor man kan tilføje enhver form for OLE objekt som ekstra information på hver leverandør. Dette giver en god forestilling om, hvad der faktisk kan laves som applikationer i TRIO med brug af OLE objekter.

3.1. Oprettelse af en simpel forespørgsel

Dette eksempel er baseret på en simpel leverandørforespørgsel

le#1-6

der er gemt som program 1 i IQ.


10. Simpel leverandørforespørgsel i IQ

3.2. Indsættelse af OLE objektet skridt for skridt

Definer et fri felt #10 i funktionen 'Skærmbillede' med navnet 'OLE Objekt på leverandør', og marker dette som et '#O OLE 2.0 Objekt'.


11. Frifelt defineret som et OLE objekt

Indsæt herefter dette frifelt #10 på den ønskede position i skærmbilledet og tilpas størrelsen af boxen tilsvarende.

Herefter indsættes to beregningslinier til læsning af OLE objektet Efter læsning af leverandørkartoteket

#14="c:/swtools/",#1,".swo"
OleLoad(#10,#14)

3.3. Brug af 3 knapper for OLE funktionaliteten

Indsæt 3 frifelter defineret som '&Opret', '&Gem' og '&Aktion'. Alle felterne defineres med formatet 8. Når disse er indsat i layoutet, markeres de som objekttype 'Knap' ved at højreklikke med musen på hvert af felterne.


12. Knapperne til styring af OLE objektet

3.4. Oprettelse af OLE objektet

De beregninger, der er nødvendige for at oprette selve OLE objektet som et indbundet eller linket objekt, kan være følgende:


13. Beregninger for oprettelse af et OLE objekt

Frifeltet #15, der anvendes til at identificere det valgte objekt, er defineret med formatet '9,'.

3.5. Hvordan objektet gemmes

For at brugeren skal kunne gemme det oprettede objekt tilføjer vi følgende beregninger:


14. Beregninger for gemning af det oprettede OLE objekt

Standard stien c:/swtools/ efterfulgt af leverandørnr samt efternavnet .swo danner det fulde objekt filnavn. Dette vil for eksempel for leverandørnummer 205 være

c:/swtools/205.swo

Formatet for frifeltet #14 er 128, idet dette skal være et tekstfelt, der er langt nok til at indeholde hele filnavnet inklusive stien.

3.6. Udførelse af aktioner på objektet

Da et OLE objekt kan have forskellige typer, kan de aktioner, brugeren kan udføre på objektet, kun bestemmes af den applikation, der kan bearbejde dette. Hvis et objekt for eksempel er af typen Microsoft Word, vil brugeren normalt kun kunne redigere i dette, hvorimod for et Microsoft Video objekt vil han også have en afspilningsfunktion. De beregninger, der indlægges, er et standard eksempel for hvordan brugeren kan vælge de forskellige mulige aktioner for enhver objekttype.


15. Beregninger for aktioner på et OLE objekt

De anvendte funktioner beskrives i detaljer senere. De anvendte frifelter er defineret som følger:

  Feltnr Navn Format
  16 OLEMenu 9,
  17 OLEMenuElement 9,
  18 Vindue 9,
  19 Start X 9,
  20 Start Y 9,
  21 Slut X 9,
  22 Slut Y 9,

3.7. Hvordan man arbejder med den færdige forespørgsel

Den færdige forespørgsel er et normalt IQ program, men udvidet med de 3 specialknapper med tilhørende beregninger.

Man kan for eksempel finde leverandør 205 ved at indtaste nummeret i nøglefeltet.

Hvis man nu ønsker at skrive en note for denne leverandør med Microsoft Word, klikkes blot på Opret knappen, hvorved man får en dialog for oprettelse af et nyt objekt. Fra denne dialog vælges 'Microsoft Word' som et indbundet objekt.


16. Oprettelse af et objekt for leverandørnr 205

Når objektet er oprettet kan man herefter aktivere den tilhørende applikation, dvs. Microsoft Word, ved at klikke på knappen 'Aktion' og vælge Rediger funktionen.


17. Indtastning af en note i Microsoft Word

Når man nu lukker Microsoft Word vil indholdet af objektet blive vist i IQ forespørgselen.


18. IQ forespørgselen med note fra Microsoft Word

4. OLE funktioner

Samlingen af OLE funktioner er installeret som et Windows DLL (Dynamic Linked Library). Alle funktionerne er beskrevet og installeret som subfunktioner i TRIO filen 10.xxx, hvor xxx er sprogkoden, i den sti, hvor TRIO selv er installeret.

4.1. On-line dokumentationen

On-line beskrivelsen af OLE funktionerne kan fås direkte i databasevinduet. Vælg filen med navnet 'OLE 2.0 Objekt', som er fil id 10.


19. On-line dokumentation af funktionerne

4.2. Generelle fejlkoder

Følgende liste omfatter alle generelle fejlkoder:

00 Ingen fejl
01 OLEx.DLL mangler
02 Funktionen i det angivne DLL findes ikke
03 Kan ikke initiere meddelelseskøen
04 Underkald til en funktion fejlede
05 Kald til en OLE funktion fejlede
06 Illegal OLE version
07 ole_init skal kaldes først
08 Windows registreringsfunktion fejlede
09 COMPOBJ.DLL mangler
10 STORAGE.DLL mangler
11 Objektet supporterer ikke et ukendt interface
12 Manglende interface
13 Ikke nok hukommelse
14 Der findes ingen aktioner for dette objekt
15 Ukendt aktion eller menu id
16 Ingen objekter for OLE2.0
17 Ukendt objekt eller menu id
18 Objektet er ikke oprettet i hukommelsen
19 ole_init er ikke kaldt
20 OLE2DISP.DLL/OLEAUT32.DLL mangler
21 Kan ikke konvertere tekststreng til OLE streng eller omvendt

4.3. OleAllocate - Reserver plads til et nyt objekt

Tal OleAllocate()
Parametre:
Ingen.
Beskrivelse:
Denne funktion reserverer plads til et nyt OLE objekt. Returværdien anvendes som første parameter til resten af OLE funktionerne.

Når et objekt ikke længere anvendes, bør pladsen herefter frigives igen ved hjælp af Olefree() funktionen.

Bemærk at et OLE objektfelt, der er indsat i en rapports layout eller i skærmbilledet for et forespørgsels/registreringsprogram, automatisk har udført OleAllocate() ved start af programmet og ligeledes automatisk vil udføre OleFree() ved afslutning af programmet.

Returværdi:
Hvis denne id er nul kunne der ikke oprettes et objekt.
Se også:
OleLinkToFile,OleEmbedded,OleDialogCreate
Eksempel:
#50=OleAllocate() /* Reserver plads for et nyt objekt af ukendt type
OleLinkToFile(#50,"c:/swtools/note.doc") /* Link til et Word dokument note.doc (Felt #50 er indsat i layoutet)
OleFree(#50) /* Frigiv pladsen igen


4.4. OleFree - Frigiv pladsen for er objekt

Tal OleFree(ObjektID par1)
Parametre:
par1: Eentydig objekt id
Beskrivelse:
Denne funktion frigiver den plads, der er reserveret med OleAllocate() funktionen.

Bemærk at et OLE objektfelt, der er indsat i en rapports layout eller i skærmbilledet for et forespørgsels/registreringsprogram, automatisk har udført OleAllocate() ved start af programmet og ligeledes automatisk vil udføre OleFree() ved afslutning af programmet.

Returværdi:
0=OK
x=Se afsnittet generelle fejlkoder
Se også:
OleAllocate
Eksempel:
Se OleAllocate


4.5. OleLinkToFile - Link til en fil med et objekt af vilkårlig type

Tal OleLinkToFile(ObjektID par1, Filnavn par2)
Parametre:
par1: Eentydig objekt id
par2: Filnavn for objektet (se note 1)
Beskrivelse:
Denne funktion danner en link til en eksisterende fil og henter herved et objekt af en vilkårlig type. Hvis filnavnet i par2 for eksempel er "note.doc" vil funktionen lade OLE søge efter en Windowsfiltype ".doc" og herved finde, at der er tale om et Microsoft Word dokument.

Et eventuelt tidligere indhold af objektet i par1 fjernes før funktionen bliver udført.

Med funktionen OleDialogCreate() kan man forenkle oprettelsen af et OLE objekt ved at anvende standard Windows dialogen.

Når man anvender et linket objekt i TRIO, vil kun filnavnet blive gemt i forbindelse med rapportens layout / programmets skærmbillede. Dette gælder også for en fil gemt med OleSave(). Hvis man ønsker at have et selvstændigt objekt, ejet af det aktuelle TRIO program, skal man istedet anvende et indbundet objekt.

Note 1 Hvis par2 er "" (intet filnavn) vil funktionen bruge det sidst anvendte. Hvis man ved et tidligere kald til OleDialogCreate() har valgt filen "regneark.xls", vil dette navn således blive genanvendt.

Returværdi:
0=OK
x=Se afsnittet generelle fejlkoder
Se også:
OleEmbedded,OleDialogCreate
Eksempel:
Se OleAllocate


4.6. OleEmbedded - Opret et indbundet objekt

Tal OleEmbedded(ObjektID par1, Tal par2, Tekst par3, Tal par4, Tal par5)
Parametre:
par1: Eentydig objekt id
par2: Funktion
0=Program id
1=Menu element
par3: Program id hvis funktion = 0
par4: Menu element hvis funktion = 1
par5: Menu startnummer hvis funktion = 1
Beskrivelse:
Funktionen vil oprette et indbundet objekt, dvs. et objekt ejet af TRIO programmet. Før et indbundet objekt kan oprettes må man angive objekt applikationens program id, som dette er angivet i Windows registreringsfil (se dokumentationen for den enkelte objekttype)

For eksempel er program id for et Microsoft Word 97 dokument "Word.Document.8".

Parametrene par4 og par5 anvendes kun når en af funktionere OleDialogCreate() or OleFillObjectMenu()/OleMenuSelect() tidligere er kaldt. Se dokumentationen for disse funktioner.

Returværdi:
0=OK
x=Se afsnittet generelle fejlkoder
Se også:
OleAllocate,OleLinkToFile,OleDialogCreate,OleFillObjectMenu
Eksempel:
#50=OleAllocate() /* Reserver plads for et nyt ukendt objekt
OleEmbedded(#50,0,"Word.Document.8",0,0)


4.7. OleFillObjectMenu - Dan en menu med alle registrerede objekter

Tal OleFillObjectMenu(Tal par1, Tal par2, Tal par3, Tekst par4)
Parametre:
par1: Eentydig menu id
par2: Menu startnummer
par3: Maksimum antal elementer i en undermenu
par4: Undermenu navn
Beskrivelse:
Denne funktion kan anvendes til at oprette en flydende menu, hvor brugeren kan vælge et objekt. Funktionen vil tilføje elementer til en menu oprettet med OleMenuCreate().

Hvert element, der tilføjes til menuen, vil få et eentydigt id, fra 0 til x. Da dette kan konflikte med andre menuelementer, der er indsat tidligere, kan man anvende par2 som et menu startnummer, hvis par2 er 1000 vil elementerne blive nummereret som 1000 til x.

Antallet af elementer, der tilføjes, afhænger af, hvor mange applikationer, der er installeret i systemet, hvilket kan være særdeles mange.

På grund af begrænsningerne ved visningen af den flydende menu, kan man angive et maksimum antal elementer i par3, hvis par3 er 10 vil der blive oprettet en undermenu for hver 10 elementer. Undermenuerne vil blive benævnt xxxxx 1-10, xxxxx 11-20 osv., hvor xxxxx skal angives i par4.

Returværdi:
0=OK
x=Se afsnittet generelle fejlkoder
Se også:
Eksempel:
#50=OleAllocate() /* Reserver plads for et nyt objekt af ukendt type
#51=OleMenuCreate() /* Opret en ny menu
OleFillObjectMenu(#51,1000,10,"Objekt") /* Indsæt alle registrerede objekter i menuen
#52=OleMenuSelect(#51) /* Hent det valgte objekt
if #52 >= 1000 OleEmbedded(#50,1,"",#52,1000) /* Opret det indbundne objekt
OleMenuDestroy(#51) /* Nedlæg den oprettede menu
OleFree(#50) /* Frigiv pladsen for objektet


4.8. OleFillVerbMenu - Dan en menu med alle aktioner på objektet

Tal OleFillVerbMenu(ObjektID par1, Tal par2, Tal par3)
Parametre:
par1: Eentydig objekt id
par2: Eentydig menu id
par3: Menu startnummer
Beskrivelse:
Med denne funktion kan man danne en menu med alle de aktioner ('verbs), der kan foretages for et objekt. En aktion kan for eksempel være Rediger, Åben, Afspil osv., afhængigt af objekttypen. Som regel har alle objekter aktionerne Rediger og Åben, nogen objekter kan så yderligere have aktioner som Afspil, for eksempel lyd/video.

Aktionen er eentydigt identificeret med et nummer, der kun kendes af objektet. Ved hjælp af denne funktion kan man tilføje elementer til en menu, hvorfra brugeren så kan vælge en af disse for objektet.

Hvert element, der tilføjes til menuen, vil få et eentydigt id, fra 0 til x. Da dette kan konflikte med andre menuelementer, der er indsat tidligere, kan man anvende par3 som et menu startnummer, hvis par3 er 1000 vil elementerne blive nummereret som 1000 til x.

Returværdi:
0=OK
x=Se afsnittet generelle fejlkoder
Se også:
Eksempel:
/* #50 er indsat i et IQ skærmbillede
OleLinkToFile(#50,"c:/swtools/sound.wav") /* Link til en lydfil
#51=OleMenuCreate() /* Opret en menu
OleFillVerbMenu(#50,#51,2000) /* Adder alle kendte aktioner til menuen
#52=OleMenuSelect(#51) /* Lad brugeren vælge en aktion
#53=GETINFO(1) /* Hent IQ vinduenr.
#54=GETINFO(6,"#50") /* Hent objektes start x position
#55=GETINFO(7,"#50") /* Hent objektes start y position
#56=GETINFO(8,"#50") /* Hent objektes slut x position
#57=GETINFO(9,"#50") /* Hent objektes slut y position
OleDoVerb(#50,0,#52,2000,#53,#54,#55,#56,#57)


4.9. OleDoVerb - Udfør en aktion på et objekt

Tal OleDoVerb(ObjektID par1, Tal par2, Tal par3, Tal par4, Tal par5, Tal par6, Tal par7, Tal par8, Tal par9)
Parametre:
par1: Eentydig objekt id
par2: Funktion
0=Brug menu elementnr
1=Brug aktions id
par3: Menu elementnr / Aktionsid afhængig af par2
par4: Menu startnummer hvis par2 = 0
par5: Vindue identifikation
par6: Objektes start x position
par7: Objektes start y position
par8: Objektes slut x position
par9: Objektes slut y position
Beskrivelse:
Denne funktion vælger en aktion for et objekt. En aktion kan for eksempel være Rediger, Åben, Afspil osv., afhængigt af objekttypen. Som regel har alle objekter aktionerne Rediger og Åben, nogen objekter kan så yderligere have aktioner som Afspil, for eksempel lyd/video.

Hvis objektes aktionsid er kendt kan dette gives direkte i par3 med par2 sat til 1. Hvis ikke kan eksemplet fra OleFillVerbMenu() anvendes hvor brugeren vælger den aktion, der skal udføres, fra en menu.

Parametrene par5-par9 skal angives og kan fås ved hjælp af funktionen GETINFO(). Parametrene skal være defineret med formatet "8,", hvis dette ikke er tilfældet kan der fremkomme uventede resultater eller fejl.

Returværdi:
0=OK
x=Se afsnittet generelle fejlkoder
Se også:
OleFillVerbMenu
Eksempel:
Se OleFillVerbMenu


4.10. OleSave - Gem et objekt som indbundet i en fil

Tal OleSave(ObjektID par1, Filnavn par2)
Parametre:
par1: Eentydig objekt id
par2: Filnavn
Beskrivelse:
Denne funktion gemmer et objekt i en fil. Objektet kan være linket eller indbundet. Hvis det er linket gemmes kun filnavnet, for et indbundet objekt gemmes derimod hele objektet.

Det gemte objekt kan hentes frem igen med OleLoad() funktionen.

Returværdi:
0=OK
x=Se afsnittet generelle fejlkoder
Se også:
OleLoad
Eksempel:
/* I en DATAMASTER applikation kan brugeren oprette et indbundet objekt for hver leverandør i TRIO demo systemet.
/* Demo systemet arbejder med SSV-Tekst filer, som ikke supporterer andre felttyper end tekst og tal.
/* Ved at danne filnavnet udfra leverandørnummeret kan vi gemme objektet i en selvstændig fil.
[Skrivning af Leverandørkartoteket]
#51="c:/swtools/demo",#1,".swo" /* Dan et eentydigt filnavn for leverandør objektet
OleSave(#50,#51) /* Gem objektet
[Efter læsning af Leverandørkartoteket]
#51="c:/swtools/demo",#1,".swo" /* Dan et eentydigt filnavn for leverandør objektet
OleLoad(#50,#51) /* Hent objektet


4.11. OleLoad - Hent et indbundet objekt fra en fil

Tal OleLoad(ObjektID par1, Filnavn par2)
Parametre:
par1: Eentydig objekt id
par2: Filnavn
Beskrivelse:
Denne funktion henter et objekt, der tidligere er gemt med OleSave().

Returværdi:
0=OK
x=Se afsnittet generelle fejlkoder
Se også:
OleSave
Eksempel:
Se OleSave


4.12. OleGetInfo - Hent information om et objekt

Tal OleGetInfo(ObjektID par1, Tal par2, tekst par3)
Parametre:
par1: Eentydig objekt id
par2: Funktion
0=Brug ikke par3
1=Returner filnavnet i par3
par3: Tekstfelt for retur filnavn
Beskrivelse:
Denne funktion returnerer information om det angivne objekt. Informationen afhænger af funktionskoden (par2), der kan være:

For funktion 0 anvendes par3 ikke. For funktion 1 vil en kopi af objektes filnavn returneres i par3.

Returværdi:
-1=Illegal funktion angivet i par2
Funktion 0: Returnerer objekt informationen
Funktion 1: Returnerer længden af filnavnet
Se også:
OleSetInfo
Eksempel:
if OleGetInfo(#50,1,#53) > 0 then begin /* Hent filnavnet for objektet
#51=GETINFO(1) /* Hent IQ vindue identifikationen
#52=OleDialogFile(#51,"*","Alle filer,*.*",0,#53,"") /* Lad brugeren ændre filnavnet
if #52=0 OleLinkToFile(#50,#53) /* Link til det nye filnavn
end


4.13. OleSetInfo - Sæt information for et objekt

Tal OleSetInformation(ObjektID par1, Bitflag par2, Tal par3)
Parametre:
par1: Eentydig objekt id
par2: Funktion
0=Ingen flag
1=Fysiske dimensioner
2=Skaler vertikalt
4=Skaler horisontalt
par3: Arbejdsbuffer
Beskrivelse:
Denne funktion sætter information om det angivne objekt. Informationen afhænger af funktionskoden (par2), der kan være:

Ved funktion 0 skal objekt flagene angives i par3. Værdien heraf kan være en eller flere af følgende værdier summeret sammen:

0 - Ingen flag. Objektet skaleres i henhold til feltets boxstørrelse. 1 - Objektet anvender sine egne fysiske dimensioner. Hvis feltboxen er mindre end objektet afskæres dette. 2 - Den vertikale størrelse skaleres i henhold til den horisontale størrelse af feltboxen. 4 - Den horisontale størrelse skaleres i henhold til den vertikale størrelse af feltboxen.

Som standard vil ethvert oprettet objekt få flag 2.

Returværdi:
-1=Illegal funktionskode
Funktion 0: Returner de nye flag for objektet.
Se også:
Eksempel:
OleSetInfo(#50,0,0) /* Skaler objektet i henhold til feltes boxstørrelse


4.14. OleMenuCreate - Opret en menu

Tal OleMenuCreate()
Parametre:
Ingen.
Beskrivelse:
Denne funktion kan anvendes til at oprette en Windows menu. Når en menu er oprettet kan elementer tilføjes hertil med OleMenuAdd funktionen.

Når en menu ikke længere skal bruges skal denne nedlægges ved hjælp af OleMenuDestroy funktionen. Gøres dette ikke, vil den anvendte hukommelse ikke blive frigivet.

Returværdi:
0=Menuen kan ikke oprettes
x=Eentydig menu id
Se også:
OleMenuDestroy,OleMenuAdd,OleMenuSelect
Eksempel:
#51=OleMenuCreate() /* Opret en menu
OleMenuAdd(#51,0,3000,"Vis demo Excel regneark") /* Tilføj element id 3000
OleMenuAdd(#51,0,3001,"Vis demo Word dokument") /* Tilføj element id 3001
#52=OleMenuSelect(#51) /* Lad brugeren vælge et af de to menupunkter
OleMenuDestroy(#51) /* Nedlæg menuen efter brug
if #52=3000 OleLinkToFile(#50,"c:/swtools/regneark.xls")
if #52=3001 OleLinkToFile(#50,"c:/swtools/dokument.doc")


4.15. OleMenuDestroy - Nedlæg en menu

Tal OleMenuDestroy(Tal par1)
Parametre:
par1: Eentydig menu id
Beskrivelse:
Denne funktion vil frigive den hukommelse, der anvendes af en menu oprettet med OleMenuCreate() funktionen. Hvis der er oprettet undermenuer til denne menu vil disse også blive frigivet.

Returværdi:
0=OK
-1=Illegal menu id
Se også:
OleMenuCreate
Eksempel:
Se OleMenuAdd


4.16. OleMenuAdd - Tilføj et element til en menu

Tal OleMenuAdd(Tal par1, Tal par2, Tal par3, Tekst par4)
Parametre:
par1: Eentydig menu id
par2: Funktion, 0=Tilføj tekst element, -1=Tilføj separator, x=Tilføj eentydig menu id (undermenu)
par3: Menu element id
par4: Menu element tekst
Beskrivelse:
Denne funktion anvendes til at tilføje elementer til en menu oprettet med OleMenuCreate(). par2 bestemmer typen for det element, der tilføjes:

Hvis par2 er 0 indsættes en tekst i menuen.

Hvis par2 er -1 indsættes en separator (delelinie) i menuen. For denne funktion anvendes par4 ikke.

Hvis par2 er større end 0 skal denne indeholde en anden eentydig menuid, der er fået ved et tidligere kald til OleMenuCreate() funktionen.

Parameteren par3 skal være en eentydig menuid, som vil blive returneret når brugeren vælger et element fra menuen, og par4 indeholder simpelthen teksten for det pågældende element.

Returværdi:
0=OK
-1=Illegal menu id
Se også:
OleMenuCreate,OleMenuDestroy,OleMenuSelect
Eksempel:
#51=OleMenuCreate() /* Opret hovedmenuen
#52=OleMenuCreate() /* Opret menu for indbundne objekter
#53=OleMenuCreate() /* Opret menu for objekt dimensioner
OleMenuAdd(#51,#52,4000,"Indbundne objekter") /* Tilføj menu for indbundne objekter til hovedmenuen
OleFillObjectMenu(#52,4001,10,"Objekt") /* Indsæt alle registrerede objekter i menuen for indbundne objekter
OleMenuAdd(#51,#53,5000,"Skaler objekt ifølge") /* Tilføj objekt dimensions menuen til hovedmenuen
OleMenuAdd(#53,0,5001,"Felt boxstørrelse") /* Tilføj elementerne til objekt dimensions menuen
OleMenuAdd(#54,0,5002,"Objekt dimensioner")
OleMenuSelect(#51) /* Lad brugeren vælge fra menuen
OleMenuDestroy(#51) /* Dette frigiver alle menuer oprettet i #51-53


4.17. OleMenuSelect - Vælg fra en menu på det sted, hvor markøren står

Tal OleMenuSelect(Tal par1)
Parametre:
par1: Eentydig menu id
Beskrivelse:
Denne funktion aktiverer en flydende menu på det sted, hvor markøren i øjeblikket står på skærmen. Menuen vil forblive aktiv på skærmen indtil brugeren vælger et af punkterne eller klikker udenfor menuen.

Returværdi:
0=Intet menupunkt valgt
x=Menu element id valgt
-1=Illegal menu id
Se også:
OleMenuCreate,OleMenuDestroy,OleMenuAdd
Eksempel:
Se OleMenuAdd


4.18. OleDialogCreate - Standard dialog for oprettelse af indbundet/linket objekt

Tal OleDialogCreate(ObjektID par1, Tekst par2)
Parametre:
par1: Eentydig objekt id
par2: Sprogkode
DAN=Dansk
ENG=Engelsk
GER=Tysk
Beskrivelse:
Denne funktion kan anvendes til at forenkle oprettelsen af et objekt.

par2 er en sprogkode, der bestemmer sproget for dialogen.

Returværdi:
<=0 : Kan ikke oprettet eller vise dialogen
1 : Brugeren har valgt link til en fil. Filnavnet kan fås med OleGetInfo().
>=2 : Brugeren har valgt et af de indbundne objekter. Værdien (minus 1) kan videregives til OleEmbedded().
Se også:
Eksempel:
#50=OleCreate() /* Opret et nyt ukendt objekt
#51=OleDialogCreate(#50,"ENG") /* Lad brugeren vælge link/indbundet objekt fra en dialog
if #51=1 OleLinkToFile(#50,"") /* Link til det valgte filnavn
if #51>1 OleEmbedded(#50,1,"",#51-1,0) /* Opret indbundet objekt med det returnerede menu element id


4.19. OleDialogFile - Standard dialog for valg af et filnavn

Tal OleDialogFile(Tal par1, Tekst par2, Tekst par3, Tal par4, Tekst par5, Tekst par6)
Parametre:
par1: Vindue identifikation
par2: Filtype
par3: Filter definition
par4: Funktion
0=Åben
1=Gem
par5: Filnavn
par6: Start sti
Beskrivelse:
Denne funktion vil lade brugeren vælge et filnavn ved hjælp af Windows standard fil dialogen.

Vindue identifikationen i par1 kan fås med subfunktionen GETINFO().

Dialogen kræver to parametre til styring af filnavn filteret. Parameteren par2 bruges til filtypen, dvs. "ole" som filtype vil kun vise alle filer med navn "xxxxxxxx.ole". Parameteren par3 er definitionen af filteret sammen med en filter beskrivelse, hvilket for eksempel kan være:

"Alle filer,*.*"

hvorved der defineres et filter, som brugeren kan vælge med beskrivelsen "Alle filer" og indeholdende alle filer "*.*". Det er vigtigt at beskrivelsen og selve filteret adskilles med komma, da der eventuelt slet ikke ellers vil fremkomme nogen dialog.

Hvis funktionsparameteren par4 er en vil dialogen lade brugeren indtaste et nyt filnavn eller vælge et bestående for gem af filen. Hvis et bestående filnavn vælges skal man bekræfte, at den pågældende fil skal overskrives med nyt indhold.

Hvis der angives et filnavn i par5 men ingen værdi i par6 ("" tom tekst) vil dialogen anvende stien fra filnavnet i par5. Hvis par5 for eksempel er "c:/swtools/regneark.xls" vil startstien blive "c:/swtools".

Returværdi:
0=OK
x=Brugeren har klikket på fortryd eller dialogen kunne ikke oprettes.
Se også:
OleGetInfo
Eksempel:
Se OleGetInfo()


5. Tekniske specifikationer

5.1. Forudsætninger

OLE modulet kræver SW-Tools TRIO version 007.001 eller nyere. Modulet findes både i en 16 og i en 32 bits version.

5.2. Installerede filer

     
  10.dan Subfunktions beskrivelse og styring af TRIO beregningerne
  ole-dan.hlp Windows on-line hjælpemanual
  swo999xx.dll Dynamic Link Library, hvor 999 er versionsnummer, xx 16/32 bit