Ver Mensaje Individual
  #3  
Antiguo 05-06-2008
Avatar de xEsk
[xEsk] xEsk is offline
Miembro Premium
 
Registrado: feb 2006
Posts: 454
Reputación: 19
xEsk Va por buen camino
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;

// Add Items to the cmbCentrat control
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;

// OnChange event fot memWordText control
procedure memWordTextOnChange(Sender: TObject);
begin
  btnEnviar.Enabled:=memWordText.Text <> '';
end;

// OnClick event fot btnEnviar control
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;

// OnKeyPress event fot cmbFont control
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 Control (TfrmExemple01)
  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 Control (TLabel)
  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 Control (TLabel)
  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 Control (TMemo)
  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 Control (TButton)
  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 Control (TButton)
  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 Control (TGroupBox)
  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 Control (TLabel)
  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 Control (TLabel)
  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 Control (TCheckBox)
  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 Control (TCheckBox)
  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 Control (TCheckBox)
  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 Control (TComboBox)
  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 Control (TEdit)
  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 Control (TComboBox)
  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;

  // display this new form
  frmExemple01.ShowModal;

  // Destroy controls
  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.
Responder Con Cita