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 Frage zu SynEdit. (https://www.delphipraxis.net/23830-frage-zu-synedit.html)

werfux 10. Jun 2004 12:54


Frage zu SynEdit.
 
Hallo ich habe keine Ahnung ob ich jetzt mit meiner Frage in der richtigen Rubrik hier gelandet bin. Falls nicht, entschuldigt das bitte.

Also nun zu meiner Frage. Ich habe ein ganz einfache Projekt mit einem SynEdit EditirFeld und einer Statusleiste angelegt. Nun würde ich gerne die Courserposition in der Statausleiste anzeigen lassen. Mein bisheriger Quelletxt scheitert am umwandeln bzw. auslesen des Datentyps TSynStatusChange. Vielleicht wisst Ihr was ich falsch mache?


Hier der Code:

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, SynEdit;

type
  TForm1 = class(TForm)
    SynEdit1: TSynEdit;
    StatusBar1: TStatusBar;
    procedure SynEdit1Change(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  CharPos_x: TSynStatusChange;
  CharPos_y: TSynStatusChange;
implementation

{$R *.dfm}

procedure TForm1.SynEdit1Change(Sender: TObject);

var
 CharPos: TSynStatusChange;

begin
 CharPos := SynEdit.scCaretx;
 StatusBar1.Panels[0].Text :=Format('Ln %d', [CharPos[0]]);
end;

end.
[edit=Sharky]Delphi-Tags gesetzt. Einfach [*delphi] vor und [*/delphi] hinter den Code setzen (ohne die *) Mfg, Sharky[/edit]

Sharky 10. Jun 2004 13:09

Re: Frage zu SynEdit.
 
Zitat:

Zitat von werfux
Hallo ich habe keine Ahnung ob ich jetzt mit meiner Frage in der richtigen Rubrik hier gelandet bin....

Hai werfux,

ersteinmal "Herzlich Willkommen in der DelphiPRAXIS".

und Du bist in der richtigen Sparte ;-)

Ich habe das eben zum testen einfach mal so gemacht:
Delphi-Quellcode:
procedure TForm1.SynEdit1KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  StatusBar1.Panels[0].Text :=Format('Ln %d', [SynEdit1.CaretY]);
end;

procedure TForm1.SynEdit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  StatusBar1.Panels[0].Text :=Format('Ln %d', [SynEdit1.CaretY]);
end;
Also einfach im .OnKeyUp und OnKeyDown die Possition des Carets in der Statusbar anzeigen.

MrKnogge 10. Jun 2004 13:17

Re: Frage zu SynEdit.
 
ähm sharky, aber was machst du, wenn der Benutzer mit der Maus die Cursorposition wechselt ?

Moin werfux, folgenden Code verwende ich immer:

Delphi-Quellcode:
procedure TForm1.SynEdit1StatusChange(Sender: TObject;
  Changes: TSynStatusChanges);
begin
  if Changes * [scAll, scCaretX, scCaretY] <> [] then
  begin
    Statusbar1.Panels[1].Text := Format(' Zeile:%6d, Spalte: %3d',
    [SynEdit1.CaretY, SynEdit1.CaretX]);
  end;
end;

werfux 10. Jun 2004 13:19

DANKE
 
Danke damit kann ich schon eine Menge anfangen...

Sharky 10. Jun 2004 13:34

Re: Frage zu SynEdit.
 
Zitat:

Zitat von MrKnogge
ähm sharky, aber was machst du, wenn der Benutzer mit der Maus die Cursorposition wechselt ?...

Ihm die Maus klauen ;-)

Ne, Du hast ja recht. Das Nagetier am PC habe ich total vergessen.

phlux 10. Jun 2004 14:04

Re: Frage zu SynEdit.
 
Servus :hi:
Also ich mach es wie aus den Beispielen von SynEdit:
Eine TActionList auf die Form droppen, dann ein neues TAction Object erzeugen (Doppelklick auf die ActionList, dann Rechtsklick und neue Aktion wählen). Dann die Aktion passend benennen, jetzt die Aktion anklicken im OI bei den Events des Objekts von TAction das Event OnUpdate auswählen, doppelklick darauf und dann folgenden Code rein:
Delphi-Quellcode:
var
  Point: TPoint;

begin
  Point := Editor.CaretXY;
  StatusBar.Panels[0].Text := Format(' %6d:%3d ', [Point.Y, Point.X]);
end;
Wobei du das Feld bzw. noch den Namen an deine Statusbar anpassen musst ;)
Jetzt finalerweise noch die Statusbar anklicken, dann wieder im OI auf der Eventsleiste gehen und oben beim Feld Action unsere gerade frisch definierte Action auswählen, das wars :D jetzt dürfte sich alles von alleine Ändern, egal ob klicken, tasten oder sonst was ;)

mfg phlux :hi:

Störtebeker 14. Okt 2007 15:06

Re: Frage zu SynEdit.
 
Also bei mir funzt der Code nicht ganz.

Delphi meckert rum:

Zitat:

[ERROR]...: Incompatible types: 'TPoint' and 'TBufferCoord'
Delphi-Quellcode:
procedure TForm1.Action1Update(Sender: TObject);
var
  Point: TPoint;

begin
  Point := SynEdit1.CaretXY;
  StatusBar1.Panels[0].Text := Format(' %6d:%3d ', [Point.Y, Point.X]);
end;
mfG
Störtebeker

Die Muhkuh 14. Okt 2007 15:44

Re: Frage zu SynEdit.
 
Liegt vielleicht daran, das der Code schon 3 Jahre alt ist? ;-)

Störtebeker 14. Okt 2007 16:07

Re: Frage zu SynEdit.
 
Hast du vielleicht ne Ersatzlösung?

Sharky 14. Okt 2007 16:09

Re: Frage zu SynEdit.
 
Zitat:

Zitat von Störtebeker
Hast du vielleicht ne Ersatzlösung?

Hai Störebeker,

schaue doch mal nach was für einen Typ .CaretXY zurück gibt. Es scheint ja kein TPoint zu sein ;-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:22 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