Delphi - Ayuda Urgente de nuevo Ernesto De Spirito

 
Vista:

Ayuda Urgente de nuevo Ernesto De Spirito

Publicado por Daniel (12 intervenciones) el 30/05/2003 00:45:01
Mi problema es la automatizacion de Office con Delphi. Por ahora me interesa Word. Tengo un documento que detalla el manejo de la automatizacion tanto de word como de Excel pero en Visual Basic. A continuación están algunos de los fragmentos de codigo en Visual Basic que no puedo traducirlos a Delphi.

Looping Through a Range of Paragraphs
There are two main ways of doing this:
Using the For Each .. Next Statement
This example loops through the first 5 paragraphs in the active document, adding text before each of them:
Set myDoc = ActiveDocument
Set myRange = myDoc.Range(Start:=myDoc.Paragraphs(1).Range.Start, _
End:=myDoc.Paragraphs(5).Range.End)
For Each para in myRange.Paragraphs
Para.Range.InsertBefore "Question: " & vbTab
Next para

Returning or Setting the Text in a Range
Use the Text property to return or set the contents of a Range object. This returns the first word in the active document:
strText = ActiveDocument.Words(1).Text
This changes the first word in the active document to "Hello"
ActiveDocument.Words(1).Text = "Hello"

Formatting the Text in a Range
Use the Font property to get character -formatting properties and methods, and the ParagraphFormat property to get to paragraph-formatting properties and methods. For example:
With ActiveDocument.Paragraphs(1).Range.Font
.Name = "Times New Roman"
.Size = 14
.AllCaps = True
End With
With ActiveDocument.Paragraphs(1).Range.ParagraphFormat
.LeftIndent = InchesToPoints(0.5)
.Space1
End With

En este tema, ¿Cómo debo manejarme?. Sé que la automatizacion tiene que ver con Interfaces COM pero ¿
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Automatización de Word - Traducción código VB

Publicado por Ernesto De Spirito (706 intervenciones) el 30/05/2003 08:25:49
Las sentencias de Visual Basic como

Set variable = expresión_objeto_automatización

se traducen como

variable := expresión_objeto_automatización;

La variable puede declararse como de tipo Variant.

En los arreglos, Visual Basic utiliza paréntesis ("()") para encerrar los subíndices, mientras que Delphi utiliza corchetes ("[]").

Los bucles For..Each son una construcción cómoda de Visual Basic, pero pueden perfectamente reemplazarse por un bucle For común. Un bucle For..Each como el siguiente:

For Each x In colección
' sentencias
Next x

se reemplazaría por

for i := 1 to colección.Count do begin
x := colección[i];
// sentencias
end;

Si los elementos de la colección son objetos, declara x como variant.

Dentro de los bloques With, Visual Basic prefija las propiedades con un punto, mientras que en Delphi van sin el punto.

El "&" indica concatenación de strings, y en Delphi usamos el "+".

vbTab es una constante que equivale a #9 en Delphi.

Visual Basic usa comillas dobles para encerrar los literales de cadena, mientras que en Delphi se usan comillas simples.

Visual Basic usa el signo igual ("=") para hacer asignaciones, mientras que en Delphi se usa el dos puntos igual (":="), reservándose el igual sólo para comparaciones.

En Delphi, las sentencias se termina por punto y coma (";").

A grandes rasgos, el código en Visual Basic que muestras quedaría traducido a Delphi más o menos así:

var
myDoc, myRange, Para: variant;
i: integer;
strText: string;
begin
myDoc := ActiveDocument ;
myRange := myDoc.Range(myDoc.Paragraphs[1].Range.Start, myDoc.Paragraphs[5].Range.End) ;
For i := 1 to myRange.Paragraphs.Count do begin
Para := myRange.Paragraphs[i];
Para.Range.InsertBefore('Question:'#9);
end;
// -----
strText := ActiveDocument.Words[1].Text;
// -----
ActiveDocument.Words[1].Text := 'Hello';
// -----
With ActiveDocument.Paragraphs[1].Range.Font do begin
Name := 'Times New Roman';
Size := 14;
AllCaps := True;
End;
With ActiveDocument.Paragraphs[1].Range.ParagraphFormat do begin
LeftIndent := InchesToPoints(0.5);
Space1
end

Para la próxima, te pido que por favor tengas en cuenta que es regla de netiquette no dirigir los mensajes a un determinado miembro del foro porque puede interpretarse como que lo estás comprometiendo a responder o como que estuvieras rechazando la ayuda que otros pudieran brindarte.

Ernesto De Spirito
http://www.latiumsoftware.com/es/index.php
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar