![]() |
Anzeige:
|
|
|||||||
| XProfan Alles rund um die Programmiersprache XProfan. |
|
![]() |
|
|
LinkBack | Themen-Optionen | Ansicht |
|
|
#1 (Direktlink) |
|
Ist öfter hier
![]() Registriert seit: 20.02.2009
Alter: 39
Beiträge: 71
|
Hallo alle zusammen!
Ich lasse mir einen Text in einem Multi-Edit anzeigen. Der Text nimmt dabei aber immer weiter zu, so dass ein Scrollbalken entsteht. Leider bleibt der Text am Anfang vom Multi-Edit stehen, sprich es wird nicht automatisch mit gescrollt. Was für Möglichkeiten habe ich den Text mit scrollen zu lassen, bzw. mir immer die letzte Zeile im Multi-Edit anzeigen zu lassen? Danke im Voraus LG Jens |
|
|
|
|
|
|
#2 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.094
|
Müsste mit der Message EM_SCROLLCARET und/oder EM_SETSEL gehen.
__________________
Gruß, Frank ![]() Webpage http://frabbing.bplaced.net mit Freeware - Tools, Spiele und Grafiken. |
|
|
|
|
|
#3 (Direktlink) | |
|
Ist öfter hier
![]() Registriert seit: 20.02.2009
Alter: 39
Beiträge: 71
|
Hallo Frank!
Zitat:
Gibt es noch eine andere Möglichkeit? Es muss auch nicht unbedingt eine Multi-Edit Feld sein. Die neuen Daten füge ich mit "Settext hMulti&,GetText$(hMulti&)+TmpDaten$" ein... LG Jens |
|
|
|
|
|
|
#4 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.094
|
Auf die Schnelle, probier mal SendMessage(hMulti&,$00B7,0,0). Das ist EM_SCROLLCARET. Für EM_SETSEL musst du bei beiden Parametern die Anzahl Zeichen -1 im Multiedit eingeben, also erst die Textlänge ermitteln.
__________________
Gruß, Frank ![]() Webpage http://frabbing.bplaced.net mit Freeware - Tools, Spiele und Grafiken. |
|
|
|
|
|
#5 (Direktlink) |
|
Forenmaskottchen
![]() Registriert seit: 09.02.2009
Ort: Bangkok
Beiträge: 686
|
Das müsste funktionieren zum scrollen
SendMessage(edit&,~EM_SCROLL,~SB_LINEUP,0) und das sollte immer ans Ende des edits springen Code:
$H Messages.ph
Proc goLastRow
Parameters Handle&
SendMessage(handle&, ~EM_LINESCROLL, 0, ~EM_GETLINECOUNT)
'SendMessage(handle&, ~EM_SETSEL, -1, 0) braucht man nur falls etwas markiert ist
EndProc
cls
var Edit& = @Create("Multiedit", %Hwnd, "", 10, 10, 300,400)
WhileLoop 100
SetText Edit&, GetText$(Edit&) + Str$(&Loop) + Chr$(13) + Chr$(10)
EndWhile
goLastRow(edit&)
waitinput
__________________
Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai. http://dieterzornow.gmxhome.de Geändert von Bangkok (23.04.2010 um 07:22 Uhr) |
|
|
|
|
|
|
#6 (Direktlink) |
|
Ist öfter hier
![]() Registriert seit: 20.02.2009
Alter: 39
Beiträge: 71
|
Hallo!
Die Messages: SendMessage(hMulti&,$00B7,0,0) SendMessage(edit&,~EM_SCROLL,~SB_LINEUP,0) funktionieren nicht. Die Message: SendMessage(handle&, ~EM_LINESCROLL, 0, ~EM_GETLINECOUNT) funktionier wunderbar. Meine Routine zum auslesen der COM-Schnittstelle sieht nun so aus: Code:
Proc RS232_empfangen Var TmpDaten$ = "" ' Neue Daten für Multi-Edit-Feld Var TmpPuffer$ = "Müll" ' RS232 Puffer - Vorladen wegen While-Schleife ' RS232 einlesen WhileNot TmpPuffer$ = "" ' Byte für Byte einlesen, bis RS232 Puffer leer ist TmpPuffer$ = ReadCom$(hRS232&,1) ' ein Byte aus RS232 Puffer einlesen ComError(hRS232&) ' auftretende RS232 Fehler reseten CaseNot TmpPuffer$ = "" : TmpDaten$ = TmpDaten$+TmpPuffer$ ' wenn Daten vorhanden, dann abspeichern EndWhile ' Neue Daten in Multi-Edit schreiben IfNot TmpDaten$ = "" ' Wenn Daten vorhanden, dann... Settext hMulti&,GetText$(hMulti&)+TmpDaten$ ' Daten in Multi-Edit-Feld schreiben SendMessage(hMulti&, ~EM_LINESCROLL, 0, ~EM_GETLINECOUNT) ' Scrollt zum Ende vom Multi-Edit-Feld EndIf EndProc ![]() LG Jens |
|
|
|
|
|
#7 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.094
|
Schön, dass es jetzt funktioniert.
Bei EM_LINESCROLL solltest du den letzten Parameter auf -1 setzen. Den Wert, den du benutzt, ist nur die Message-Konstante 186. Hat dein Edit mal mehr Zeilen, wird es sonst wieder Probleme geben. SendMessage(hMulti&,$00B7,-1,-1) müsste aber auch funktionieren. Bei Messages einfach mal näher in der Win32.hlp oder bei MSDN nachlesen. Steht eigentlich alles dort nachzulesen.
__________________
Gruß, Frank ![]() Webpage http://frabbing.bplaced.net mit Freeware - Tools, Spiele und Grafiken. |
|
|
|
|
|
#8 (Direktlink) |
|
Forenmaskottchen
![]() Registriert seit: 09.02.2009
Ort: Bangkok
Beiträge: 686
|
Bei EM_LINESCROLL steht aber nichts von -1, ich habe nichts gefunden lParam ist die Anzahl der Zeilen die vertikal gescrollt werden und ist das mehr als die Gesamtanzahl wird der letzte Eintrag hochgescrollt.
EM_LINESCROLL Message (Windows)
__________________
Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai. http://dieterzornow.gmxhome.de |
|
|
|
|
|
#9 (Direktlink) | |
|
Super-Moderator
![]() Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.094
|
Zitat:
__________________
Gruß, Frank ![]() Webpage http://frabbing.bplaced.net mit Freeware - Tools, Spiele und Grafiken. |
|
|
|
|
|
|
#10 (Direktlink) |
|
Forenmaskottchen
![]() Registriert seit: 09.02.2009
Ort: Bangkok
Beiträge: 686
|
@Hallo1001
Bei der Message SendMessage(edit&,~EM_SCROLL,~SB_LINEUP,0) muss es natürlich auch SB_LINEDOWN heißen, dann wird eine Zeile abwärts gescrollt. Sorry habe mir den Fuß verstaucht und wahrscheinlich zu viele Tabletten genommen
__________________
Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai. http://dieterzornow.gmxhome.de |
|
|
|
|
|
|
#11 (Direktlink) | |
|
Ist öfter hier
![]() Registriert seit: 20.02.2009
Alter: 39
Beiträge: 71
|
Hallo!
Die Messages: SendMessage(hMulti&,~EM_LINESCROLL,0,-1) SendMessage(hMulti&,$00B7,-1,-1) funktionieren nicht... Zitat:
LG Jens |
|
|
|
|
|
|
#12 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.094
|
Kann sein, dass nur 16-Bit Werte zulässig sind. Ist bei manchen API irgendwie noch so. in dem Fall probier mal $FFFE, oder wenn das nicht geht $777f. Das sollte aber sicher funktionieren. Feste Zahlen sind natürlich ok. Wenn dein Multiedit nie über 1000 Zeilen haben wird, kannst du auch 1000 einsetzen.
Hab die Sachen jetzt leider nicht testen können.
__________________
Gruß, Frank ![]() Webpage http://frabbing.bplaced.net mit Freeware - Tools, Spiele und Grafiken. |
|
|
|
|
|
#13 (Direktlink) |
|
Ist öfter hier
![]() Registriert seit: 20.02.2009
Alter: 39
Beiträge: 71
|
SendMessage(hMulti&,~EM_SCROLL,~SB_LINEDOWN,0) funktioniert auch nicht...
|
|
|
|
|
|
#14 (Direktlink) |
|
Forenmaskottchen
![]() Registriert seit: 09.02.2009
Ort: Bangkok
Beiträge: 686
|
Heute ist nicht mein Tag, richtig ist
SendMessage(handle&, ~EM_LINESCROLL, 0, SendMessage(handle&, ~EM_GETLINECOUNT, 0, 0)) dann springts immer zur letzten Zeile
__________________
Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai. http://dieterzornow.gmxhome.de |
|
|
|
|
|
#15 (Direktlink) |
|
Ist öfter hier
![]() Registriert seit: 20.02.2009
Alter: 39
Beiträge: 71
|
SendMessage(hMulti&,~EM_LINESCROLL,0,$777f)
SendMessage(hMulti&,~EM_LINESCROLL,0,$FFFE) Funktionieren beide... |
|
|
|
|
![]() |
|
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
|
|
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| multi-monitor-graka-frage | remon | Hardware - Kaufempfehlungen | 7 | 30.07.2009 11:00 |
| Cool Edit Pro | Attica | Software - Allgemein | 2 | 19.08.2007 17:24 |
| Edit Funktion | Abby | über das Forum | 13 | 19.07.2006 15:01 |
| Edit ID3 Tag, wie? | marioooosooo | Allgemein | 3 | 09.10.2005 20:07 |
| Reg Edit macht nichts | oggy | Office-Anwendungen | 5 | 22.03.2004 15:23 |