Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Aktuelle Zeile im Memo farblich hervorheben (wie in BDS) (https://www.delphipraxis.net/59792-aktuelle-zeile-im-memo-farblich-hervorheben-wie-bds.html)

Nils_13 28. Dez 2005 18:03


Aktuelle Zeile im Memo farblich hervorheben (wie in BDS)
 
Hi,

wie kann ich/kann ich überhaupt in einem Memo die aktuelle Zeile (--> also die Zeile in der ich mich befinde) farblich hervorheben ? [Wie in Delphi 2006]

Khabarakh 28. Dez 2005 18:06

Re: Aktuelle Zeile im Memo farblich hervorheben (wie in BDS)
 
Alles selber zeichnen :wink: . AFAIR gibt es aber eine passende Property beim SynEdit.

Nils_13 28. Dez 2005 18:41

Re: Aktuelle Zeile im Memo farblich hervorheben (wie in BDS)
 
Wo und vorallem welche Unit ? Dann könnte ich es mir ja evtl. ableiten.

Nils_13 29. Dez 2005 10:42

Re: Aktuelle Zeile im Memo farblich hervorheben (wie in BDS)
 
Dann halt anders:
Delphi-Quellcode:
  SelectedSheet := Pages.ActivePage;
  with TExtendedTabSheet(SelectedSheet) do
  begin
    with fMemo.CaretPos do
    Edit2.Text := Format('(%d, %d)',[X+1,Y+1])
  end;
So finde ich die Caret-Position heraus. X ist die X-Position und Y- ist die Zeile (also die Y-Position). Ich muss jetzt nur wissen, wie ich die Farbe einer Spalte verändern kann.

Hansa 29. Dez 2005 11:06

Re: Aktuelle Zeile im Memo farblich hervorheben (wie in BDS)
 
Mache das mit einer Listbox und fertig. Beim Memo wirds zu kompliziert, dem das beizubringen.

Doch noch auf die Schnelle gefunden :
Delphi-Quellcode:
    if Index mod 2 = 0 then begin
      Listbox1.Canvas.Brush.Color := clYellow;
      Listbox1.Canvas.FillRect(Rect);
      Listbox1.Canvas.TextOut(Rect.Left, Rect.Top, Listbox1.Items[Index]);
    end
    else
      Listbox1.Canvas.TextOut(Rect.Left, Rect.Top, Listbox1.Items[Index]);
Das färbt jede zweite Zeile gelb.

jim_raynor 29. Dez 2005 11:10

Re: Aktuelle Zeile im Memo farblich hervorheben (wie in BDS)
 
Zitat:

Zitat von Hansa
Mache das mit einer Listbox und fertig. Beim Memo wirds zu kompliziert, dem das beizubringen.

Nur das man damit nicht den Text bearbeiten kann :lol:. Und darum gehts doch vermutlich Nils.

Hansa 29. Dez 2005 11:22

Re: Aktuelle Zeile im Memo farblich hervorheben (wie in BDS)
 
Man sollte auch sagen, was man will. Raterei alleine nützt nichts. Ein Memo hat nun mal kein Canvas. Deshalb wirds kompliziert. IMHO für den Zweck viel zu kompliziert. Ich würde da jetzt auch nicht mit dem Holzhammer rumhantieren und irgend was "passend" machen. Kann man in eine ListBox nichts eingeben ? Ist auch egal, es gibt Komponenten genug. Dann soll er eben ein Stringgrid mit einer Spalte nehmen. Da geht das alles definitiv !

St.Pauli 29. Dez 2005 11:29

Re: Aktuelle Zeile im Memo farblich hervorheben (wie in BDS)
 
Warum benutzt du nicht einfach TSynEdit oder TSynMemo? Beide Komponenten haben die Property unter ActiveLineColor. Was hält dich am Memo?

Nils_13 30. Dez 2005 09:37

Re: Aktuelle Zeile im Memo farblich hervorheben (wie in BDS)
 
Ich kann keine ListBox nehmen. Der Sinn ist ja, das man was man will frei eintippen kann. SynEdit und SynMemo gehen nicht, da ich einen eigenen Typen von einem Memo für meinen Highlighter habe, ist auch nicht so umständlich wie mit dem SynEdit.

PierreB 30. Dez 2005 09:49

Re: Aktuelle Zeile im Memo farblich hervorheben (wie in BDS)
 
Die SynEdit-Komponenten sind doch relativ einfach anzuwenden, und schwieriger als einem Memo farbige Zeilen beizubringen garantiert nicht. ;)

marabu 30. Dez 2005 09:49

Re: Aktuelle Zeile im Memo farblich hervorheben (wie in BDS)
 
Hallo Nils,

warum willst du unbedingt ein Memo verwenden? Der Aufwand einem Memo Zeichenformate beizubringen wäre mir viel zu hoch - und außerdem hat das schon jemand gemacht: Herausgekommen ist dabei die Komponente TRichEdit. Wenn dir der Umgang mit TSynEdit schwer fällt, dann ist TRichEdit doch ein guter Kompromiss.

Grüße vom marabu

Nils_13 30. Dez 2005 09:52

Re: Aktuelle Zeile im Memo farblich hervorheben (wie in BDS)
 
Es läuft aber alles. Ich habe einfach keine Lust einen ellenlangen Code anzupassen. Das ableiten vom SynEdit macht mir da ein bisschen schwierigkeiten. Beim SynEdit kann man sich selbst einen Highlighter erstellen, aber bei meinem highlighter habe ich eine ListBox mit allem was markeirt werden soll, und ich kann es immer abändern.

jim_raynor 30. Dez 2005 10:02

Re: Aktuelle Zeile im Memo farblich hervorheben (wie in BDS)
 
Wenn du schon dein Memo selbst zeichnest ( http://www.delphipraxis.net/internal...ct.php?t=71531 ). Warum zeichnest du dann nicht einfach, den Hintergrund der aktiven Zeile mit einer anderen Farbe.

faux 30. Dez 2005 10:03

Re: Aktuelle Zeile im Memo farblich hervorheben (wie in BDS)
 
Zitat:

Zitat von Nils_13
Es läuft aber alles. Ich habe einfach keine Lust einen ellenlangen Code anzupassen.

Manchmal wird dir nichts anderes überbleiben und du musst mal einen Schritt zurück machen.

Ich kann mich irren, aber kann das TRichEdit nicht sowas?

Grüße
Faux

Nils_13 30. Dez 2005 11:00

Re: Aktuelle Zeile im Memo farblich hervorheben (wie in BDS)
 
Ja aber Memo hat einige Vorteile: Leichter zu bedienen, nicht so unübersichtlich (Opbjectinspector), highlighter einfacher, funktioniert.

mh166 30. Dez 2005 11:46

Re: Aktuelle Zeile im Memo farblich hervorheben (wie in BDS)
 
Zitat:

Zitat von Nils_13
Beim SynEdit kann man sich selbst einen Highlighter erstellen, aber bei meinem highlighter habe ich eine ListBox mit allem was markeirt werden soll, und ich kann es immer abändern.

Hmm... das klingt für mich, als ob du einen dynamischen Highlighter bauen willst, wo du zur Laufzeit auswählen kannst, was denn nun gehighlighted werden soll und was nicht...

Warum nimmst du also nicht einfach TSynUniSyn? Das Teil macht genau das, was du willst: du kannst zur Laufzeit die Tokens ändern, genauso wie deren Formatierung. Was will man mehr? ;)

mfg, mh166

faux 30. Dez 2005 11:49

Re: Aktuelle Zeile im Memo farblich hervorheben (wie in BDS)
 
Zitat:

Zitat von Nils_13
Ja aber Memo hat einige Vorteile: Leichter zu bedienen, nicht so unübersichtlich (Opbjectinspector), highlighter einfacher, funktioniert.

:lol: Also das ist wirklich das mit Abstand sinnfreiste Argument dass ich jemals gelesen hab...

Wieso soll RichEdit schwer zu bedienen sein? Funktioniert im Prinzip wie ein Memo. :gruebel:

Nils_13 30. Dez 2005 12:20

Re: Aktuelle Zeile im Memo farblich hervorheben (wie in BDS)
 
UniSyn kann ich nicht installieren, läuft einfach nicht, hab das ganze vor langer Zeit schon aufgegeben.

@faux: Ich meinte das SynEdit, das legt nur das Prrgramm lahm.

faux 30. Dez 2005 12:40

Re: Aktuelle Zeile im Memo farblich hervorheben (wie in BDS)
 
Zitat:

Zitat von Nils_13
@faux: Ich meinte das SynEdit, das legt nur das Prrgramm lahm.

Achso ok.

Zitat:

Zitat von Nils_13
UniSyn kann ich nicht installieren, läuft einfach nicht, hab das ganze vor langer Zeit schon aufgegeben.

Ich habs gearde Probiert: 2min. :D

Einfach die SynEdit_D7.dpk Installieren und den Source-Ordner in den Suchpfad übernehmen. Das wars.

EDIT: Hab mich verlesen.

Grüße
Faux

Nils_13 30. Dez 2005 12:43

Re: Aktuelle Zeile im Memo farblich hervorheben (wie in BDS)
 
Ich muss nur wissen, wie ich z.B. bei der Zeile 1 die Hintergrundfarbe abändern kann, die Zeile 1 wird dann noch durch die aktuelle Zeile ersetzt.

Nils_13 1. Jan 2006 11:13

Re: Aktuelle Zeile im Memo farblich hervorheben (wie in BDS)
 
Weiß das keiner von euch ? Wäre wirklich schade :(


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:40 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz