Umsetzen Beispiele (z.B.Visual Basic) in AutoIt

  • Hallo Forum,
    hier habe ich wohl mal wieder eine 'Spezialanfrage'....

    Ich habe einige kleine Hilfsprogramme mit AutoIt erstellt, bei der eine Druckausgabe erfolgt. Jedoch ist AutoIt mit Druckersteuerung meines Wissens bisher nicht so gut ausgestattet, weshalb ich mir mit einer HTML-Vorlage mit Variablen behelfe und diese Datei einlese, Variablen mit Drucktext austausche und über den IE ausdrucke. Aber leider ist HTML so komisch dynamisch..... irgendwie ändert sich das Aussehen immer mal wieder (z.B. Spaltenbreiten) *grins*

    Jetzt habe ich den List + Label-Designer entdeckt (der allerdings viel Geld kostet) (Homepage). Aber u.U. ist das eine Problemlösung für mich und daher habe ich die Testversion installiert.

    Dort sind zwar eine Menge Programmierbeispiele beschrieben (siehe Anhang), da ich aber keine andere Sprache als AutoIt (und Basic aus den Anfängen) kenne, kann ich die schlecht umsetzen.

    Hat jemand schon Erfahrung mit dem Umsetzen von Beispielen aus anderen Sprachen? Ich kann gerne mal ein Beispiel hier plazieren.

    Vielen Dank
    Viele Grüsse
    Carsten

  • Da gibt es auch kostenlose Programme. Zwar nicht so tolle Grafik, aber COM-Objekt:
    z.B. http://www.dirfile.com/catchysoft_report_generator.htm
    Ein Beispiel:

    Spoiler anzeigen
    [autoit]

    $objReport = ObjCreate("Catchysoftreport.Report")
    $objReport.InitReport()
    $objReport.ReportName = "Simple Report"
    $objReport.ColumnName = "Column 1"
    $objReport.ColumnName = "Column 2"
    $objReport.ColumnName = "Column 3"
    $objReport.ColumnWidth = 20
    $objReport.ColumnWidth = 20
    $objReport.ColumnWidth = 60

    [/autoit] [autoit][/autoit] [autoit]

    $Sum = 0
    For $i=1 To 50
    $objReport.FieldText = $i
    $objReport.FieldText = "test"
    $objReport.FieldText = "10"
    $Sum = $Sum + 10
    Next

    [/autoit] [autoit][/autoit] [autoit]

    $objReport.Summary = ""
    $objReport.Summary = "Sum"
    $objReport.Summary = $Sum

    [/autoit] [autoit][/autoit] [autoit]

    $objReport.PrintPreview()

    [/autoit]
  • Vielen Dank für die Antworten

    peethebee
    Die Umsetzung mit XML entspricht wohl meiner Technik mit HTML oder wie früher schon mal mit RTF. (Vorlage erstellen, Variablen definieren, Einlesen, Variablen tauschen, drucken).
    Das funktioniert zwar sehr gut, aber die Erstellung und Pflege ist sehr aufwändig. Daher für mich kein Thema mehr.

    @progandy 
    Tolle Lösung, wenn jemand einfach nur einen einfachen LISTENausdruck braucht: UNBEDINGT ANSCHAUEN (Nachteil: zusätzliche Programminstallation nötig, Vorteil: schnell + einfach, Vorschauansicht).

    Für meinen Fall fehlen allerdings Grafikeinbindung und größere Kopfgestaltungen. Da bin ich mit meiner HTML-Technik flexibler. Aber ich habe dort auch das Programm 'Fast Report' gefunden. Mit dem würde es toll funktionieren, aber ich bekomme den Aufruf von AutoIt nicht hin. (Fast Report schein ähnlich wie List + Label zu sein, aber günstiger).

    FRAGE:
    =====
    Ich habe mit dem List+Label-Support gesprochen, wegen Aufruf über AutoIt. Der meinte die DLL ist eine normale windows-DLL und keine COM-Technik und muss deshalb nicht registriert werden. Was heißt das?
    Kann ich auf den Befehl '$objReport = ObjCreate("xxx")' verzichten?

    Er meinte wenn ich COM-Programmierung brauche, sollte ich es über Active-X machen (cmll120.ocx). Wie kann ich denn diese einbinden? Gibt es irgendwo Beispiele? Ich finde aber in der ganzen List+Label-Anleitung keinen Objektnamen, den ich verwenden kann, wie z.B. hier:
    - $oRP = ObjCreate("RICHTEXT.RichtextCtrl.1")
    - $oWMP = ObjCreate("WMPlayer.OCX" )
    - $objReport = ObjCreate("Catchysoftreport.Report")

    Aber ohne geht es doch nicht, oder?

    Vielen Dank
    viele Grüße
    Carsten

  • Ich komme hier leider nicht weiter...... ich denke mir fehlt einfach der Hintergrund von DLL bzw. OCX.
    Aber noch gebe ich nicht auf......

    Ich habe also die Möglichkeit auf 2 Module zuzugreifen:
    1) Haupt-DLL = cmll12.dll
    2) Haupt-OCX = cmll12o.ocx
    Der Unterschied ist mir nicht klar (und auch egal - es muss halt mit AutoIt funktionieren *grins*)

    Die OCX-Datei habe ich (wie schön in der engl. Anleitung von AutoIt beschrieben) im OLE/COM Object Viewer gefunden (siehe Anlage 1). Nur die wichtige Variable 'VersionIndependentProgID' ist da nicht drin. Ist da schon das Problem???? (Mit der ProgID geht es zwar auch (siehe Spoiler), aber beim nächsten Befehl kommt der Fehler 'The requested action with this object has failed')

    FRAGE 1:
    Wie kann ich denn jetzt die dll benutzen? Mit 'DllCall' kann ich ja nur eine begrenzte Anzahl übergeben aber nicht die ganzen Befehle verwenden.
    (Siehe Anlage 2 bzgl. weiterer Infos der DLL)

    FRAGE 2:
    Findet jemand einen Fehler oder einen Hinweis in meiner Umsetzung?

    Spoiler anzeigen


    Beispiel aus Handbuch:
    ****************************
    HLLJOB hJob;

    hJob = LlJobOpen(CMBTLANG_GERMAN);
    LlDefineVariableStart(hJob) ;
    LlDefineVariable(hJob, "Name", "Normalverbraucher");
    LlDefineVariable(hJob, "Vorname", "Otto");

    <... etc ...>

    LlJobClose(hJob);

    Meine Umsetzung
    *******************************
    $objReport = ObjCreate("L12.List-Label12_ctrl_32.1")
    $hJob = $objReport.LlJobOpen("CMBTLANG_GERMAN")

    $objReport.LlDefineVariableStart($hJob)
    $objReport.LlDefineVariable($hJob, "Name", "Normalverbraucher")
    $objReport.LlDefineVariable($hJob, "Vorname", "Otto")

    ;<... etc ...>
    $objReport.LlJobClose($hJob)

    Vielen Dank
    viele Grüße