Sich selbst erweiterndes Input

  • Hi,

    aus aktuellem Anlass (laut Shoutbox (ausser ich habs falsch interpretiert, egal! :D)):

    Spoiler anzeigen
    [autoit]

    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

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

    dim $start_size = 20, $resize, $resize_old

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 633, 80, 192, 114)
    $Input1 = GUICtrlCreateInput("Input1", 16, 24, $start_size, 21)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch

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

    $resize = StringLen(GUICtrlRead($Input1)) * 6

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

    if $resize_old <> $resize then
    GUICtrlSetPos($Input1, 16, 24, $resize + $start_size, 21)
    $resize_old = $resize
    EndIf

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

    WEnd

    [/autoit]

    Funktioniert ganz gut, denk ich. Lässt sich sicherlich auch auf andere Controls ausweiten :)

    Gruß
    x0r

    Simon nörgelt, Simon nervt - aber Simon verbessert die Welt. Glaubt er.

  • Setze ich eine andere Schriftart ein, oder eine andere Schriftgröße funktioniert dies nicht mehr. Ich nehme auch gerne andere Fonts, die Standardschrift finde ich blöd :D

    //Hihi, Beitrag 444

  • Setze ich eine andere Schriftart ein, oder eine andere Schriftgröße funktioniert dies nicht mehr. Ich nehme auch gerne andere Fonts, die Standardschrift finde ich blöd :D

    //Hihi, Beitrag 444

    Warum funzt es dann nicht mehr?

  • minx du hattest doch mal ein script geschrieben wo man die länge eines strings voher "brechnen" kann oder irr ich mich?^^

    Sind TV-Quizfragen zu einfach? A) Ja B) Harry Potter

    Spoiler anzeigen

    Ich gebe zu dieser Post hat wahrscheinlich nicht viel geholfen,
    aber ich versuche wenigstens zu helfen :rolleyes:

  • was weiss ich, bei mir gehts:

    Spoiler anzeigen
    [autoit]

    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

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

    dim $start_size = 11
    dim $font = "Arial"

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

    dim $resize, $resize_old

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 633, 80, 192, 114)
    $Input1 = GUICtrlCreateInput("Input1", 16, 24, $start_size, 21)
    GUICtrlSetFont(-1, 9, 400, 0, $font)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch

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

    $resize = StringLen(GUICtrlRead($Input1)) * 6

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

    if $resize_old <> $resize then
    GUICtrlSetPos($Input1, 16, 24, $resize + $start_size, 21)
    $resize_old = $resize
    EndIf
    WEnd

    [/autoit]

    Eine Zeile angepasst, die Zahl um 1 erhöht (so genau kannst das eh nicht machen, da die Buchstaben unterschiedliche Breite haben (es sei denn, du fragst jeden vorher ab).

    Simon nörgelt, Simon nervt - aber Simon verbessert die Welt. Glaubt er.

  • Warum funzt es dann nicht mehr?

    Vielleicht weil Schriftgröße 20 größer ist als 8 und andere Schriftarten andere Breiten haben :huh:

    Zitat

    minx du hattest doch mal ein script geschrieben wo man die länge eines strings voher "brechnen" kann oder irr ich mich?^^

    Das funktioniert auch nur mit der Standardfont.

    Zitat

    was weiss ich, bei mir gehts:

    Das kann gar nicht sein :P. Ganz eifnach kannst du das testen:

    Spoiler anzeigen
    [autoit]

    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

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

    dim $start_size = 11
    dim $font = "Utsaah"

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

    dim $resize, $resize_old

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 633, 80, 192, 114)
    $Input1 = GUICtrlCreateInput("Input1", 16, 24, $start_size, 21)
    GUICtrlSetFont(-1, 14, 400, 0, $font)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch

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

    $resize = StringLen(GUICtrlRead($Input1)) * 6

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

    if $resize_old <> $resize then
    GUICtrlSetPos($Input1, 16, 24, $resize + $start_size, 21)
    $resize_old = $resize
    EndIf
    WEnd

    [/autoit]
  • dann vergrößert man das control eben nach unten? 8|

    Schriftgröße 14, Font Utsaah:
    [Blockierte Grafik: http://s14.directupload.net/images/121213/gy3gmhry.png]

    Das passiert mit allen Schriftarten, die nicht auf Standard sind. Sie haben halt eine andere Breite, da kann man auch gleich die Größe selbst eingeben, da dein Skript dann viel zu viel bzw. viel zu wenig Platz macht.

    Dann doch gleich Bugs Textmeter, das funzt auch für Inputs.
    Deins ist zwar ne nette Idee, aber völlig unpraktibel :thumbup:

  • was glaubst du, warum ich die platz-zahl direkt oben in ne variable gepackt hab? :)

    du darfst die gern auch z.b. in ne ini auslagern oder mit ins gui aufnehmen, als live definierten wert.

    Simon nörgelt, Simon nervt - aber Simon verbessert die Welt. Glaubt er.

  • Also ich habe jetzt alle Platzzahlen von 0 bis 25 durch. Keine passt. Aber ist ja auch egal ^^

    Du kannst ja Bugs Textmeter mal umbauen und dann bei dir einbauen. Dann hast du ein seich selbst vergrößerndes Input, das perfekt geht :thumbup:

  • die alternative wäre (und die gefällt mir besser ;)):

    jeder baut das für sich um und fügt das dann evtl ins forum ein - ich brauchs nämlich eigentlich nicht, war nur sone kurze idee :D

    Simon nörgelt, Simon nervt - aber Simon verbessert die Welt. Glaubt er.

  • wie vorher schon geschrieben, sind die buchstaben nie gleich breit, von daher ändert es sich bei "j" zu lang und bei "O" zu kurz..

    du müsstest - um das zu beheben - eine buchstabenprüfung einbauen - aber auch das hatte ich bereits erwähnt..

    ...und ich hasse es, mich zu wiederholen :whistling:

    €dit:

    Zitat

    [...] (so genau kannst das eh nicht machen, da die Buchstaben unterschiedliche Breite haben (es sei denn, du fragst jeden vorher ab).

    Steht in Post Nummer 7 :D

    Simon nörgelt, Simon nervt - aber Simon verbessert die Welt. Glaubt er.