Autor Beitrag
ShadowThief
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 278



BeitragVerfasst: Di 09.12.03 16:00 
da ich in meinem RichEdit-feld bei jedem onKeyUp-event eine überprüfung auf Lines.Text mache und bei bestimmten wörtern per SelStart und SelLength text-attribute setze (syntax hilighting) habe ich ein problem.

von der geschwindigkeit her ist es in ordnung, jedoch flimmert die textauswahl, was ziemlich unschön aussieht. gibt es die möglichkeit ein zeichnen der richedit-komonente zu verhindern?

danke im vorraus.

shadow.

_________________
"soylent grün ist menschenfleisch!"
CenBells
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1547

Win 7
Delphi XE5 Pro
BeitragVerfasst: Di 09.12.03 16:26 
hallo,

hast du dich mal mit der Komponente SynEdit auseinandergesetzt? Die kann Syntax-high-lightning. Ich meine auch mal gelesen zu haben, daß die verschiedenste Vorlagen unterstützt.

Gruß
Ken

_________________
Eine Klasse beschreibt die Struktur und das Verhalten einer Menge gleichartiger Objekte.
ShadowThief Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 278



BeitragVerfasst: Di 09.12.03 16:36 
ich kenn die komponente, die kann ich aber leider nicht verwenden,
da mein chef in meinen programmen keine fremdkomponenten
haben will.

_________________
"soylent grün ist menschenfleisch!"
Chatfix
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1583
Erhaltene Danke: 10

Win 10, Win 8, Win 7, Win Vista, Win XP
VB.net (VS 2015), MsSQL (T-SQL), HTML, CSS, PHP, MySQL
BeitragVerfasst: Di 09.12.03 16:56 
Selbst wenn du das neuzeichnen verhindern könntest, wie wilst du dann das higlighting umsetzen?
Du könntest es z.b. so machen, das er nur bei jedem leerzeichen deinen Text formatiert...

_________________
Gehirn: ein Organ, mit dem wir denken, daß wir denken. - Ambrose Bierce
CenBells
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1547

Win 7
Delphi XE5 Pro
BeitragVerfasst: Di 09.12.03 17:17 
hallo,

gibt es für die eigenschaft lines vielleicht eine Methode namens beginupdate? Ich schau heute abend auch mal nach ob ich noch nen Quelltext dazu habe. Ich habe sowas auch mal gemacht.

Gruß
Ken

_________________
Eine Klasse beschreibt die Struktur und das Verhalten einer Menge gleichartiger Objekte.
ShadowThief Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 278



BeitragVerfasst: Mi 10.12.03 11:39 
ja, "beginupdate" gibt es in "lines", aber ich komm nicht ganz dahinter,
wie mir das helfen soll.

shadow.

_________________
"soylent grün ist menschenfleisch!"
Chatfix
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1583
Erhaltene Danke: 10

Win 10, Win 8, Win 7, Win Vista, Win XP
VB.net (VS 2015), MsSQL (T-SQL), HTML, CSS, PHP, MySQL
BeitragVerfasst: Mi 10.12.03 11:46 
Also ich kenn BeginUpdate auf VB.NET

Dort setzt du BeginUpdate, machst deine aktualisierungen (es wird nciht neugezeichnet) und wenn du fertig bist machst du EndUpdate (kann sein das es in Delphi anders heist) und dann wird neugezeichnet...

_________________
Gehirn: ein Organ, mit dem wir denken, daß wir denken. - Ambrose Bierce
ShadowThief Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 278



BeitragVerfasst: Mi 10.12.03 12:06 
das hab ich probiert, allerdings sieht man immernoch
die selektierungen aufflimmern (selstart, sellength). außer ich hab
irgendetwas falsch gemacht. hier mein code:

ausblenden volle Höhe Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
var
  s: string;
  starts, ends: array of Integer;
  p1, p2: Integer;
  l: Integer;
  i: Integer;
  selstart, sellength: Integer;

begin

  // Cursorpsoition speichern
  selstart := RichEdit.SelStart;
  sellength := RichEdit.SelLength;

  RichEdit.Lines.BeginUpdate;

  // Start- und Endpunkte von Steuerzeichen ermitteln ('[' und ']')
  s := RichEdit.Lines.Text;

  repeat
    p1 := Pos('[', s);

    if p1 <> 0 then
    begin

      p2 := Pos(']', s);

      if p2 <> 0 then
      begin

        l := Length(starts);

        SetLength(starts, l + 1);
        SetLength(ends, l + 1);

        starts[l] := p1;
        ends[l] := p2;

        s := StringReplace(s, '[', ' ', []);
        s := StringReplace(s, ']', ' ', []);

      end
      else
        p1 := 0;

    end;

  until p1 = 0;

  // Steuerzeichen fett machen.
  RichEdit.SelectAll;
  RichEdit.SelAttributes.Style := [];

  for i := 0 to Length(starts) - 1 do
  begin

    RichEdit.SelStart := starts[i] - 1;
    RichEdit.SelLength := ends[i] - starts[i] + 1;
    RichEdit.SelAttributes.Style := [fsBold];

  end;

  RichEdit.Lines.EndUpdate;

  // Cursorposition auf Urzustand zurücksetzen
  RichEdit.SelStart := selstart;
  RichEdit.SelLength := sellength;

end;


problematisch wird ab dem Kommentar "// Steuerzeichen fett machen".
RichEdit.SelectAll usw. flimmert.

_________________
"soylent grün ist menschenfleisch!"
Chatfix
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1583
Erhaltene Danke: 10

Win 10, Win 8, Win 7, Win Vista, Win XP
VB.net (VS 2015), MsSQL (T-SQL), HTML, CSS, PHP, MySQL
BeitragVerfasst: Mi 10.12.03 12:14 
Mach doch mal das BeginUpdate ganz am anfang, und das EndUpdate ganz zum schluss

_________________
Gehirn: ein Organ, mit dem wir denken, daß wir denken. - Ambrose Bierce
ShadowThief Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 278



BeitragVerfasst: Mi 10.12.03 13:44 
versteh ich jetzt zwar nicht, aber es funktioniert.
vielen dank.

shadow.

_________________
"soylent grün ist menschenfleisch!"
Chatfix
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1583
Erhaltene Danke: 10

Win 10, Win 8, Win 7, Win Vista, Win XP
VB.net (VS 2015), MsSQL (T-SQL), HTML, CSS, PHP, MySQL
BeitragVerfasst: Mi 10.12.03 13:46 
Na mit EndUpdate wird neu gezeichnet...
Da du nach dem neuzeichnen wieder etwas selektierst flackerts wieder *gg*

_________________
Gehirn: ein Organ, mit dem wir denken, daß wir denken. - Ambrose Bierce
ShadowThief Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 278



BeitragVerfasst: Mi 10.12.03 14:53 
ok

_________________
"soylent grün ist menschenfleisch!"