Deutsch
XProfEd - Opensource IDE

Allgemeine Editor Klassenfrage.

 

GDL
@ Hallo Roland,

Ich habe mir mit Hilfe deiner Klasse einen Einfachsteditor für mein Atmelprogramm gezimmert.
Es klappt auch alles wunderbar, bis auf Eines:Ich möchte immer den aktuelle Zeileninhalt in zeile$ haben.

Ich nehme mal an, dass das mit dem Teil zu tun hat.
KompilierenMarkierenSeparieren
Proc XSciProf.GetLine

    Return Int(.SciMessage(~SCI_LINEFROMPOSITION, .SciMessage(~SCI_GETCURRENTPOS, 0, 0), 0) + 1)

EndProc

Proc XSciProf.GetLine$

    Parameters Nr%, Z$
    Declare Len%, Zeile#
    Dim Zeile#,32767
    Len% = .SciMessage(~SCI_GETLINE, Nr%, Zeile#)
    Z$ = Translate$(Char$(Zeile#,0,Len%-1),	,Space$(XSciProf.Tab%))
    Dispose Zeile#
    Return Z$

EndProc


Die aktuelle Zeilennummer geht einwandfrei, aber dann blicke ich nimmer durch.
Du deklar. erst zeile#
du dimensionierst anschliessend zeile#
liest aber nichts ein in zeile#
arbeitest dann aber mit zeile# weiter.

Danke für deine Hilfe

Servus
Georg
 
Windows7 Xprofan 8,9,10 [...]  [...] 
21.10.2007  
 



In Zeile# wird nichts eingelesen, das ist korrekt - Zeile# wird aber beschrieben und zwar von .SciMessage(~SCI_GETLINE, Nr%, Zeile#). Das ist sozusagen das selbe denn Zeile# hat anschliessend entsprechende Werte.
 
21.10.2007  
 




RGH

KompilierenMarkierenSeparieren
...
Len% = .SciMessage(~SCI_GETLINE, Nr%, Zeile#)
Z$ = Translate$(Char$(Zeile#,0,Len%-1),	,Space$(XSciProf.Tab%))
...

Halle Georg,
mit der Message SCI_GETLINE wird, wie der Name schon vermuten läßt, die Zeile Nr% in die Bereichsvariable Zeile# geschrieben. Die Message gibt zusätzlich die Länge der Zeile zurück.
Die nächste Zeile macht zweierlei, sie kopiert die Editorzeile nach Z$ und ersetzt die Tabulatorzeichen () durch die in den Einstellungen angebegebene Anzahl von Leerzeichen.
Wenn Du den Text der Zeile Nr% in Zeile$ haben willst, reicht also auch folgendes:
KompilierenMarkierenSeparieren
...
Len% = .SciMessage(~SCI_GETLINE, Nr%, Zeile#)
Zeile$ = Char$(Zeile#,0,Len%-1)
...

Gruß
Roland
 
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
21.10.2007  
 




GDL
Jo, dann muss noch was vorher aufgerufen werden, denn es wird immer ein leeres z$
zurückgegeben.

Servus
Georg
 
Windows7 Xprofan 8,9,10 [...]  [...] 
21.10.2007  
 




GDL
@Roland,
dein Posting kam während ich schrieb. Habe es erst nach Absenden meines Vorpostings gelesen.

habe hier len% mit len verwechselt.
dachte es wird die Satzlänge des mit getline,nr% aus dem Bereich zeile# ermittelten Satz
ermittelt.Habe getline mit erhalte Zeile aus gefüllten zeile# vermutet.

Servus
Georg
 
Windows7 Xprofan 8,9,10 [...]  [...] 
21.10.2007  
 




GDL
habe den Fehler gefunden.
Möchte ja die Zeile erst nach return überprüfen.

Hatte bei Zeile ermitteln nr%=nr%-1 vergessen.Eigentor.
Aber dafür kapier ich das jetzt.

Servus
Georg
 
Windows7 Xprofan 8,9,10 [...]  [...] 
21.10.2007  
 




GDL
Habe für das was ich brauch mir ne inc für ein Editorfenster gemacht.
KompilierenMarkierenSeparieren
Original von RGH als XProfed Klasse
 $H XPrfEdit.ph
Declare KeyWord1$, KeyWord2$, KeyWord3$, KeyWord4$, KeyWord5$, KeyWord6$, Keyword7$, Keyword8$
Declare Par1$, Par2$,size%,editordll&,e_cBefehl&,e_cbBefehlChk%,tab%,editor_&
declare e_cAktuell&,e_cNormal&,e_cPapier&,e_cKommentar&,e_cbKommentarChk%
declare e_cZahl&,e_cbZahlChk%,e_cStrings&,Font$, KeyWord$, Key$, Wert$
declare e_cbStringsChk%,e_cOperator&,e_cbOperatorChk%,e_cBezeichner&,e_cbBezeichnerChk%
declare e_cDirekt&,e_cbDirektChk%,e_cFunktion&,e_cbFunktionChk%
declare e_cSysvar&,e_cbSysvarChk%,e_cStruktur&,e_cbStrukturChk%
Struct TextRange = cpMin&,
cpMax&,
lpstrText&
editordll& = UseDLL(SciLexer.dll)

IfNot editordll&

    MessageBox(SciLexer.dll nicht gefunden!,FEHLER,16)

EndIf

standardwerte
==============================================================

proc standardwerte

    size%=10
    font$=Courier New
    Tab%        = 8
    e_cNormal&    = RGB($00,$00,$00)
    e_cAktuell&   = RGB($FF,$FF,$00)
    e_cKommentar& = RGB($FF,$00,$00)
    e_cZahl&      = RGB(0,0,255)
    e_cFunktion&  = RGB($00,$00,$80)
    e_cStrings&   = RGB(0,206,0)
    e_cOperator&  = RGB(214,18,239)
    e_cStruktur&  = RGB($00,$00,$00)
    e_cBefehl&    = RGB($00,$00,$DD)
    e_cPapier&    = RGB($FF,$FF,$FF)
    e_cBezeichner&= RGB($00,$00,$00)
    e_cSysvar&    = RGB(214,18,111)
    e_cDirekt&    = RGB($FF,$00,$00)
    e_cbKommentarChk% = 0
    e_cbZahlChk%      = 0
    e_cbFunktionChk%  = 1
    e_cbStringsChk%   = 0
    e_cbOperatorChk%  = 0
    e_cbStrukturChk%  = 1
    e_cbBefehlChk%    = 1
    e_cbBezeichnerChk%= 0
    e_cbSysvarChk%    = 1
    e_cbDirektChk%    = 1

endproc

========================================================================

proc neues_edit

    parameters _x%,_y%,_b%,_h%,_eltern&
    editor_& = Control(Scintilla, , ~WS_CHILD | ~WS_VISIBLE,_x%,_y%,_b%,_h%,_eltern&,4000,%hInstance,0)
    sendMessage(editor_&,~SCI_USEPOPUP, 0, 0)
    sendMessage(editor_&,~SCI_SETTABWIDTH,tab%, 0)
    sendMessage(editor_&,~SCI_SETUSETABS, 0, 0)
    sendMessage(editor_&,~SCI_SETINDENT,tab%, 0)
    sendMessage(editor_&,~SCI_SETTABINDENTS, 1, 0)
    sendMessage(editor_&,~SCI_SETBACKSPACEUNINDENTS, 1, 0)
    sendMessage(editor_&,~SCI_STYLESETFONT, 32, Addr(Font$))
    sendMessage(editor_&,~SCI_STYLESETSIZE, 32,Size%)
    sendMessage(editor_&,~SCI_STYLECLEARALL, 0, 0)
    Font$ = Arial + Chr$(0)
    sendMessage(editor_&,~SCI_STYLESETFONT,~STYLE_LINENUMBER, Addr(Font$))
    sendMessage(editor_&,~SCI_STYLESETSIZE,~STYLE_LINENUMBER,Size% - 4)
    sendMessage(editor_&,~SCI_SETMARGINTYPEN,1,~SC_MARGIN_NUMBER)
    sendMessage(editor_&,~SCI_SETMARGINWIDTHN,1,50)
    Interne Tastaturfunktionen abklemmen (Tastenfunktionen werden anderweitig genutzt)
    sendMessage(editor_&,~SCI_CLEARCMDKEY, 13, 0)   Enter
    sendMessage(editor_&,~SCI_CLEARCMDKEY, 70 + ~SCMOD_CTRL << 16, 0)   f + Strg
    sendMessage(editor_&,~SCI_CLEARCMDKEY, 70 + (~SCMOD_CTRL + ~SCMOD_SHIFT) << 16, 0)   F + Strg
    sendMessage(editor_&,~SCI_CLEARCMDKEY, 71 + ~SCMOD_CTRL << 16, 0)   g + Strg
    sendMessage(editor_&,~SCI_CLEARCMDKEY, 71 + (~SCMOD_CTRL + ~SCMOD_SHIFT) << 16, 0)   G + Strg
    sendMessage(editor_&,~SCI_CLEARCMDKEY, 72 + ~SCMOD_CTRL << 16, 0)   h + Strg
    sendMessage(editor_&,~SCI_CLEARCMDKEY, 72 + (~SCMOD_CTRL + ~SCMOD_SHIFT) << 16, 0)   H + Strg
    sendMessage(editor_&,~SCI_CLEARCMDKEY, 73 + ~SCMOD_CTRL << 16, 0)   i + Strg
    sendMessage(editor_&,~SCI_CLEARCMDKEY, 73 + (~SCMOD_CTRL + ~SCMOD_SHIFT) << 16, 0)   I + Strg
    sendMessage(editor_&,~SCI_CLEARCMDKEY, 76 + ~SCMOD_CTRL << 16, 0)   l + Strg
    sendMessage(editor_&,~SCI_CLEARCMDKEY, 76 + (~SCMOD_CTRL + ~SCMOD_SHIFT) << 16, 0)   L + Strg
    sendMessage(editor_&,~SCI_CLEARCMDKEY, 77 + ~SCMOD_CTRL << 16, 0)   l + Strg
    sendMessage(editor_&,~SCI_CLEARCMDKEY, 77 + (~SCMOD_CTRL + ~SCMOD_SHIFT) << 16, 0)   M + Strg
    sendMessage(editor_&,~SCI_CLEARCMDKEY, 79 + ~SCMOD_CTRL << 16, 0)   o + Strg
    sendMessage(editor_&,~SCI_CLEARCMDKEY, 79 + (~SCMOD_CTRL + ~SCMOD_SHIFT) << 16, 0)   O + Strg
    sendMessage(editor_&,~SCI_CLEARCMDKEY, 82 + ~SCMOD_CTRL << 16, 0)   r + Strg
    sendMessage(editor_&,~SCI_CLEARCMDKEY, 82 + (~SCMOD_CTRL + ~SCMOD_SHIFT) << 16, 0)   R + Strg
    sendMessage(editor_&,~SCI_CLEARCMDKEY, 83 + ~SCMOD_CTRL << 16, 0)   s + Strg
    sendMessage(editor_&,~SCI_CLEARCMDKEY, 83 + (~SCMOD_CTRL + ~SCMOD_SHIFT) << 16, 0)   S + Strg
    sendMessage(editor_&,~SCI_CLEARCMDKEY, 84 + ~SCMOD_CTRL << 16, 0)   t + Strg
    sendMessage(editor_&,~SCI_CLEARCMDKEY, 84 + (~SCMOD_CTRL + ~SCMOD_SHIFT) << 16, 0)   T + Strg
    sendMessage(editor_&,~SCI_CLEARCMDKEY, 87 + ~SCMOD_CTRL << 16, 0)   w + Strg
    sendMessage(editor_&,~SCI_CLEARCMDKEY, 87 + (~SCMOD_CTRL + ~SCMOD_SHIFT) << 16, 0)   W + Strg
    Lexer auswählen und mit Keywords bestücken
    sendMessage(editor_&,~SCI_SETLEXER, 79, 0)
    KeyWord1$ = add addfiles addfonts addhotkey addstring addwindows append appendmenu
    + appendmenubar arc assign beep blockwrite byte
    + char checkmenu chdir chord clear
    + clearclip clearlist cliploadbmp close cls color
    + copy copybmp copybmptomem copypic copysizedbmp copysizedpic createmenu
    + ddelink ddeexecute ddeterminate debugout dec declare
    + deleteobject dim dim! dim$ dim% dim& dispose
    + drawicon drawextbmp drawexticon drawlibicon drawpic drawsizedextbmp
    + drawsizedpic drawsysicon drawtext ellipse enablemenu enablewindow endpaint endprint
    + endsub erase execute exitwindows float fill font freedll
    + inc input input# insertmenu killtimer let line lineto listboxitem$
    + list! list$ list% list& loadbmp loadsizedbmp locate logout long
    + mcls mcopybmp mcopysizedbmp mloadbmp mkdir moveto music nextpage
    + orientation openrw outp outpb parameters password pie play playsound
    + popup print print# putbyte putchar putclip putlong putword randomize readtext
    + rectangle removemenu rename repaint reset return rewrite
    + rmdir roundrect run savebmp savebmptoclip screen screencopy
    + seek separator setcheck setclosemsg setdialogfont setfattr setfont
    + setmenuitem setpixel setscrollrange setscrollpos setstyle settext settimer
    + setwindowpos shell showcursor showmax showmin shownormal sleep
    + sound sqldone sqlexec startpaint startprint string sub
    + subpopup tbox textcolor traceon traceoff trackmenu usebrush
    + usecursor useextcursor useextmenu usefont useicon usepen usermessages
    + var wincopy window windowstyle windowtitle winhelp word writeini + Chr$(0)
    sendMessage(editor_&,~SCI_SETKEYWORDS, 1, Addr(KeyWord1$))
    KeyWord2$ = .super abs addr addstring ansitooem$ arctan assign bin$ blockread byte call char$
    + choosedir$ chr$ classof clicked closecom comerror control cos cot create
    + ctod$ date$ db del$
    + deletestring destroywindow direxists diskfree disksize double dtoc$
    + editbox eof exp external extstring$ float fileexists filename$ filesearch$
    + filestatus$ filepos filesize findfirst$ findnext$ findwindow format$
    + ftp get getactivetab getactivewindow getbvalue getbyte getchar$ getcheck
    + getclip$ getcount getcursel getdir$ getenv$ getfattr getfdate$
    + getfilesize getfocus getftime$ getgvalue gethandle getkey$ getline$
    + getlinecount getlong getpixel getrvalue getselcount getscrollpos getstate getstring$ getstyle gettext$ getword height
    + hex$ hiword iconcount if inkey$ inp inpb input$ ins$ insertstring
    + inserttab instr int iskey itemid joy keyin left$ len lg list!
    + list$ list% list& listbox$ listboxitem$ ln loadfile$ loadpic loadsizedpic long longname$
    + lower$ loword makelong match$ mcisend$ mempos menuitem messagebox mid$ mkstr$ mouse
    + movearrtolist movehandletolist
    + movelisttoarr movelisttohandle movelisttomem movelisttostr$ movestrtolist new not oct$
    + oemtoansi$ opencom ord ogl par$ pi postmessage procaddr ptype$ pwd$ readcom$ readini$
    + rgb right$ rnd round rtf savefile$ scankey scrn selectstring sendkey
    + sendmessage sendstring set setactivewindow setbit setcom setcomext
    + setcomtimeouts setfocus shellexec shortname$ showwindow smtp
    + sin single sizeof space$ sqlinit sqr sqrt str$ string$ substr$
    + tab tabchanged tan testbit time$ tmouse toolbar translate$ trim$
    + typeof upper$ usedll val width winerror$ winexec winexecwait word writecom xor + Chr$(0)
    sendMessage(editor_&,~SCI_SETKEYWORDS, 2, Addr(KeyWord2$))
    KeyWord3$ = asmstart asmend asminclude break case casenot caseof continue class def else elseif
    + endif end endselect endproc endwhile endwith errorproc getmessage if ifnot otherwise
    + proc progend rem repeat select struct subproc until waitinput waitkey waitmouse waitscan
    + while whilenot whileloop with + Chr$(0)
    sendMessage(editor_&,~SCI_SETKEYWORDS, 0, Addr(KeyWord3$))
    KeyWord4$ = !input %bitspixel %bmpx %bmpy %button %childmessage %csrlin %cycaption %cymenu %dbdeleted %dbeof %dbfcount
    + %dbfdecs %dbflen %dbfnumber %dbheader %dbmemo %dbrecsize %dbversion %ddewin %desktop
    + %dlgproc %dlgwproc %dos16 %dos32 %errnumber %error %errorlevel %font %ftpconnected %ftpstatus %getcount
    + %getcursel %getfocus %getinputstate %hdc %hdc2 %input %hinstance &hmenu %hwnd %input %ioresult
    + %itemid %key %lastmessage %lfn %linux %matchlen %matchpos %maxx %maxy %mcierror %menuitem
    + %message %mousekey %mousepressed %mousex %mousey %mwnd %notifycode %os2
    + %parcount %pcount %peekmessage %pos %printing %progend %scankey %umessage %win16
    + %win32 %winbottom %winerror %windowstyle %winleft %winright %wintop %winver %wmnotify %wmpaint
    + %wmtimer &bmpcol &dbreccount &dbrecno &gettickcount &input &lastfocus &loop &lparam &memdc &notifywnd
    + &pdc &sqlcount &sqldbc &ulparam &uwparam &winproc &windproc &wparam + chr$(0)
    sendMessage(editor_&,~SCI_SETKEYWORDS, 3, Addr(KeyWord4$))
    KeyWord5$ = $dbfname $dbftype $dblupdate $dblupdate4 $dosver $drive $ftpstatus $errfile $errstr
    + $getinput $gettext $input $match $profver $progdir $sqlenv $sqlerror $syspath $tempdir
    + $winpath $winver+chr$(0)
    sendMessage(editor_&,~SCI_SETKEYWORDS, 4, Addr(KeyWord5$))
    Keyword6$=aaa aad aam aas adc add and arpl bound bsf bsr bswap bt btc btr bts call cbw cdq clc cld cli clts
    + cmc cmova cmovb cmovc cmove cmovg cmovl cmovo cmovp cmovs cmovz cmovna cmovnb cmovnc cmovne cmovng cmovnl cmovno
    + cmovnp cmovns cmovnz cmovae cmovbe cmovge cmovle cmovpe cmovpo cmovnae cmovnbe cmovnge cmovnle cmp cmpsb cmpsd cmpsw
    + cmpxchg cmpxchg8B cpuid cwd cwde daa das dec div enter hlt idiv imul in inc insb insd insw int int03 int3 into invd
    + invlpg iret iretd iretw ja jb jc je jg jl jo jp js jz jna jnb jnc jne jng jnl jno jnp jns jnz jae jbe jge jle jpe
    + jpo jnae jnbe jnge jnle jcxz jecxz jmp lahf lar lds lea leave les lfs lgdt lgs lidt lldt lmsw lock lodsb lodsd lodsw
    + loop loope loopne loopnz loopz lsl lss ltr mov movsb movsd movsw movsx movzx mul neg nop not or out outsb outsd outsw
    + pop popa popad popaw popf popfd popfw push pusha pushad pushaw pushf pushfd pushfw rcl rcr rdmsr rdpmc rdtsc rep repe
    + repne repnz repz ret retf retn rol ror sahf sal sar sbb scasb scasd scasw seta setb setc sete setg setl seto setp
    + sets setz setna setnb setnc setne setng setnl setno setnp setns setnz setae setbe setge setle setpe setpo setnae
    + setnbe setnge setnle sgdt shl shld shr shrd sidt sldt smint smintold smsw stc std sti stosb stosd stosw str sub syscall
    + sysenter sysexit sysret test verr verw wait wbinvd wrmsr xadd xchg xlatb xor .186 .286 .386 .486 .586 .686 .8086 .8087
    + .alpha .break .code .const .continue .cref .data .data? .dosseg .else .endif .endw .err .err2 .errb .errdef .errdif
    + .errdifi .erre .erridn .erridni .errnb .errndef .errnz .exit .if .k3d .lall .lfcond .list .listall .listif .listmacro
    + .listmacroall .mmx .model .no87 .nocref .nolist .nolistmacro .radix .repeat .sall .seq .sfcond .stack .startup .tfcond
    + .type .until .untilcxz .while .xall .xcref .xlist .xmm __FILE__ __LINE__ abs alias align assume bits byte byte catstr
    + class code comm comment common data db dd df dosseg dq dt dw dword echo else elseif elseif2 end endif endm endp ends equ
    + even exitm extern externdef extrn for forc fword goto group if if2 ifb ifdef ifdif ifdifi ife ifidn ifidni ifndef include
    + includelib instr invoke irp irpc label macro name option org %out oword page popcontext proc proto public purge
    + pushcontext qword real4 real8 real10 record repeat rept sbyte sdword segment sizestr struc struct substr subtitle
    + subttl sword tbyte textequ title typedef union while word+Chr$(0)
    sendMessage(editor_&,~SCI_SETKEYWORDS, 5, Addr(KeyWord6$))
    Keyword7$=!( %( &( $( add$ add( addchoice and( charset closerw
    + createwindow createtext createedit createmultiedit createdialog createextdialog createvscroll
    + createhscroll createchoicebox createsortedlistbox createlistbox createicon creategroupbox
    + createbutton createdefbutton createcheckbox createradiobutton createfont
    + dbappendblank dbbrowse dbclose dbcreate dbcreateindex dbdelete dbedit dbfind
    + dbget$ dbgetfield dbgetmemo dbgo dbindex dbopen dbpack dbput
    + dbputfield dbputmemo dbputrec dbseek dbsetmemowidth dbundelete dbuse
    + decimals deletechoice div div& equ equ$ filemode goto gosub gt gt$ %lfn lt lt$
    + mod( movelisttochoice movelisttoedit movelisttolist mul neq neq$
    + numwidth or( pow setautopaint seterrorlevel setlfn settruecolor
    + sqlsetnull sqlsetdel strwidth sub( wend+Chr$(0)
    sendMessage(editor_&,~SCI_SETKEYWORDS, 6, Addr(KeyWord7$))
    Keyword8$=setlfn getusage+Chr$(0)
    sendMessage(editor_&,~SCI_SETKEYWORDS, 7, Addr(KeyWord8$))
    Farben einstellen
    editor_farben
    Folding einstellem
    sendMessage(editor_&,~SCI_SETSTYLEBITS,5)
    Par1$ = foldz : Par2$ = 1z
    sendMessage(editor_&,~SCI_SETPROPERTY, Addr(Par1$), Addr(Par2$))
    Par1$ = fold.compactz : Par2$ = 0z
    sendMessage(editor_&,~SCI_SETPROPERTY, Addr(Par1$), Addr(Par2$))
    Par1$ = fold.commentz : Par2$ = 0z
    sendMessage(editor_&,~SCI_SETPROPERTY, Addr(Par1$), Addr(Par2$))
    Par1$ = fold.preproccessorz : Par2$ = 0z
    sendMessage(editor_&,~SCI_SETPROPERTY, Addr(Par1$), Addr(Par2$))
    sendMessage(editor_&,~SCI_SETMARGINWIDTHN, 2, 0)
    sendMessage(editor_&,~SCI_SETMARGINTYPEN,2,~SC_MARGIN_SYMBOL)
    sendMessage(editor_&,~SCI_SETMARGINMASKN, 2,~SC_MASK_FOLDERS)
    sendMessage(editor_&,~SCI_SETMARGINWIDTHN, 2,20)
    Choose folding icon colours
    sendMessage(editor_&,~SCI_MARKERSETFORE, ~SC_MARKNUM_FOLDER, $FFFFFF)
    sendMessage(editor_&,~SCI_MARKERSETBACK, ~SC_MARKNUM_FOLDER, $FF0000)
    sendMessage(editor_&,~SCI_MARKERSETFORE, ~SC_MARKNUM_FOLDEROPEN, $FFFFFF)
    sendMessage(editor_&,~SCI_MARKERSETBACK, ~SC_MARKNUM_FOLDEROPEN, $FF0000)
    sendMessage(editor_&,~SCI_MARKERSETFORE, ~SC_MARKNUM_FOLDEROPENMID, $FFFFFF)
    sendMessage(editor_&,~SCI_MARKERSETBACK, ~SC_MARKNUM_FOLDEROPENMID, $FF0000)
    sendMessage(editor_&,~SCI_MARKERSETFORE, ~SC_MARKNUM_FOLDEREND, $FFFFFF)
    sendMessage(editor_&,~SCI_MARKERSETBACK, ~SC_MARKNUM_FOLDEREND, $FF0000)
    sendMessage(editor_&,~SCI_MARKERSETBACK, ~SC_MARKNUM_FOLDERSUB, $FF0000)
    sendMessage(editor_&,~SCI_MARKERSETBACK, ~SC_MARKNUM_FOLDERTAIL, $FF0000)
    sendMessage(editor_&,~SCI_MARKERSETBACK, ~SC_MARKNUM_FOLDERMIDTAIL, $FF0000)
    sendMessage(editor_&,~SCI_MARKERDEFINE, ~SC_MARKNUM_FOLDER, ~SC_MARK_BOXPLUS)         PROC geschlossen
    sendMessage(editor_&,~SCI_MARKERDEFINE, ~SC_MARKNUM_FOLDEROPEN, ~SC_MARK_BOXMINUS)    PROC geöffnet
    sendMessage(editor_&,~SCI_MARKERDEFINE, ~SC_MARKNUM_FOLDEREND, ~SC_MARK_BOXPLUSCONNECTED)

    PROC geschlossen innerhalb PROC

        sendMessage(editor_&,~SCI_MARKERDEFINE, ~SC_MARKNUM_FOLDERMIDTAIL, ~SC_MARK_TCORNER)  ENDPROC innerhalb PROC
        sendMessage(editor_&,~SCI_MARKERDEFINE, ~SC_MARKNUM_FOLDEROPENMID, ~SC_MARK_BOXMINUSCONNECTED)

        PROC geöffnet innerhalb PROC

            sendMessage(editor_&,~SCI_MARKERDEFINE, ~SC_MARKNUM_FOLDERSUB, ~SC_MARK_VLINE)        zw. PROC und ENDPROC
            sendMessage(editor_&,~SCI_MARKERDEFINE, ~SC_MARKNUM_FOLDERTAIL, ~SC_MARK_LCORNER)     ENDPROC
            sendMessage(editor_&,~SCI_SETFOLDFLAGS, 16, 0)                                        Draw line below if not expanded
            sendMessage(editor_&,~SCI_SETMARGINSENSITIVEN, 2, 1)
            Fertig!
            ShowWindow(editor_&, 1)
            return editor_&

        endproc

        ===================================================================

        proc editor_farben

            Case e_cAktuell& = e_cNormal& : e_cAktuell& = $FFFFFF - e_cNormal&
            ALle Farben auf die Standardfarbe setzen
            sendmessage(editor_&,~SCI_STYLESETFORE, 32, e_cNormal&)
            sendmessage(editor_&,~SCI_STYLESETBACK, 32, e_cPapier&)
            sendmessage(editor_&,~SCI_STYLECLEARALL, 0, 0)

            If e_cAktuell& <> e_cPapier&

                sendmessage(editor_&,~SCI_SETCARETLINEVISIBLE, 1, 0)
                sendmessage(editor_&,~SCI_SETCARETLINEBACK, e_cAktuell&,0)  Hintergreund aktuelle Zeile

            Else

                sendmessage(editor_&,~SCI_SETCARETLINEVISIBLE,0,0)

            EndIf

            Spezielle Farben setzen
            sendmessage(editor_&,~SCI_STYLESETFORE, 1, e_cKommentar&)    Comment
            sendmessage(editor_&,~SCI_STYLESETBOLD, 1, e_cbKommentarChk%)
            sendmessage(editor_&,~SCI_STYLESETITALIC, 1, 1)
            sendmessage(editor_&,~SCI_STYLESETFORE, 2, e_cZahl&)         Number
            sendmessage(editor_&,~SCI_STYLESETBOLD, 2, e_cbZahlChk%)
            sendmessage(editor_&,~SCI_STYLESETFORE, 4, e_cStrings&)      Strings
            sendmessage(editor_&,~SCI_STYLESETBOLD, 4, e_cbStringsChk%)
            sendmessage(editor_&,~SCI_STYLESETFORE, 19, e_cStrings&)  UnderlineStrings
            sendmessage(editor_&,~SCI_STYLESETUNDERLINE, 19, 1)  UnderlineStrings
            sendmessage(editor_&,~SCI_STYLESETBOLD, 19, 1 - e_cbStringsChk%)
            sendmessage(editor_&,~SCI_STYLESETFORE, 6, e_cOperator&)     Operator
            sendmessage(editor_&,~SCI_STYLESETBOLD, 6, e_cbOperatorChk%)
            sendmessage(editor_&,~SCI_STYLESETFORE, 8, e_cBezeichner&)   Variablen
            sendmessage(editor_&,~SCI_STYLESETBOLD, 8, e_cbBezeichnerChk%)
            XProfan-Sprachumfang in fett
            sendmessage(editor_&,~SCI_STYLESETFORE, 5, e_cDirekt&)       Direktiven
            sendmessage(editor_&,~SCI_STYLESETBOLD, 5, e_cbDirektChk%)
            sendmessage(editor_&,~SCI_STYLESETFORE, 3, e_cFunktion&)     Funktion
            sendmessage(editor_&,~SCI_STYLESETBOLD, 3, e_cbFunktionChk%)
            sendmessage(editor_&,~SCI_STYLESETFORE, 15, e_cSysvar&)      Systemvariablen
            sendmessage(editor_&,~SCI_STYLESETBOLD, 15, e_cbSysvarChk%)
            sendmessage(editor_&,~SCI_STYLESETFORE, 10, e_cStruktur&)    Struktur
            sendmessage(editor_&,~SCI_STYLESETBOLD, 10, e_cbStrukturChk%)
            sendmessage(editor_&,~SCI_STYLESETFORE, 11, e_cBefehl&)      Befehle
            sendmessage(editor_&,~SCI_STYLESETBOLD, 11, e_cbBefehlChk%)
            Asseembler
            sendmessage(editor_&,~SCI_STYLESETFORE, 14, e_cSysvar&)      Systemvariablen
            Veraltete Keywords
            sendmessage(editor_&,~SCI_STYLESETBACK,  9, $00FFFF)                überholt = gelb
            sendmessage(editor_&,~SCI_STYLESETBACK, 17, $0000FF)                veraltet = rot
            sendmessage(editor_&,~SCI_STYLESETFORE, ~STYLE_LINENUMBER, 0)

        endproc

        ================================================================

        proc einfuegen_

            Return sendmessage(editor_&,~SCI_PASTE, 0, 0)

        endproc

        ==========================================================

        Proc editloeschen_

            Return sendmessage(editor_&,~SCI_CLEARALL, 0, 0)

        EndProc

        ========================================================

        Proc ausschneiden_

            Return sendmessage(editor_&,~SCI_CUT, 0, 0)

        EndProc

        ===================================================

        Proc kopieren_

            Return sendmessage(editor_&,~SCI_COPY, 0, 0)

        EndProc

        ===================================================

        Proc laden_

            Parameters File$
            Declare Len&, Erg&, BDatei#
            Len& = FileSize(File$)
            Dim BDatei#, Len&  + 1       +1 für abschließendes Null-Byte
            BlockRead(File$, BDatei#, 0, Len&)
            Byte BDatei#, Len& = 0
            sendmessage(editor_&,~SCI_SETTEXT, 0, BDatei#)
            sendmessage(editor_&,~SCI_SETSAVEPOINT, 0, 0)
            sendmessage(editor_&,~SCI_EMPTYUNDOBUFFER, 0, 0)
            Dispose BDatei#
            Erg& = 1
            Return Erg&

        EndProc

        =========================================================================

        Proc speichern_

            Parameters File$
            Declare Len&, BDatei#
            len&=sendmessage(editor_&,~SCI_GETLENGTH,0,0)+1
            case len&=0:beep
            case len&=0:len&=100000
            Dim BDatei#,Len&
            sendmessage(editor_&,~SCI_GETTEXT, Len&, BDatei#)
            BlockWrite File$, BDatei#, 0, Len&
            Dispose BDatei#

        EndProc

        ===================================================================

        Proc aktuellezeile_

            Return Int(sendmessage(editor_&,~SCI_LINEFROMPOSITION,sendmessage(editor_&,~SCI_GETCURRENTPOS, 0, 0), 0) + 1)

        EndProc

        =======================================================

        Proc retur_

            Return sendmessage(editor_&,~SCI_UNDO, 0, 0)

        EndProc

        ======================================================================

        Proc GetLine$_

            Parameters Nr%,Z$
            case nr% <> 0 : dec nr%
            Declare Len%, Zeile#
            Dim Zeile#,32767
            Len% = .SciMessage(~SCI_GETLINE, Nr%, Zeile#)
            Len% = sendmessage(editor_&,~SCI_GETLINE,Nr%,Zeile#)
            Z$ = Char$(Zeile#,0,Len%-1)
            case z$ <>  :beep

        endproc

        ========================================================

        proc freieditordll_

            FreeDLL editordll&

        endproc

        ==============================================================

Servus
Georg
 
Windows7 Xprofan 8,9,10 [...]  [...] 
21.10.2007  
 




GDL
Soweit bin ich schon.

zz.jpg  
87 kB
Hochgeladen:21.10.2007
Ladeanzahl123
Herunterladen
 
Windows7 Xprofan 8,9,10 [...]  [...] 
21.10.2007  
 




GDL
Hi,

bin fast fertig, nur dass bekomme ich nicht in den Griff.

Wenn ich mein Programm verkleinere oder überdecke ist der Cursor vom Scintilla Editor weg.Klicke ich aber mit der linken Maustaste in das Dokument habe ich den Cursor wieder.

Ich bin jetzt dabei, dies mit autopaint zu probieren, bekomme es aber nicht hin.
KompilierenMarkierenSeparieren
ELSEIF %wmPaint

setfocus(editor_&)
sendkey(editor_&,1)

Beides geht nicht.Was muss unter %wmPaint rein dass es geht? Danke.

Servus
Georg
 
Windows7 Xprofan 8,9,10 [...]  [...] 
24.10.2007  
 




Jörg
Sellmeyer
Versuchs mal mit:
KompilierenMarkierenSeparieren
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
24.10.2007  
 




GDL
@Jörg geht auch nicht.

Habe gerade festgestellt: Sobald das Scintilla den Focus verliert (zwischenzeitlichen Drückens eines anderen Button) bekomme ich den Focus nicht mehr automatisch auf das Scintilla zurück.Nur durch drücken der linken Maustaste ins Scintilla klappt.

Weder
setfocus(editor_&)
noch
sendkey(editor_&,1)
funktionieren im Anschluss nach einem anderen Focus.

Servus
Georg
 
Windows7 Xprofan 8,9,10 [...]  [...] 
24.10.2007  
 




Jörg
Sellmeyer
Und was ist mit SetActiveWindow()?

Erzeugst Du nur ein Editcontrol oder mehrere?
Mit
KompilierenMarkierenSeparieren
editor_& = Control(Scintilla, , ~WS_CHILD | ~WS_VISIBLE,_x%,_y%,_b%,_h%,_eltern&,4000,%hInstance,0)

hast Du eine globale Variable in der Prozedur zum Erzeugen des Controls. Wenn Du mehrere erzeugst, hast Du immer nur Zugriff auf das zuletzt erzeugte.
Declariere lieber eine Lokale Variable, die Du am Ende der Prozedur mir Return zurücklieferst.
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
24.10.2007  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

14.630 Betrachtungen

Unbenanntvor 0 min.
Sven Bader14.03.2023
Ernst22.04.2016
Magda31.08.2014
GDL11.05.2014
Mehr...

Themeninformationen

Dieses Thema hat 4 Teilnehmer:

GDL (21x)
Jörg Sellmeyer (7x)
iF (2x)
RGH (1x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie