[delphi/word97] Textvak deleten

Pagina: 1
Acties:

  • Vinzzz243
  • Registratie: Februari 2001
  • Laatst online: 22-01-2025
Ik ben bezig met een programma dat het werk van een secretaresse van een bep. bedrijf een stuk makkelijker maakt. Ik moet een delphi programma maken waarin zij enkele inputvelden vult en waar vervolgens een word document uitkomt.

Het programma is voor 99% af, alleen was de vraag of ik een textvak kon verwijderen als werd voldaan aan een bep. voorwaarde.

De secretaresse opent in mijn programma een word bestand (dat automatisch wordt gegenereerd met access velden in 3 textvakken). Mijn programma zal dan na/ achter deze textvakken pas beginnen met het toevoegen van text.

Nu wil ik dus 1 bep. textvak wat automatisch al in dat word document stond, verwijderen.

Aangezien ik geen naam kan geven aan een textvak in word (althans, ben het niet tegengekomen) heb ik geprobeerd om met een index te werken.

Als ik echter doe:
code:
1
2
ov:=1;
wordapplication1.activedocument.formfields.item(ov).delete;


(ov is een olevariant) dan krijg ik de melding "Het gevraagde lid van de collectie bestaat niet"

Hoe kom ik achter de naam of id van het textvak?
(ik werk met delphi6 en word97 componenten, omdat ze op dat bedrijf win2k en word97 gebruiken)

[ Voor 5% gewijzigd door Vinzzz243 op 21-03-2003 12:19 ]


  • ProgrammerX
  • Registratie: Juli 2002
  • Laatst online: 26-02-2021
Als de tekstvakken op een vaste plek staan (vaste structuur dus) kun je denk beter via het activedocument tekst selecteren en dan verwijderen. Heb ooit ook wel eens op deze manier met excel en word gewerkt en het selecteren van tekst en dan verwijderen is niet zo moeilijk maar dan moet je natuurlijk wel weten welke karakters je moet selecteren :)

  • Vinzzz243
  • Registratie: Februari 2001
  • Laatst online: 22-01-2025
niet echt een mooie oplossing, zo word het textvak niet verwijderd... Ik hou dan een leeg textvak over. Het selecteren en verwijderen van de tekst is geen probleem, maar ik wil het hele textvak weghebben.

  • ProgrammerX
  • Registratie: Juli 2002
  • Laatst online: 26-02-2021
Je probeert ze nu toch via een "naam" te benaderen toch ? Kun je ze niet verwijderen door gewoon met nummer te werken, dus item(2) te verwijderen enzo. Het selecteren en verwijderen van iets op een form moet denk ik toch wel lukken zo.

Edit : ff een kleine toelichting. De reden waarom ik denk dat je ze via een "naam" probeert te benaderen is dat je een olevariant meegeeft als parameter. Ik dacht namelijk dat als je ze via nummer benaderd je een gewone integer meegeeft.

[ Voor 36% gewijzigd door ProgrammerX op 21-03-2003 12:53 ]


  • Vinzzz243
  • Registratie: Februari 2001
  • Laatst online: 22-01-2025
Delphi geeft zelf al aan:
code:
1
function Item(var Index: OleVariant): Formfield;


Ik dacht dus zelf al door ov := 1 te maken, een soort van index mee te geven... werkt dus niet :(

  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 22:26

Tomatoman

Fulltime prutser

Misschien moet je eerst Select of iets dergelijks doen voor Delete.

Een goede grap mag vrienden kosten.


  • ProgrammerX
  • Registratie: Juli 2002
  • Laatst online: 26-02-2021
Ik weet niet of word97 dit al heeft, maar bij word2002 kun je onder het menu "Extra", "Macro's" de vb editor opstarten. Meestal kun je hier ook nog wat informatie uit halen. Daarnaast is msdn een goede informatiebron. En wat misschien nog wel het makkelijkste is, is om een macro op te nemen van het verwijderen van een tekstvak. Dan kun je namelijk in deze macro zien welke "vba code" er dan wordt uitgevoerd en dan vervolgens deze methods ook aanroepen in je delphi programma via de word application en het activedocument.

Sterkte emee :)

  • Vinzzz243
  • Registratie: Februari 2001
  • Laatst online: 22-01-2025
thx voor je reply, maar het programma is al bijna af, dus het gebruik van de macro editor ken ik maar al te goed ;) .

Tomatoman: HOE wil ik dan het textvak selecteren? dat was juist mijn vraag, maar als ik dat weet, kan ik ook deleten :D

ProgrammerX: Word97 heeft dat idd ook, maar zoals net gezegd, wist ik dat al. En tijdens het macro opnemen heeft je muis weinig invloed op de macro, hij registreert wel veel toevoegingen die je met je muis via het menu doet, maar NIET textvakken :) Je kunt dus ook niet zomaar het textvak selecteren en op DEL douwen, omdat dat dat niet gaat tijdens de macro-editor :)

Ik heb nog es gezocht op textvak, textbox, formfields deleten etc, maar niets levert iets op :)

  • Vinzzz243
  • Registratie: Februari 2001
  • Laatst online: 22-01-2025
Gevonden, kan misschien "mooier" maar ik heb het gevonden via shapes:

code:
1
2
ov := 1
Wordapllication1.activedocument.shapes.item(ov).delete;


Ik heb wel ff moeten zoeken, en het bleek shape 7 te zijn (dus ov:=7)

thx voor reply's, slotje :D
Pagina: 1