Pixel und Buchstaben

  • Hallo
    ich hab mal wieder ein kleines Problem:
    Ich möchte in einem Fenster einen Text(GUICtrlCreateLabel) mittig ausgeben´, wobei ein Teil des Textes variabel ist.
    Nun ist ja ein Buchstabe nicht gleich ein Pixel, wie macht man so etwas?

    Spoiler anzeigen
    [autoit]


    #include <date.au3>
    #include <GUIConstants.au3>
    #include <StaticConstants.au3>
    Opt('MustDeclareVars', 1)
    Dim $cLine, $title, $cLstart, $guiwidth
    ;$cLine = $CmdLine[1]
    $cLine = "notepad.exe"
    $title = "test"
    $guiwidth = 250
    ;$cLstart = (250 - StringLen($cLine & " is running!")) / 2
    GUICreate($title, $guiwidth, 100)
    GUICtrlCreateLabel("Start: " & _Now(), 60, 30)
    ;GUICtrlCreateLabel($cLine & " is running!", $cLstart, 50)
    GUICtrlCreateLabel($cLine & " is running!",0,50,$guiwidth,200,$SS_CENTER)
    GUISetState(@SW_SHOW)

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

    While 1
    If ProcessExists($cLine) Then
    WinActivate($title)
    Else
    ExitLoop
    EndIf
    Sleep(500)
    WEnd

    [/autoit]


    Danke im Vorraus und Gruß
    EDIT: Lösung eingebaut, so geht es.

    Einmal editiert, zuletzt von energy98 (14. Juli 2009 um 13:09)

  • vielleicht hilft Dir ein Beispiel...???

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <StaticConstants.au3>
    $guiwidth = 400
    GUICreate('TestGui',$guiwidth)
    $label = GUICtrlCreateLabel("Dies ist ein zentriertes Label, das sich selber auflöst :-)",0,100,$guiwidth,200,$SS_CENTER)
    GUISetState()
    AdlibEnable("setdata",100)
    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    Exit
    EndSelect
    WEnd

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

    Func setdata()
    Local $data = guictrlread($label)
    If $data = "" Then AdlibDisable()
    GUICtrlSetData($label, StringTrimRight(StringTrimLeft($data,1),1))
    EndFunc

    [/autoit]

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    über mich...

    ich habe meine Erfahrungen hauptsächlich gesammelt in (grobe Übersicht):

    - RibbonBar Automation
    - MySQL Nutzung
    - GUIs in vielerlei Ausprägung
    - Nutzung von Powershell / Batch in AutoIt
    - Windows Automatisierung

    außerhalb von AutoIt:

    - Sprachen: PS, Batch, php, html(5), javascript, (perl eingeschränkt), vbs
    - Powershell (AD, WPF inkl. Multi-Threading, ...)
    - Deployment-Automatisierung ohne SCCM
    - Office-Nutzung mit COM-Object (AutoIt, PowerShell)
    - ActiveDirectory und alles was damit zusammenhängt
    - Hyper-V Clustering (Converged / Hyper Converged)
    - Serverhardware (Konfiguration, Aufbau, Architektur, Betrieb)

    Lieblingsthema:

    günstige Automatisierung von Vorgängen, für die andere Firmen viel Geld nehmen

    more to come ...

  • Vielen Dank, hat super geholfen.

    BTW:
    Wozu setzt man ADLIB ein, als paralellen Task?
    In der Hilfe steht ja nicht so viel dazu ...

    Einmal editiert, zuletzt von energy98 (14. Juli 2009 um 13:10)

  • [autoit]

    #include <Misc.au3>
    global $dll = DllOpen("user32.dll")
    Global $iCounter = 10

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

    AdlibEnable('_Countdown', 1000)
    While True
    if _IsPressed("6b", $dll) then MsgBox(1, "", $iCounter)
    If $iCounter <= 0 Then ; wenn der Counter Null erreicht hat, dann...
    AdlibDisable() ; die zeitgesteuerte Funktion beenden
    $iCounter = 1 ; den Counter auf 1 setzen, damit diese If...Then-Anweisung nur einmal ausgeführt wird
    MsgBox(0, 'Countdown-Timer', 'Zeit um!') ; Eine Meldung ausgeben
    exit
    EndIf
    WEnd

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

    Func _Countdown()
    $iCounter -= 1 ; den Counterwert um 1 verringern
    EndFunc ;==>_Countdown

    [/autoit]


    Ein einfaches Beispiel sagt mehr als lange Erklärungen.