Вернулся к старой идее - автонумерации строк. Один код заработал сразу:
If OpenWindow(0,0,0,500,250,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_MinimizeGadget)
StringGadget(1,10,10,480,230,"Testzeile", #ES_MULTILINE | #ES_AUTOVSCROLL|#WS_VSCROLL|#ESB_DISABLE_LEFT|#ESB_DISABLE_RIGHT)
t$=""
ReadFile(0,"stihi.txt")
While Not Eof(0)
t$=t$+ReadString(0,#PB_UTF8)+#CRLF$
Wend
SetGadgetText(1,t$)
CloseFile(0)
;number todo check empty string
t$=GetGadgetText(1)
li=CountString(t$,#CRLF$)
t$=InsertString(t$,"1.",1)
n=2
i=0
;ShowMemoryViewer(@t$,1024)
While i<Len(t$)
;Debug "-"+Mid(t$,i,2)+"-"
If Mid(t$,i,2)=#CRLF$
i+2
t$=InsertString(t$,Str(n)+".",i)
;Debug t$
n+1
;i+4
;End
EndIf
i+1
Wend
;Debug t$
SetGadgetText(1,t$)
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
StringGadget(1,10,10,480,230,"Testzeile", #ES_MULTILINE | #ES_AUTOVSCROLL|#WS_VSCROLL|#ESB_DISABLE_LEFT|#ESB_DISABLE_RIGHT)
t$=""
ReadFile(0,"stihi.txt")
While Not Eof(0)
t$=t$+ReadString(0,#PB_UTF8)+#CRLF$
Wend
SetGadgetText(1,t$)
CloseFile(0)
;number todo check empty string
t$=GetGadgetText(1)
li=CountString(t$,#CRLF$)
t$=InsertString(t$,"1.",1)
n=2
i=0
;ShowMemoryViewer(@t$,1024)
While i<Len(t$)
;Debug "-"+Mid(t$,i,2)+"-"
If Mid(t$,i,2)=#CRLF$
i+2
t$=InsertString(t$,Str(n)+".",i)
;Debug t$
n+1
;i+4
;End
EndIf
i+1
Wend
;Debug t$
SetGadgetText(1,t$)
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
А теперь захотелось попробовать нумерацию с использованием сообщений для многострочного Edit text control, но заработало не сразу:
t$=GetGadgetText(#f)
ln=SendMessage_(he,#EM_GETLINECOUNT,0,0)
;SendMessage_(he,#EM_SETSEL,0,Len(t$)) не работает
;SendMessage_(he,#EM_SETSEL,1,20)
For i=0 To ln-1
of=SendMessage_(he,#EM_LINEINDEX,i,0)
;Debug of
SendMessage_(he,#EM_SETSEL,of,of)
n$=Str(i+1)+"."
SendMessage_(he,#EM_REPLACESEL,1,n$)
Next i
ln=SendMessage_(he,#EM_GETLINECOUNT,0,0)
;SendMessage_(he,#EM_SETSEL,0,Len(t$)) не работает
;SendMessage_(he,#EM_SETSEL,1,20)
For i=0 To ln-1
of=SendMessage_(he,#EM_LINEINDEX,i,0)
;Debug of
SendMessage_(he,#EM_SETSEL,of,of)
n$=Str(i+1)+"."
SendMessage_(he,#EM_REPLACESEL,1,n$)
Next i
#f - это и есть тот гаджет. Но проблему удалось решить, причину странного поведения я так и не выяснил. Через пару дней допишу прогу до конца.
Дополнение. версия 0.1
Комментарии
Отправить комментарий