Zeichnen in TCustomEdit

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Zeichnen in TCustomEdit

Beitrag von Christian »

Hat jemand ne idee, wie ich in ein TCustomEdit zeichnen kann ? Kann ruhig etwas Plattformspezifisch werden, ich brauchs zwar für alle Plattformen hab aber nichts gegen eine ifdef Lösung. Hintergrund ist das ich im Prometheus für alle Eingabefelder, in die längere texte kommen ein Spellchecking einführen möchte. Die Prüfung an sich ist gar kein Problem aber das unterstreichen der falsch geschriebenen Wörter. Ich hab keine Lust einen Saz neuer Edit Komponenten für den Quatsch zu schreiben.

Lieb wäre mir eine Routine in der Form: procedure RegisterSpellChecking(Edit : TCustomEdit);
Die dann entsprechendes im Control registrieren kann. Also sich in die Messegeloop einklinkt und ein vorhandenes Popup Menue erweitert oder ein neues anbindet...

Jemand ne Idee ?
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Benutzeravatar
theo
Beiträge: 10869
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

In ein Edit (Widget-) Control reinzupinseln ist keine gute Idee.
Vielleicht kriegst du das auf einem Widgetset mit Ach und Krach und Geflacker hin, aber auf dem anderen geht's dann mit Sicherheit nicht.
Vielleicht kannst du dir was auf der Basis von TSynMemo basteln, dürfte aber auch aufwändig werden.
Ich würde eine andere Lösung suchen. Vielleicht ein Popupmenu welches die Fehler anzeigt. Die kannst du dann beim draufklicken im TEdit selecten, oder so...;-)

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

grr find ich net so toll alternative wäre ein Button über den ein Dialog aufgerufen wird der die Fehler anzeigt und beheben kann ungefähr so wie im MS Word. Aber viiieeel schöner wärs wenn man das anders lösen könnte.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Wenn es nur um ein TEdit geht ist das gar nicht mal so aufwendig würde ich sagen.

Du musst nur das zeichnen in die Hand nehmen, dafür gibt es genügend beispiele denke ich im Internet.

Dann eine Procedure schreiben und Fertig.... musst halt nach jedem Word schauen, ob dies falsch oder richtig ist... bzw. in der Liste drin ist....
MFG
Michael Springwald

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Weisst du wovon du redest ??
Denke nicht.
Wenn du dafür wirklich ein Beispiel kennst immer her damit.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Ne, leider geht meine Idee die ich hatte nicht.

Ich hatte gehoft, das TEdit verfügt über ein Canvas. Aber leider nicht. Sonst währe es einfach.
Ich konnte wohl wmPain abfangen, mehr aber nicht. Drauf zeichnen konnte ich leider nicht.

Mir würde als letztes einfallen selbst ein TEdit zu schreiben(habe ich sowieso vor wegen meiner GUI), aber die würde anders aussehen.

Wenn man nur an diese Paint Methode ran kommen könnte und an das Canvas. Leider gibt es ja auch kein Ereignis oder so.

Ich habe auch gesucht, aber nix passendes Gefunden. Evlt. schaffe ich es ja doch noch. Brauchst du das nur für ein Edit ? oder ehrer ein Memo ?
MFG
Michael Springwald

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Dann schreib nicht immer bevor du sowas weisst das war uns allen von vornherrein klar. Wenns so einfach wäre würde ich gar net fragen.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

habe mich schon gewundert. aber im Prinzip musst du nur das WMPaint Abfangen und einen weg finden auf das TEdit zuzeichnen, die Frage ist auch, wird WMPain nach oder vor dem Zeichnen aufgerufen ?

ich glaube vor dem Zeichnen, weil meine zeichnen versuche nicht geklappt haben.

Schon seltsam das das TEdit kein Canvas besitzt, sonst währe es ja leicht *G*
Es stammt doch von TWinControl ab.
MFG
Michael Springwald

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Beitrag von monta »

Was verstehst du eigentlich unter Langen Texten in nem Edit-Feld?

Wäre es nicht auch ausreichend, bei fehlerverdacht das ganzelediglich leicht andersfarbig zu Hinterlegen, und erst bei Rechtsklick oder so die Fehler/Verbesserung anzuzeigen?
Johannes

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

ich meine ja auch das es nur bei einem Memo Sinn macht... Aber bei einem TEdit ?
mit einem RichEdit währe es leicht...

Christian, währe das nicht die Gelegenheit, sowas zu schreiben ?
Du brauchst es ja jetzt..... *lol*

Wie gesagt ein TEdit nach zu schreiben ist nicht weiter schwer nur ein Memo nach zu schreiben + RichEdit(oder auch ohne) Funktionen ist schwer.

Sicher hast du sowas in ein paar Stunden Fertig... und wir alle haben was davon :D
MFG
Michael Springwald

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Es macht kaum einen Unterscheid ob Memo oder TEdit obwohl es beim Memo mit TSynEdit recht simpel wäre.

Beispiel wäre hier z.b.
Die Beitragsüberschrift und der Beitragstext. Es macht durchaus auch bei den Überschriften sinn....

@Pluto nein ich habe keine lust die Komponenten komplett von der pike auf neu zu schreiben und es sind nicht nur ein paar Stunden. Du kannst noch gar nicht überblicken was da dran hängt.

Und es ist auch nicht komisch das ein Edit control keinen Canvas hat. Wozu sollte es einen haben ?
Und höchstwarscheinlich wird dorthin noch nicht mal eine Paint message gesenst. Wie gesagt, du kannst gute Ratschläge geben wenn du weißt wovon du redest ansonsten lass es doch einfach.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

also WMPaint wird emfangen, das habe ich heute Morgen Geschafft.

Wobei das mit dem Canvas verstehe ich nicht ganz. Alle Komponenten haben so eine

Ich denke mal man müsste mit Botschaften arbeiten.
Und was währe wenn du einfach ein Tlabel nehmen würdes ?
was dann unterhalb des TEdit ist. da steht dann drin was falsch geschrieben ist bzw.
oder du unterstreichst so.....

Edit:
Nochmal ein TEdit ist gar kein Problem selbst zu machen, das habe ich ja in der Letzten zeit gesehen. Aber sorry. du machst für mich immer den eindruck das du alles weißt und ich nix.... Also musst du dich auch nicht über solche Antworten Wunderen, oder ?

Edit2:
Außerdem was soll an einer eigenen TEdit Komponenten aufwendig sein ?

Du brauchst ja nur eine Pointer Liste, noch nicht mal. Du brauchst ja nur ein String mehr nicht.

Weil in einem TEdit werden ja nicht so lange Texte Dargestellt. Mit einer Doppelverkettenten liste ist es nur leichter und einfacher.

Also sowas ist kein Aufwand. Wenn du möchtes kann ich Heute oder Morgen sowas anfangen. Allerdings wird sie anders aussehen. Weil ich nicht genau weiß wie die das Aussehen der Normalen TEdit Komponenten hinbekommen.

Das Prinzip ist aufjedenfall nicht weiter schwer. Das habe ich ja mit meinem Nachbar zusammen hinbekommen. Nur bei mehrzeiligen Text wissen wir nicht genau wie es weiter gehen soll.
Aber bei einer Zeile kein Problem. Evlt. fange ich sowas heute schon an.... eigentlich sollte das erst später in meiner GUI dran kommen.... aber das macht ja nix.

Edit3:
Was ist denn deiner Meinung so schwer an einem TEdit ? Bei einem Memo OK ! Aber bei einem TEdit wenn es nur um eine Zeile gehen soll ?
MFG
Michael Springwald

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Edit ist das selbe wie ein memo halt nur einzielig.
Denk mal an Markieren z.b.
Komplette Integration der Zwischenablage.
Editieren.
Cursor zeichnen.
Da fällt ne menge mist an.
Und das alles so das es ausschaut und sich verhält wie in den nativen Widgetsets.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Wenn jedes Zeichen ein Objekt ist ist das kein Problem.

Zwischenablage sollte auch kein Problem dastellen.
Cursor ? warum ist das ein Problem ?
ich habe beim Cursor immer nur Problem ihn nach unten oder Oben zu verschieben mit den Pfeiltasten.

ja da fällt eine menge mist an, aber das ist nun mal so.....

Es ist aufwendig ja, aber nicht schwer.
Also bitte.... du musst bei der Zwischenablage doch einfach nur strg+v oder +c oder + x abfangen, wobei es gibt ja auch noch strg+ Einfg oder so ähnlich aus Dos zeiten.

Wir könnten uns ja die Arbeit teilen. Dann macht es bestimmt mehr Spaß und auch mehr Sinn. Was meinst du ?

Evlt. könnten wir das sogar in meiner GUI mit einbauen. Das währe nicht schlecht !
MFG
Michael Springwald

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

was denn für ne GUI schon weider son nie endendes unterfangen ?
Pluto, du hast wirklich keine Ahnung was da dahinterseteht. Das mit deinen Objekten ist viel zu speicherfressend, langsam und aufwendig. Sowas muss optimal ablaufen.
Ich hab keine Zeit und Lust auf sonen Kram.
Nur mal so das Wine Projekt versucht seit 6 jahren ein RTF Control zu erstellen das Windows kompatibel ist. Und das Windows RTF Control kann nicht sonderlich viel. Das vom Wine erstellte kann noch nicht mal 80% von dem was das Windows Control kann. Und die leute haben die Winapi quasi auf Linux umgehoben. Und nun kommt n kleiner Hauptschüler daher und erzählt er kann das selbe in n paar Stunden machen. Entweder du machst endlich und zwar richtig oder du vergisst das endlich.
Und zu deiner GUI, FpGUI gibt es schon und das wird meiner Meinung nach auch nicht viel genutzt werden. Die nativen Widgetsets passen sich viel besser ins System ein.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Antworten