Richedit-eigenschaften

Anfängerfragen zum Programmieren mit PureBasic.
stevie1401
Beiträge: 700
Registriert: 19.10.2014 15:51
Kontaktdaten:

Re: Richedit-eigenschaften

Beitrag 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?
Ich programmiere nur noch mit Linux.
Linux Mint 21.x
Benutzeravatar
Danilo
-= Anfänger =-
Beiträge: 2284
Registriert: 29.08.2004 03:07

Re: Richedit-eigenschaften

Beitrag von Danilo »

ScintillaSendMessage(gadget, #SCI_SETREADONLY, #True) sollte helfen, dann kann man nichts eingeben.
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
stevie1401
Beiträge: 700
Registriert: 19.10.2014 15:51
Kontaktdaten:

Re: Richedit-eigenschaften

Beitrag von stevie1401 »

Jepp, danke.
Wie scrolle ich eigentl. automatisch nach ganz unten?

edit:
Habs gefunden:

Code: Alles auswählen

 ScintillaSendMessage(gadgetNr,#SCI_SCROLLTOEND)  

Ich programmiere nur noch mit Linux.
Linux Mint 21.x
stevie1401
Beiträge: 700
Registriert: 19.10.2014 15:51
Kontaktdaten:

Re: Richedit-eigenschaften

Beitrag 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.
Zuletzt geändert von stevie1401 am 08.11.2014 17:28, insgesamt 1-mal geändert.
Ich programmiere nur noch mit Linux.
Linux Mint 21.x
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Richedit-eigenschaften

Beitrag von RSBasic »

Das sollte #SCI_STYLESETBACK sein, um die Hintergrundfarbe zu setzen.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Richedit-eigenschaften

Beitrag 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.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Richedit-eigenschaften

Beitrag 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
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Richedit-eigenschaften

Beitrag 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
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
stevie1401
Beiträge: 700
Registriert: 19.10.2014 15:51
Kontaktdaten:

Re: Richedit-eigenschaften

Beitrag 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 :-)
Ich programmiere nur noch mit Linux.
Linux Mint 21.x
Benutzeravatar
Vera
Beiträge: 928
Registriert: 18.03.2009 14:47
Computerausstattung: Win XP SP2, Suse 11.1
Wohnort: Essen

Re: Richedit-eigenschaften

Beitrag 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
°
<°)))o><
~~~~~~~~~
echo "Don't worry"
echo "Keep quiet"
@echo off
format forum:\
Antworten