realbasic-nug.de
[Top] [All Lists]

Re: Autoformat eines EditField?

To: REALbasic NUG German <realbasic-nug dot de at lists dot realsoftware dot com>
Subject: Re: Autoformat eines EditField?
From: Torsten Gutsche <torsten at a-frame-below dot com>
Date: Mon, 31 Jan 2005 16:52:14 +0100
Delivered-to: realbasic-nug dot de at lists dot realsoftware dot com
References: <1330A59037176E4485BF0BC542D8874F0A0E5995 at dewhvmxc001 dot whv dot emea dot sykes dot com>

Am 31.01.2005 um 12:27 schrieb Schneppmueller, Sascha:

Moin,

ich versuche einen Editor mit Syntax Highlighting für eine
Skriptsprache zu entwickeln.
Während ein User das Skript schreibt sollen vom Programm
erkannte Schlüsselwörter in einer anderen Farbe dargestellt werden.

Ich komme einfach nicht vorran.
Hat denn wirklich niemand eine Idee

PS: Es soll primaer eine Win32 Anwendung werden...

Vielen Dank für jede Hilfe.

Gruss Schneppi




Mahlzeit,

Versuch mal das hier (bin mir nicht ganz sicher, ob Du das hier genau das ist, was Du brauchst:

1. Erzeuge ein global zugängliches Dictionary myDict (oder so)

2. Im Open-Event des Windows (oder Editfields):

  myDict = new Dictionary
  myDict.value("Test")=1
  myDict.Value("Highlight")=1
usw,

3. Im TextChange-Event des Editfields:

  dim aText,aChar,Separators as string
  dim position as integer
Separators=chr(9)+chr(10)+chr(13)+chr(32)+",.:;""!?-–" // Passendes ergaenzen
  if me.Styled then
    // Das Wort, an dem gerade geschrieben wird, ermitteln
    position=me.SelStart+1
    aChar=mid(me.text,me.SelStart+1,1)
    while (instr(Separators,aChar)=0) and (position>0)
      aText=aChar+aText
      position=position-1
      aChar=mid(me.text,position,1)
    wend

    // Gucken, ob das Wort ein Highlightwort ist
    if myDict.HasKey(aText) then
me.StyledText.TextColor(position,me.SelStart-position)=rgb(255,0,0)
    else
      me.StyledText.TextColor(position,me.SelStart-position)=rgb(0,0,0)
    end if
  end if

Beim Schreiben sollten jetzt die Worte Test und Highlight rot markiert werden. Wenn man allerdings Testphase schreibt, wird es wieder schwarz.

Hoffe, dass hilft ein wenig. Habe es allerdings nicht auf "Seiteneffekte" geprüft.

Gruß

Torsten

<Prev in Thread] Current Thread [Next in Thread>