RichEdit - Mehrere Probleme

  • Hi...

    Ich nutze die UDF von progandy
    1. Problem:
    RichEdits werden in jedem Tab erstellt, Beispiel:

    Spoiler anzeigen
    [autoit]

    #include <GUIRichEdit.au3>

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

    $hGUI = GUICreate("TEST", 500, 300)

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

    $hGUITabBar = GUICtrlCreateTab(0, 0, 500, 300)

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

    GUICtrlCreateTabItem("Bla1")
    $hGUIRichEdit = _GUICtrlRichEdit_Create($hGUI, 50, 50, 300, 180)
    GUICtrlCreateTabItem("Bla2")
    GUICtrlCreateTabItem("Bla3")

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

    GUISetState()

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

    While 1
    Sleep(5)
    Switch GUIGetMsg()
    Case -3
    Exit
    EndSwitch
    WEnd

    [/autoit]

    Ich will aber, dass die RichEdit nur für das erste Tab gilt. Warum wird sie für alle gemacht???

    2. Problem:
    Wie erstelle ich eine Richedit, die keinen horizontalen, sondern nur einen vertikalen Scrollbalken hat? So soll am Ende der Richedit, wenn der Text rüberlaufen würde, ein Zeilensprung gemacht werden. Das passende Ergebnis liefert der Style $ES_AUTOVSCROLL( 0x0040 ), allerdings gibt es dann auch keinen vertikalten Scrollbalken mehr.

    Einmal editiert, zuletzt von NoName (29. Juni 2009 um 01:15)

    • Offizieller Beitrag

    Ich will aber, dass die RichEdit nur für das erste Tab gilt. Warum wird sie für alle gemacht???


    :D Das Richeditcontrol wird überhaupt nicht auf dem Tab erstellt, sondern direkt auf der GUI.
    Du mußt halt abfragen, welches Tab aktiv ist und nur bei dem gewünschten, das Editcontrol einblenden.

    Das selbe Problem mit einem anderen Ctrl war hier: https://autoit.de/index.php?page…1331#post101331

  • Das habe ich mir auch gedacht, nur leider habe ich weder in der UDF eine geeignete Funktion gefunden noch mit GUICtrlSetState Erfolg gehabt...

  • Man braucht keine extra Funktion ;)
    ControlHide($h_RichEdit, "", "") und ControlShow($h_RichEdit, "", "") reichen aus.

  • Man braucht keine extra Funktion ;)
    ControlHide($h_RichEdit, "", "") und ControlShow($h_RichEdit, "", "") reichen aus.


    Alles klar danke =)

    Gibt es denn auch zu meinem zweiten Problem eine Lösung? Irgendwie müsste es ja gehen.

  • Das sollte BitOr($WS_VSCROLL, $WS_AUTOVSCROLL, $WS_BORDER ) sein ;)


    Wieso denn Windowstyles?^^
    Denn wenn ich die einfüge, öffnet der beim Klick auf einen Tab ein ChildWin mit der RichEdit drin.

  • Du kannst $WS_BORDER auch weglassen. Und da jedes Control ein Fenster ist, funktionieren die Standard-Windowstyles auch ;) $WS_VSCROLL zeigt die vertikale Scrollbar an. $WS_AUTOVSCROLList das gleiche wie $ES_AUTOVSCROLL und bedeutet, dass autmatisch gescrollt wird, wenn du am Ende des Anzeigebereichs bist ;)

  • 2 Probleme gibt es da nur =)
    1. $WS_AUTOVSCROLL gibt es nicht, also habe ich einfach $ES_AUTOVSCROLL genommen.
    2. $WS_VSCROLL, 0x00200000, Creates a window that has a vertical scroll bar.

    Also WS_VScroll bewirkt auch, dass ein neues Fenster geöffnet wird.

  • 2 Probleme gibt es da nur =)
    1. $WS_AUTOVSCROLL gibt es nicht, also habe ich einfach $ES_AUTOVSCROLL genommen.
    2. $WS_VSCROLL, 0x00200000, Creates a window that has a vertical scroll bar.

    Also WS_VScroll bewirkt auch, dass ein neues Fenster geöffnet wird.


    Zu 1. oh, das hab ich vergessen ;)
    zu 2.: nein, auch ein RichEdit ist ein Fenster und dieses bekommt scrollbars. Den Style hab ich genau so in den Standard-Styles drin...

  • Also, ich habe jetzt mal durchgetestet. Wemm ich nur $ES_AUTOvSCROLL als Style nehme, öffnet sich ein ChildWin, wenn ich nur $WS_VSCROLL nehmen, auch, und wenn ich beide zusammen nehme, dann auch ^^

    Probier mal dieses Beispiel aus:

    Spoiler anzeigen
    [autoit]

    #include <GUIRichEdit.au3>

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

    $hGUI = GUICreate("", 700)

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

    $hGUIRichEdit = _GUICtrlRichEdit_Create($hGUI, 165, 20, 500, 280,BitOR($ES_AUTOVSCROLL, $WS_VSCROLL))

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

    $hGUITabBar = GUICtrlCreateTab(165, 0, 500, 300)
    GUICtrlCreateTabItem("1")
    GUICtrlCreateTabItem("2")
    ControlHide($hGUIRichEdit, "", "")
    GUISetState()

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

    While 1
    Sleep(5)
    Switch GUIGetMsg()
    Case - 3
    Exit
    EndSwitch
    Switch GUICtrlRead($hGUITabBar)
    Case 0
    ControlHide($hGUIRichEdit, "", "")
    Case 1
    ControlShow($hGUIRichEdit, "", "")
    EndSwitch
    WEnd

    [/autoit]

    Wenn ich auf Tab 2 klicke, öffnet sich bei mir ein Child, indem die Richedit drin ist.

    2 Mal editiert, zuletzt von NoName (28. Juni 2009 um 18:32)

  • ;( hast du die UDF verändert? in der _GUICtrlRichEdit_Create müssen diese Zeilen genau so drin sein.

    [autoit]

    If $v_styles < 0 Or $v_styles = Default Then $v_styles = 1345343940
    $style = BitOR($WS_CHILD, $WS_VISIBLE, $ES_MULTILINE, $ES_WANTRETURN)
    $style = BitOR($style, $v_styles)
    If $v_exstyles <= -1 Or $v_exstyles = Default Then $v_exstyles = 0

    [/autoit]
  • Ahh, das gibts doch nicht, habe gestern aus Testzwecken da was verändert =D
    Danke für den Hinweis =)

    Geht jetzt auch bestens :rofl: