Seite 5 von 6

Re: Richedit-eigenschaften

Verfasst: 08.11.2014 11:28
von stevie1401
Ich benutze z.Z. PB 5.24 LTS und ich weiss nicht, warum ihr alle denkt, ich würde nur 3 Farben gebrauchen ^^
Der einzelne Spieler kann sich seine eigenen Farben einstellen und der Server schickt auch noch Texte in verschiedene Farben.
Ich hab sie zwar nicht gezählt, aber mit 31 verschiedenen Farben wird es auf jeden Fall eng.

Ich werde es dennoch mal probieren, ändern kann man das ja eh wieder.
Wordwrap vereinfacht schon vieles.
Jetzt muss ich nur noch irgendwie verhindern, dass der Benutzer in das ScintillaGadget etwas reinschreibt, denn dann würde das ganze nicht mehr funktionieren, glaube ich.
Hat da jemand Tips?

Re: Richedit-eigenschaften

Verfasst: 08.11.2014 11:39
von Danilo
ScintillaSendMessage(gadget, #SCI_SETREADONLY, #True) sollte helfen, dann kann man nichts eingeben.

Re: Richedit-eigenschaften

Verfasst: 08.11.2014 12:13
von stevie1401
Jepp, danke.
Wie scrolle ich eigentl. automatisch nach ganz unten?

edit:
Habs gefunden:

Code: Alles auswählen

 ScintillaSendMessage(gadgetNr,#SCI_SCROLLTOEND)  


Re: Richedit-eigenschaften

Verfasst: 08.11.2014 17:09
von stevie1401
Ich finde allerdings keinen Befehl, um die Hintergrundfarbe des Gadgets zu ändern.
SetGadgetColor(GadgedID, #PB_Gadget_BackColor, aColor) funktioniert nicht.



Edit:
ScintillaSendMessage(1, #SCI_STYLESETBACK,#STYLE_DEFAULT , aColor)
und dann wirklich jeden Style noch einmal machen:
ScintillaSendMessage(1, #SCI_STYLESETBACK,StyleNr , aColor)

Es ist schon sehr anstrengend, um nicht zu sagen nervig, jeden einzelnen Befehl mühselig im Web zu suchen und dann wild zu probieren, bis es klappt.
Da wäre ein bessere Hilfe in PB wünschenswert.

Re: Richedit-eigenschaften

Verfasst: 08.11.2014 17:16
von RSBasic
Das sollte #SCI_STYLESETBACK sein, um die Hintergrundfarbe zu setzen.

Re: Richedit-eigenschaften

Verfasst: 08.11.2014 18:16
von RSBasic
stevie1401 hat geschrieben:Es ist schon sehr anstrengend, um nicht zu sagen nervig, jeden einzelnen Befehl mühselig im Web zu suchen und dann wild zu probieren, bis es klappt.
Was ist daran anstrengend? Es steht alles in der jeweiligen Dokumentation da. Man muss nur lesen und anwenden. Es mag vielleicht am Anfang für dich umständlich sein, weil du sowas noch nicht kennst, aber wenn du es verstanden hast, wo sich die Informationsquellen befinden und wo du suchen musst, dann ist es alles klar und leicht umsetzbar.
stevie1401 hat geschrieben:Da wäre ein bessere Hilfe in PB wünschenswert.
Das ist aber nicht die Aufgabe vom PB-Team. Scintilla ist eine von Neil Hodgson entwickelte Komponente und es hat nichts mit PB zu tun. PB bietet es nur an. Genauso wie die WinAPI-Schnittstelle von Microsoft. Die Beschreibungen zu den einzelnen Funktionen findest du natürlich nicht in der PB-Hilfe, sondern auf der Microsoft-Seite.

Re: Richedit-eigenschaften

Verfasst: 08.11.2014 18:42
von ts-soft
Es würde ja nicht viel ändern, wenn das PB-TEAM Scintilla vollständig wrappen würde. Die Namen und
ein paar Kleinigkeiten, aber ansonsten ...
Scintilla hat nunmal eine komplexe API, die auch etwas ungewohnt daherkommt, aber viel einfacher wird
es nicht gehen. Das Haupteinsatz-Gebiet ist nunmal: SyntaxHiglightning, Autovervollständigen, Marker und
Nummern usw..

Man kann also z.B. eine komplette IDE erstellen, bestes Beispiel die PB-IDE oder etwas kleiner:
http://www.realsource.de/downloads/doc_ ... -x-profpad

Du brauchst das meiste nicht und das wenige, was Du brauchst, daraus zu picken ist nicht so einfach, aber
wenn das erstmal erledigt ist ...

Es würde ja auch mit RichEdit gehen, aber dann wären gleich 3 sehr unterschiedliche API beteiligt und das
wäre dann eventuell noch komplizierter.

Wie wäre es, erstmal auf die Farben verzichten und diese dann zum Schluß in Version 2 oder so einzubauen,
damit Du erstmal erfolge erzielst?

Gruß
Thomas

Re: Richedit-eigenschaften

Verfasst: 08.11.2014 20:15
von ts-soft
Jetzt noch zur Syntax:

Code: Alles auswählen

SendMessage_(hWnd, #EM_SETREADONLY, #True, 0)
SendMessage_(hWnd, #SCI_SETREADONLY, #True, 0)
Die obere Message ist für ein RichEdit, die zweite für ein ScintillaGadget in API Form.
Man sieht gleich, ein paar der Konstanten für RichtEdit gelten auch für Scintilla.

Code: Alles auswählen

ScintillaSendMessage(id, #SCI_SETREADONLY, #True)
Das ist die PureBasic form, wobei statt hWnd die ID übergeben wird und die letzten
parameter Optional sind.

Code: Alles auswählen

ScintillaSendMessage(id, #SCI_GETREADONLY)
Hier kommt die Message ohne parameter aus.
In der Scintilla Dokumentation geht man immer von der Message aus:

Code: Alles auswählen

SCI_REPLACESEL(<unused>, const char *text)
ist zur Ersetzen durch:

Code: Alles auswählen

ScintillaSendMessage(id, #SCI_REPLACESEL, 0, *Buffer)
Also immer erst die id, dann die Message als Konstante und dann folgen
eventuelle parameter, wobei <unused> immer durch 0 zu ersetzen ist.

Bei den Parametern werden auch oft Strukturen genutzt, z.B.

Code: Alles auswählen

SCI_GETTEXTRANGE(<unused>, Sci_TextRange *tr)
was zu *tr.sci_textrange wird. Die Structure ist natürlich vorher zu definieren oder
wir nehmen einfach die für das EditorGadget gedachte, wenn gleich, TEXTRANGE
also:

Code: Alles auswählen

ScintillaSendMessage(id, #SCI_GETTEXTRANGE, 0, *tr.TEXTRANGE)
Textrange kannste Dir jetzt im Strukturverzeichnis (Alt + S) ansehen.

Mit diesen Grundlagen, Lesen und Probieren, solltest Du langsam mit Scintilla warm werden :wink:
vorausgesetzt, Du hast noch Lust

Re: Richedit-eigenschaften

Verfasst: 08.11.2014 21:52
von stevie1401
Erst einmal vielen Dank für die viele Hilfe.
Ich wollte nicht meckern, sondern war nur etwas gestresst und wollte auch zum Ausdruck bringen, dass im Gegensatz zur PB-Hilfe,die ich geradezu genial finde, Scintilla doch recht schwer und gewöhnungsbedürftig ist.
Die puren PB-Befehle sind sehr schnell erlernbar, gerade weil die Hilfe so klasse ist.
Sollten 31 Farben ausreichen, was ich im Moment nicht weiss, werde ich es mit Scintilla versuchen, auch wenn es etwas wie mit Kanonen auf Spatzen schiessen ist.
Letztendlich will ich nur einen farbigen Chat, den ich durchaus auch anders bewerkstelligen kann.

Also nix für ungut und nochmals vielen Dank :-)

Re: Richedit-eigenschaften

Verfasst: 08.11.2014 21:55
von Vera
Hallo stevie,
ich verfolge Deine ganzen Anfragen auch mit Interesse und habe auch einiges dazugelernt. (Zwei Meldungen hatte ich schon gecancled, da andere schneller waren.)

Aber vielleicht kann ich jetzt was beitragen.
Den von Danilo oben beschriebenen Effekt, dass bei 256 Style-Definitionen, ab dem 32ten die Zeilen ungewollt unterstrichen sind, habe ich auch.
In der Scintilla-doku steht aber auch, das die Plätze 32 - 39, sowie 255 vorbelegt sind. Die sollte man also ausschließen und könnte aber 40 - 254 frei belegen.

Dabei hab ich auch rausbekommen das No 32 den globalen Hintergrund bestimmt. Es reicht also aus, diesen nur einmal festzulegen.

Code: Alles auswählen

ScintillaSendMessage(ScNo, #SCI_STYLESETBACK,32,  RGB(255,195,155))
Die spezifischen Hintergründe, zB für Text oder Schlüsselwörter, bleiben davon unberührt.

Gruß ~ Vera