Este ejemplo, me lo hice para probar 2 cosas:
1- Crear Forms y asignarle eventos
2- Enviar cosas al Word
En realidad, el código lo escribí usando el Delphi, cuando ya me funcionaba bien, lo transformé en un script.
El código parece muy largo, pero el 90% es la creación del form y sus componentes en tiempo de ejecución xD
Copiando y pegando este código, en uno de los programa de ejemplo del Pascal Script, debería funcionarte sin problemas.
(Los textos no están en castellano, sino en catalán xD, ya que eran una prueba personal).
Código Delphi
[-]Program WordProva;
var
frmExemple01: TForm;
lblDescripcio: TLabel;
lblInfo: TLabel;
memWordText: TMemo;
btnEnviar: TButton;
btnClose: TButton;
gpbOpcionsText: TGroupBox;
lblTamanyCaption: TLabel;
lblFont: TLabel;
chbNegreta: TCheckBox;
chbSubretllar: TCheckBox;
chbCursiva: TCheckBox;
cmbCentrat: TComboBox;
edtTextSize: TEdit;
cmbFont: TComboBox;
procedure AddItemsOfcmbCentrat;
begin
with cmbCentrat.Items do
begin
Clear;
Add('Posar el text a l''esquerra');
Add('Centrar el text al mig');
Add('Posar el text a la dreta');
end;
end;
procedure memWordTextOnChange(Sender: TObject);
begin
btnEnviar.Enabled:=memWordText.Text <> '';
end;
procedure btnEnviarOnClick(Sender: TObject);
var
WordDoc: Variant;
begin
WordDoc:=CreateOleObject('Word.Application');
WordDoc.Documents.Add;
WordDoc.Selection.Font.Name:=cmbFont.Text;
WordDoc.Selection.Font.Size:=StrToInt(edtTextSize.Text);
WordDoc.Selection.Font.Bold:=chbNegreta.Checked;
WordDoc.Selection.Font.Italic:=chbCursiva.Checked;
WordDoc.Selection.Font.UnderLine:=chbSubretllar.Checked;
WordDoc.Selection.ParagraphFormat.Alignment:=cmbCentrat.ItemIndex;
WordDoc.Selection.TypeText(memWordText.Text);
WordDoc.Visible:=True;
end;
procedure cmbFontOnKeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then
if cmbFont.Items.IndexOf(LowerCase(cmbFont.Text)) <> 0 then
cmbFont.Items.Add(cmbFont.Text);
end;
procedure DisplayForm;
begin
frmExemple01:=TForm.Create(Self);
With frmExemple01 do
begin
Name:='frmExemple01';
Left:=0;
Top:=0;
Width:=534;
Height:=313;
ShowHint:=False;
Hint:='';
Enabled:=True;
Cursor:=crDefault;
Tag:=0;
Visible:=False;
Align:=alNone;
Caption:='Exemple 001 - Jugan''t amb el Word';
Color:=clBtnFace;
Position:=poScreenCenter;
FormStyle:=fsNormal;
BorderStyle:=bsDialog;
WindowState:=wsNormal;
BorderIcons:=[biSystemMenu,biMinimize,biMaximize];
end;
lblDescripcio:=TLabel.Create(frmExemple01);
With lblDescripcio do
begin
Parent:=frmExemple01;
Name:='lblDescripcio';
Left:=8;
Top:=8;
Width:=175;
Height:=13;
ShowHint:=False;
Hint:='';
Enabled:=True;
Cursor:=crDefault;
Tag:=0;
Visible:=True;
Align:=alNone;
Alignment:=taLeftJustify;
Layout:=tlTop;
Caption:='Escriu aqui un text a enviar al Word:';
AutoSize:=True;
WordWrap:=False;
Transparent:=True;
end;
lblInfo:=TLabel.Create(frmExemple01);
With lblInfo do
begin
Parent:=frmExemple01;
Name:='lblInfo';
Left:=8;
Top:=252;
Width:=300;
Height:=13;
ShowHint:=False;
Hint:='';
Enabled:=False;
Cursor:=crDefault;
Tag:=0;
Visible:=True;
Align:=alNone;
Alignment:=taCenter;
Layout:=tlTop;
Caption:='Exemple creat amb la Classe "TFormGenerator" de xTech';
AutoSize:=False;
WordWrap:=False;
Transparent:=True;
end;
memWordText:=TMemo.Create(frmExemple01);
With memWordText do
begin
Parent:=frmExemple01;
Name:='memWordText';
Left:=8;
Top:=27;
Width:=325;
Height:=214;
ShowHint:=False;
Hint:='';
Enabled:=True;
Cursor:=crDefault;
Tag:=0;
Visible:=True;
Align:=alNone;
HideSelection:=True;
ReadOnly:=False;
TabStop:=True;
WantReturns:=True;
WantTabs:=False;
WordWrap:=True;
TabOrder:=0;
TabStop:=True;
Text:='';
Alignment:=taLeftJustify;
ScrollBars:=ssVertical;
OnChange:=@memWordTextOnChange;
end;
btnEnviar:=TButton.Create(frmExemple01);
With btnEnviar do
begin
Parent:=frmExemple01;
Name:='btnEnviar';
Left:=314;
Top:=247;
Width:=100;
Height:=25;
ShowHint:=False;
Hint:='';
Enabled:=False;
Cursor:=crDefault;
Tag:=0;
Visible:=True;
Align:=alNone;
Caption:='Envia al Word';
Default:=True;
TabOrder:=1;
TabStop:=True;
Cancel:=False;
ModalResult:=mrNone;
OnClick:=@btnEnviarOnClick;
end;
btnClose:=TButton.Create(frmExemple01);
With btnClose do
begin
Parent:=frmExemple01;
Name:='btnClose';
Left:=420;
Top:=247;
Width:=100;
Height:=25;
ShowHint:=False;
Hint:='';
Enabled:=True;
Cursor:=crDefault;
Tag:=0;
Visible:=True;
Align:=alNone;
Caption:='Tanca';
Default:=False;
TabOrder:=2;
TabStop:=True;
Cancel:=False;
ModalResult:=mrCancel;
end;
gpbOpcionsText:=TGroupBox.Create(frmExemple01);
With gpbOpcionsText do
begin
Parent:=frmExemple01;
Name:='gpbOpcionsText';
Left:=339;
Top:=27;
Width:=181;
Height:=214;
ShowHint:=False;
Hint:='';
Enabled:=True;
Cursor:=crDefault;
Tag:=0;
Visible:=True;
Align:=alNone;
Caption:='Opcions del Text ';
TabOrder:=3;
TabStop:=False;
end;
lblTamanyCaption:=TLabel.Create(gpbOpcionsText);
With lblTamanyCaption do
begin
Parent:=gpbOpcionsText;
Name:='lblTamanyCaption';
Left:=16;
Top:=131;
Width:=98;
Height:=13;
ShowHint:=False;
Hint:='';
Enabled:=True;
Cursor:=crDefault;
Tag:=0;
Visible:=True;
Align:=alNone;
Alignment:=taLeftJustify;
Layout:=tlTop;
Caption:='Tamany de la lletra: ';
AutoSize:=True;
WordWrap:=False;
Transparent:=True;
end;
lblFont:=TLabel.Create(gpbOpcionsText);
With lblFont do
begin
Parent:=gpbOpcionsText;
Name:='lblFont';
Left:=16;
Top:=156;
Width:=74;
Height:=13;
ShowHint:=False;
Hint:='';
Enabled:=True;
Cursor:=crDefault;
Tag:=0;
Visible:=True;
Align:=alNone;
Alignment:=taLeftJustify;
Layout:=tlTop;
Caption:='Font a Utilitzar:';
AutoSize:=True;
WordWrap:=False;
Transparent:=True;
end;
chbNegreta:=TCheckBox.Create(gpbOpcionsText);
With chbNegreta do
begin
Parent:=gpbOpcionsText;
Name:='chbNegreta';
Left:=16;
Top:=24;
Width:=97;
Height:=17;
ShowHint:=False;
Hint:='';
Enabled:=True;
Cursor:=crDefault;
Tag:=0;
Visible:=True;
Align:=alNone;
Caption:='Usar negreta';
Checked:=False;
AllowGrayed:=False;
TabOrder:=0;
TabStop:=True;
Alignment:=taRightJustify;
State:=cbUnchecked;
end;
chbSubretllar:=TCheckBox.Create(gpbOpcionsText);
With chbSubretllar do
begin
Parent:=gpbOpcionsText;
Name:='chbSubretllar';
Left:=16;
Top:=47;
Width:=113;
Height:=17;
ShowHint:=False;
Hint:='';
Enabled:=True;
Cursor:=crDefault;
Tag:=0;
Visible:=True;
Align:=alNone;
Caption:='Subretllar el text';
Checked:=False;
AllowGrayed:=False;
TabOrder:=1;
TabStop:=True;
Alignment:=taRightJustify;
State:=cbUnchecked;
end;
chbCursiva:=TCheckBox.Create(gpbOpcionsText);
With chbCursiva do
begin
Parent:=gpbOpcionsText;
Name:='chbCursiva';
Left:=16;
Top:=70;
Width:=113;
Height:=17;
ShowHint:=False;
Hint:='';
Enabled:=True;
Cursor:=crDefault;
Tag:=0;
Visible:=True;
Align:=alNone;
Caption:='Posar en cursiva';
Checked:=False;
AllowGrayed:=False;
TabOrder:=2;
TabStop:=True;
Alignment:=taRightJustify;
State:=cbUnchecked;
end;
cmbCentrat:=TComboBox.Create(gpbOpcionsText);
With cmbCentrat do
begin
Parent:=gpbOpcionsText;
Name:='cmbCentrat';
Left:=16;
Top:=95;
Width:=153;
Height:=21;
ShowHint:=False;
Hint:='';
Enabled:=True;
Cursor:=crDefault;
Tag:=0;
Visible:=True;
Align:=alNone;
AddItemsOfcmbCentrat;
Text:='Posar el text a l''esquerra';
ItemIndex:=0;
TabOrder:=3;
TabStop:=True;
Style:=csDropDownList;
end;
edtTextSize:=TEdit.Create(gpbOpcionsText);
With edtTextSize do
begin
Parent:=gpbOpcionsText;
Name:='edtTextSize';
Left:=120;
Top:=128;
Width:=49;
Height:=21;
ShowHint:=False;
Hint:='';
Enabled:=True;
Cursor:=crDefault;
Tag:=0;
Visible:=True;
Align:=alNone;
Text:='12';
AutoSelect:=True;
AutoSize:=True;
MaxLength:=0;
PasswordChar:=#0;
ReadOnly:=False;
TabOrder:=4;
TabStop:=True;
CharCase:=ecNormal;
end;
cmbFont:=TComboBox.Create(gpbOpcionsText);
With cmbFont do
begin
Parent:=gpbOpcionsText;
Name:='cmbFont';
Left:=16;
Top:=175;
Width:=153;
Height:=21;
ShowHint:=False;
Hint:='';
Enabled:=True;
Cursor:=crDefault;
Tag:=0;
Visible:=True;
Align:=alNone;
Text:='Times New Roman';
ItemIndex:=-1;
TabOrder:=5;
TabStop:=True;
Style:=csDropDown;
OnKeyPress:=@cmbFontOnKeyPress;
end;
frmExemple01.ShowModal;
cmbFont.Free;
edtTextSize.Free;
cmbCentrat.Free;
chbCursiva.Free;
chbSubretllar.Free;
chbNegreta.Free;
lblFont.Free;
lblTamanyCaption.Free;
gpbOpcionsText.Free;
btnClose.Free;
btnEnviar.Free;
memWordText.Free;
lblInfo.Free;
lblDescripcio.Free;
frmExemple01.Free;
end;
begin
DisplayForm;
end.