Hallo zusammen,
gibt es eine Möglichkeit, Scrollbalken in zB einem Edit-Feld nur anzeigen zu lassen, sobald das Fenster zu klein wird?
Hallo zusammen,
gibt es eine Möglichkeit, Scrollbalken in zB einem Edit-Feld nur anzeigen zu lassen, sobald das Fenster zu klein wird?
ich versteh nicht ganz was du meinst
wenn ich ein edit-ctrl erstelle, habe ich ausgeraut einen horizontlen und vertikalen balken. sobald ich nun mehr schreibe, als im editfeld horitontal oder vertikal angezeigt werden kann, werden die balken aktiv und ich kann nach links/rechts und/oder oben/unten scrollen, auch mit der maus.
wenn ich $WS_VSCROLL, $WS_HSCROLL als style weglasse, erscheinen die balken nicht mehr, auch nicht, wenn ich wieder über das editfeld hinaus schreibe und man kann nicht mit der maus scrollen.
ich möchte das die balken erst nicht angezeigt werden, es sei denn, der text im feld geht über die grenzen.
hoffe das ist verständlichen =)
Schonmal nen Ansatz:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>
#include <GUIEdit.au3>
#include <StaticConstants.au3>
Local $myedit, $msg
[/autoit] [autoit][/autoit] [autoit]GUICreate("My GUI edit", -1, -1, 100, 100, $WS_SIZEBOX) ; will create a dialog box that when displayed is centered
[/autoit] [autoit][/autoit] [autoit]$Lines = GUICtrlCreateEdit(StringReplace("1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22",",",@CRLF), 10, 10, 30, 300,$ES_READONLY)
GUICtrlSetState(-1,$GUI_DISABLE)
GUICtrlSetResizing ($Lines, $GUI_DOCKWIDTH + $GUI_DOCKLEFT)
$myedit = GUICtrlCreateEdit("First line" & @CRLF, 40, 10, 300, 300,$ES_AUTOVSCROLL)
GUICtrlSetResizing ($myedit, $GUI_DOCKLEFT + $GUI_DOCKRIGHT)
GUIRegisterMsg($WM_COMMAND,"MY_WM_COMMAND")
GUISetState()
[/autoit] [autoit][/autoit] [autoit]Send("{END}")
[/autoit] [autoit][/autoit] [autoit]While 1
$msg = GUIGetMsg()
If $msg = $GUI_EVENT_CLOSE Then ExitLoop
WEnd
GUIDelete()
Func MY_WM_COMMAND($hWnd, $uMsg, $wParam, $lParam)
Local $nID = BitAND($wParam,0xFFFF)
Local $nNotification = BitShift($wParam,16)
If $nNotification = $EN_VSCROLL And $nID = $myedit Then
Local $Zahlen
For $i = 1 To _GUICtrlEdit_GetLineCount($lParam)
$Zahlen &= $i & @CRLF
Next
GUICtrlSetData($Lines,$Zahlen)
If $i > 22 Then
GuiCtrlSetStyle($myEdit,$WS_VSCROLL)
Else
GuiCtrlSetStyle($myEdit,$ES_AUTOVSCROLL)
EndIf
_GUICtrlEdit_LineScroll($Lines, 0, _GUICtrlEdit_GetFirstVisibleLine($lParam))
EndIf
Return $GUI_RUNDEFMSG
EndFunc
hmm sorry, ich glaub wir verstehen uns immer noch nicht *g*
die normale funktionalität der edit box ist iO.
ich würde die box gerne so erstellen
[autoit]GUICtrlCreateEdit("", 0, 200, $w, $h - 200, BitOR($ES_WANTRETURN, $ES_AUTOVSCROLL, $ES_AUTOHSCROLL))
[/autoit]also ohne $WS_VSCROLL, $WS_HSCROLL.
wenn nun aber viel text in der box steht, sollen die leisten doch angezeigt werden.
ok, ich hab mal ne ganz einfach lösung =)
[autoit]$gui = GUICreate("", $w, $h, $x, $y, BitOR($WS_POPUP, $WS_POPUPWINDOW, $WS_SIZEBOX, $WS_THICKFRAME), $WS_EX_TOOLWINDOW)
$edit = GUICtrlCreateEdit("", 0, 200, $w + 20, $h - 180, BitOR($ES_WANTRETURN, $ES_AUTOVSCROLL, $ES_AUTOHSCROLL, $WS_VSCROLL, $WS_HSCROLL))
GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKRIGHT + $GUI_DOCKBOTTOM + $GUI_DOCKHCENTER)
ich erstelle das edit fenster einfach in der größe + 20 mehr als das fenster, somit werden die balken nicht angezeigt, sind aber da und damit auch das mausrad nutzbar =)
so einfach gehts *g*