Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi TSynEdit Aktuelle Zeile Farbig (https://www.delphipraxis.net/79290-tsynedit-aktuelle-zeile-farbig.html)

Flom 19. Okt 2006 20:16


TSynEdit Aktuelle Zeile Farbig
 
Hallo,
Ich würde gerne mit einer TSynEdit die Aktuelle Zeile meines Editors anders Farbig darstellen... wie ist das möglich bzw. ist das überhaupt möglich?

Grüße Flom...

Balu der Bär 19. Okt 2006 20:17

Re: TSynEdit Aktuelle Zeile Farbig
 
Jedes Synedit verfügt über die Eigenschaft ActiveLineColor.

Flom 19. Okt 2006 20:21

Re: TSynEdit Aktuelle Zeile Farbig
 
danke für die schnelle antwort...
und wie kann ich die aktuelle zeilen nummer angeben wo ich mich gerade befinde?
Ich kann nur die gesamt angabe über count machen sollte ja auch die aktuelle möglich seien oder?

Die nächste frage wo ich denken würde es geht mit lenght wäre dann mit der zeichen ausgabe wie viel zeichen gerade in der zeile sind... aber darann will ich selber erst mal wieder knabbern!

Balu der Bär 19. Okt 2006 20:23

Re: TSynEdit Aktuelle Zeile Farbig
 
In CaretY steht die aktuelle Zeile, in der sich der Cursor befindet. Aber was hat das mit der farbigen Zeile zu tun? Setz einfach die Eigenschaft und dann ist die Zeile in der der Cursor steht automatisch eingefärbt. :gruebel:

Flom 19. Okt 2006 20:28

Re: TSynEdit Aktuelle Zeile Farbig
 
Nein ich habe in meinem Editor unten eine Taskleiste die zeigt wie bei Word die aktuelle Zeilen und später auch Zeichen anzahl als Zahlen dar... falls der User die Nummern rechts Ausgeschaltet hat weiß er dennoch in welcher Zeile er sich gerade befindet!

Balu der Bär 19. Okt 2006 20:31

Re: TSynEdit Aktuelle Zeile Farbig
 
Dann erstell dafür doch nächstes Mal einen neuen Thread, hat doch nichts mehr mit dem Einfärben einer Zeile zu tun.

Außerdem würde ich dir empfehlen mal einfachen ein bisschen mit dem SynEdit rumzuspielen, die Property ActiveLineColor hättest du z.B. durch einen einfachen Blick in den Objektinspektor gefunden. Sonst guck dir mal die Beispiele an und versuche die Dinge nachzuvollziehen, dass meiste findet man auch alleine raus. ;)

Flom 19. Okt 2006 20:36

Re: TSynEdit Aktuelle Zeile Farbig
 
das mit dem CaretY funkt nicht richtig wenn ich mit den Curser hoch gehe Passiert nichts erst wenn ich Enter drücke... sollt ich dafür dann Key Down und up... ?

und ja Balu ich werd demnächst dafür einen extra Thema auf machen dachte nur sonst sind alle gestresst weil ich so viel auf einmal frage und das mit der Aktiven Line hab ich wohl übersehen!

Balu der Bär 19. Okt 2006 20:38

Re: TSynEdit Aktuelle Zeile Farbig
 
Zitat:

Zitat von Flom
sollt ich dafür dann Key Down und up... ?

Zum Beispiel, wäre schonmal ein Anfang.

Btw, vielleicht kann ein freundlicher Moderator das Topic ja auch einfach splitten. :stupid:

Flom 19. Okt 2006 21:07

Re: TSynEdit Aktuelle Zeile Farbig
 
Hallo nochmal...
Ich bekomms mit dem OnKeyDown nicht hin was mach ich falsch?
Delphi-Quellcode:
procedure TForm1.CodeChange(Sender: TObject);
var zeile:string;
begin
 zeile:='Zeile '+IntToStr(Code.CaretY); //liegt es vielleicht hier ran?

 Code.SetFocus;
 Code.ActiveLineColor:=$00E5E5E5;
 Code.OnKeyDown:=zeile; //ich kann hier ja nicht das Panel noch mal Aufrufen irgend eine andere lösung?
 Code.OnKeyUp:=zeile; //ich kann hier ja nicht das Panel noch mal Aufrufen irgend eine andere lösung?
 Statusbar1.Panels[1].Text:=zeile;
 Code.SetFocus;
end;

Martin K 19. Okt 2006 22:04

Re: TSynEdit Aktuelle Zeile Farbig
 
Ich versuche jetzt mal, deinen Code nachzuvollziehen:
Code ist also dein TSynEdit (nehme ich mal an), aber warum willst Du dem Ereignis OnKeyDown/OnKeyUp einen String zuweisen??? (zeile hast du ja als String definiert)
Was bitte soll das werden?

OnKeyDown/OnKeyUp sind Prozeduren, die ausgeführt werden, wenn der Benutzer eine Taste drückt bzw. loslässt.

Mal ne Frage:
Weißt Du was der Objektinspektor ist?

Wenn ja, dann verwende mal unter Ereignisse das Event OnKeyUp, dann sollte diese Prozedur erscheinen die Du mit deinem Code füllst, das sieht dann in etwa so aus:
Delphi-Quellcode:
procedure TForm1.CodeKeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  Statusbar1.Panels[1].Text:='Zeile '+IntToStr(Code.CaretY);
  //ActiveLineColor würde ich auch im ObjektInspektor setzen, im OnChange-Ereignis ist dies wohl äußerst ineffizient
  //auch die restlichen Befehle kannst du weglassen, SetFocus ergibt hier keinen Sinn
end;
OnChange wird nur ausgelöst, wenn ein Zeichen eingegeben wird, also ein Buchstabe oder Enter - wenn Du den Cursor bewegst gibst Du ja nix im SynEdit ein, also wird auch nicht das Ereignis OnChange ausgelöst.
Das Ereignis OnKeyDown/OnKeyUp wird dagegen bei jedem Tastendruck ausgelöst, also auch wenn z.B. die Pfeiltasten gedrückt werden.
Jetzt kann man die Zeile natürlich auch ändern, wenn man mit der Mouse an eine bestimmt Stelle klickt - dafür gibt es dann das Ereignis OnClick - dort schreibst Du dann am besten das gleiche rein, wie bei OnKeyUp.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:00 Uhr.
Seite 1 von 2  1 2      

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