|
You last visited: Today at 20:12
Advertisement
GuiCtrlCreateEDIT und $ES_AUTOVSCROLL
Discussion on GuiCtrlCreateEDIT und $ES_AUTOVSCROLL within the AutoIt forum part of the Coders Den category.
07/30/2010, 15:24
|
#1
|
elite*gold: 0
Join Date: Jun 2008
Posts: 99
Received Thanks: 19
|
GuiCtrlCreateEDIT und $ES_AUTOVSCROLL
$ES_AUTOVSCROLL ist doch eigendlich die Möglichkeit einem EDIT zusagen: Wenn der Paltz zuende ist, scrolle automatisch weiter. Oder?
Denn er scrollt nicht automatisch wieder bis ans Ende des Edits.
Oder heißt dieser Style anders? Oder gibt es überhaupt einen Style dazu?
MfG WaYnE
|
|
|
07/30/2010, 16:59
|
#2
|
elite*gold: 0
Join Date: Mar 2010
Posts: 79
Received Thanks: 32
|
Automatically scrolls text up one page when the user presses the ENTER key on the last line. Erklärung von microsoft.
|
|
|
07/30/2010, 17:33
|
#3
|
elite*gold: 0
Join Date: Mar 2009
Posts: 7,260
Received Thanks: 33,147
|
Quote:
Originally Posted by oOWaYnEOo
Denn er scrollt nicht automatisch wieder bis ans Ende des Edits.
|
Was möchtest du damit sagen?
Das Editfeld scrollt automatisch weiter, dafür braucht man keine Zusätze.
PHP Code:
GUICreate("GUI", 170, 145) GUICtrlCreateEdit("", 10, 10, 150, 125) GUISetState() Do Sleep(10) Until GUIGetMsg() == -3
|
|
|
07/30/2010, 18:02
|
#4
|
elite*gold: 0
Join Date: Jun 2008
Posts: 99
Received Thanks: 19
|
PHP Code:
GUICtrlCreateEdit("", 373, 233, 185, 73,BitOR($ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_READONLY,$ES_WANTRETURN,$WS_VSCROLL), 0)
Dieses Edit scrollt nicht automatisch
|
|
|
07/30/2010, 18:37
|
#5
|
elite*gold: 0
Join Date: Mar 2009
Posts: 7,260
Received Thanks: 33,147
|
Dafür brauhcst du "$WS_HSCROLL" und "$WS_VSCROLL".
Durch "$ES_READONLY" werden deine Eingaben aber blockiert, deswegen scrollt nichts automatisch mit (wie auch?).
PHP Code:
#include <EditConstants.au3> #include <WindowsConstants.au3> Local $Text For $i = 0 To 100000 $Text &= $i ;sinnloser Text Next GUICreate("GUI", 170, 145) ;GUICtrlCreateEdit("", 10, 10, 150, 125) GUICtrlCreateEdit($Text, 10, 10, 150, 125, BitOR($WS_HSCROLL, $WS_VSCROLL, $ES_READONLY, $ES_WANTRETURN)) GUISetState() Do Sleep(10) Until GUIGetMsg() == -3
|
|
|
07/30/2010, 19:18
|
#6
|
elite*gold: 0
Join Date: Jun 2008
Posts: 99
Received Thanks: 19
|
Er scrollt doch garnicht automatisch...
Is das so schwer?
Der EDIT bekommt nacheinander neuen Input und dadurch wird es immer länger. Bis es dann zum ende des Feldes kommt. Dann soll immer der neueste Input ganz unten stehen.
Also AUTOMATISCH.
Im Moment geht er außerhalb des Edits und man kann MANUELL nach unten scrollen.
|
|
|
07/30/2010, 19:45
|
#7
|
elite*gold: 0
Join Date: Mar 2009
Posts: 2,317
Received Thanks: 1,254
|
PHP Code:
GUICtrlSetData($edit1, @CRLF & "blaablaa.bzw.dein$Input" &@CRLF& GUICtrlRead ($edit1))
so wird, das erste was in der input steht, immer ganz unten in der edit stehen, und die danach folgenden immer zwei zeilen drüber.
mit dem auto scroll hab ich nicht getestet,,,
|
|
|
07/30/2010, 21:11
|
#8
|
elite*gold: 0
Join Date: Jun 2008
Posts: 99
Received Thanks: 19
|
Ja das is mir klar. Ich will nur wissen wie man die EDITstyle so ändern kann, dass der letzte Eintrag immer ganz unten steht egal wieviel einträge es gibt und das alle Einträge noch da stehen
Mal ein Auszug:
PHP Code:
$ProgressEdit_UNCUT = GUICtrlCreateEdit("", 373, 233, 185, 73,BitOR($WS_HSCROLL, $WS_VSCROLL, $ES_READONLY, $ES_WANTRETURN), 0) GUICtrlSetFont(-1, 8, 400, 0, "Arial") [...] GUICtrlSetData($ProgressEdit_UNCUT,GUICtrlRead($ProgressEdit_UNCUT) & @CRLF & "Downloading Bleeding_GLB2_tar.troybin")
Damit wird jeder neue Eintrag unter die alten geschrieben. Nur wenn die Einträge das Ende erreichen, scrollt das EDIT nicht automatisch nach unten um wieder am neuesten Eintrag zu sein.
|
|
|
07/30/2010, 21:39
|
#9
|
elite*gold: 0
Join Date: Mar 2009
Posts: 7,260
Received Thanks: 33,147
|
Dann schreibe den neusten Eintrag immer oben und dein Problem ist gelöst.
Spätestens nachdem du "GUICtrlSetData" benutzt hast, ist wieder der erste Text sichtbar.
Würdest du das Edit jetzt scrollen lassen, würde es schlichtweg scheiße aussehen.
Hier mal ein Beispiel:
PHP Code:
#include <EditConstants.au3> #include <WindowsConstants.au3> Local $Text For $i = 0 To 1000 $Text &= $i & @CRLF Next $GUI = GUICreate("GUI", 570, 545) $Edit = GUICtrlCreateEdit($Text, 10, 10, 550, 525, BitOR($WS_HSCROLL, $WS_VSCROLL, $ES_READONLY, $ES_WANTRETURN)) GUISetState() For $i = 1001 To 1010 $Text = $i & @CRLF GUICtrlSetData($Edit, GUICtrlRead($Edit) & $Text) ControlClick($GUI, "", "[CLASS:Edit; INSTANCE:1]", "left", $i, 540, 495) Sleep(500) Next
Ist zwar nicht die beste Lösung, soll aber auch nur ein Beispiel sein.
|
|
|
07/30/2010, 22:07
|
#10
|
elite*gold: 0
Join Date: Jun 2008
Posts: 99
Received Thanks: 19
|
Scheiße?? Was is daran scheiße? Einfach der letzte Eintrag am eine und oben drüber immer die älteren und ganz oben der älteste. Was is daran bitte Scheiße, so is das bei allen Installationen und sowas.
|
|
|
07/31/2010, 09:54
|
#11
|
elite*gold: 116
Join Date: Oct 2007
Posts: 677
Received Thanks: 248
|
Hatte das Problem auch schon einmal
Ich habe das Problem so gelöst.
In der Schleife, in der er in mein Edit Field reingeschrieben hat, nach jedem schreiben diesen Code angefügt:
PHP Code:
_GUICtrlEdit_LineScroll($Edit, 0, _GUICtrlEdit_GetLineCount($Edit))
Also sprich:
PHP Code:
do _GUICtrlEdit_AppendText($Edit1, @CLRF&"Neue Zeile") _GUICtrlEdit_LineScroll($Edit1, 0, _GUICtrlEdit_GetLineCount($Edit)) $x=$x+1 until $x==5
So in etwa sieht es dann aus. Und mit dem AppendText hält sich der Code auch noch extra etwas kleiner
|
|
|
07/31/2010, 15:49
|
#12
|
elite*gold: 0
Join Date: Mar 2009
Posts: 7,260
Received Thanks: 33,147
|
Quote:
Originally Posted by oOWaYnEOo
Scheiße?? Was is daran scheiße? Einfach der letzte Eintrag am eine und oben drüber immer die älteren und ganz oben der älteste. Was is daran bitte Scheiße, so is das bei allen Installationen und sowas.
|
Noch nie ein Setup gesehen, bei dem irgendetwas automatisch gescrollt wird.
Naja, hier noch mal bassbananes Lösung in meinem Beispiel:
PHP Code:
#include <EditConstants.au3> #include <GuiEdit.au3> #include <WindowsConstants.au3> Local $Text For $i = 0 To 1000 $Text &= "Text " & $i & @CRLF Next $GUI = GUICreate("GUI", 570, 545) $Edit = GUICtrlCreateEdit($Text, 10, 10, 550, 525, BitOR($WS_HSCROLL, $WS_VSCROLL, $ES_READONLY)) GUISetState() For $i = 1001 To 1010 $Text = "Text " & $i & @CRLF _GUICtrlEdit_AppendText($Edit, $Text) _GUICtrlEdit_LineScroll($Edit, 0, _GUICtrlEdit_GetLineCount($Edit)) Sleep(500) Next
|
|
|
08/01/2010, 16:00
|
#13
|
elite*gold: 99
Join Date: May 2009
Posts: 1,020
Received Thanks: 400
|
Ihr denkt mal wieder alle in die falsche Richtung^^
Als erstes bei der editbox: GuiCtrlCreateEdit("Am Anfang steht jetz das" & @CRLF,8,8,200,300, BitOR($WS_VSCROLL,$ES_READONLY,$ES_AUTOVSCROLL))
Dann bei jedem stück wo was in die editbox dazu geschrieben werden soll:
GuiCtrlSetData($EditBox,"Das was dazu kommt" & @CRLF, True) Das True steht dafür, das der alte Text da bleibt, und der neue darunter geschrieben wird.
So, ist die EditBox ganz unten,s crollt sie von alleine weiter...
Der Mod und die anderen sind daran gescheitert, da die EditBox immer den Anfang des neu geposteten Texts anzeigt und WENN MÖGLICH auch den Schluss. Aber weil ihr ja immer alles neu rein schreiben lässt und nicht ein true (oder eine 1) rein setzt scrollt er nicht runter:
Zitat von dem Mod:
Readonly blockt die EditBox und daher scrollt es nicht automatisch runter
xDDD schon lange nicht mehr so gelacht. Was heist den readonly? das blockt doch nix auser das reinschreiben oder ersetzen des inhalts!!!!
Sie scrollt wegen dem oben genannten Grund nicht runter.
PS: Wieso HSCROLL? interessiert doch keinen was schräg passiert oder?
|
|
|
08/03/2010, 14:50
|
#14
|
elite*gold: 0
Join Date: Mar 2009
Posts: 7,260
Received Thanks: 33,147
|
Ach was... Ich habe das auf die manuelle Eingabe bezogen.
Wenn du lachen möchtest kannst du in deine Signatur gucken, fängt schon
damit an, dass man für einen Vergleich "==" benutzt und nicht "=" (so etwas
müssen AutoIt Benutzer ja nicht wissen).
Im übrigen ist das Beispiel von bassbanane besser, wenn du deine mit seiner
Methode vergleichst kommst du sogar auf die Idee wieso das so ist.
|
|
|
08/14/2010, 09:49
|
#15
|
elite*gold: 99
Join Date: May 2009
Posts: 1,020
Received Thanks: 400
|
Quote:
Originally Posted by KillerDeluxe
Ach was... Ich habe das auf die manuelle Eingabe bezogen.
Wenn du lachen möchtest kannst du in deine Signatur gucken, fängt schon
damit an, dass man für einen Vergleich "==" benutzt und nicht "=" (so etwas
müssen AutoIt Benutzer ja nicht wissen).
Im übrigen ist das Beispiel von bassbanane besser, wenn du deine mit seiner
Methode vergleichst kommst du sogar auf die Idee wieso das so ist.
|
Ne das von bassbanane ist nur umständlicher gelöst. Funktionieren tut beides. So und für Vergleiche nutzt man in älteren Autoit Versionen == aber in neueren wurde das eben abgekürzt damit man auch nur = schreiben kann.
PS: das hat hier mal jemand aus Fun gepostet und ich hab's in meine Sig. Gepackt.
Wenn du lieber umständliche Lösungen haben möchtest.... Gerne aber sag nich das meins falsch is ohne dich vorher zu informieren!
|
|
|
All times are GMT +2. The time now is 20:12.
|
|