Zwischen 2 SynEdit Zeilen kopieren
Zwischen 2 SynEdit Zeilen kopieren
Habe 2 SynEdits und möchte diese laufend vergleichen ist ein Unterschied soll die Statusleiste von grün auf rot wechseln die Zeilennummer und Position ausgegeben werden;
Ich habe da so Probleme wie Wie kann ich die aktuelle Länge des SynEdit.Lines abfragen (Zeilenanzahl)
Vielleicht hat jemand so Beispiele in seiner Ablage
Danke !!
Ich habe da so Probleme wie Wie kann ich die aktuelle Länge des SynEdit.Lines abfragen (Zeilenanzahl)
Vielleicht hat jemand so Beispiele in seiner Ablage
Danke !!
Win 7 FPC 3.2.0 Laz 2.0.12
Re: Zwischen 2 SynEdit Zeilen kopieren
Robologe hat geschrieben: Ich habe da so Probleme wie Wie kann ich die aktuelle Länge des SynEdit.Lines abfragen (Zeilenanzahl)
Code: Alles auswählen
SynEdit1.Lines.Count;
Re: Zwischen 2 SynEdit Zeilen kopieren
Danke für die Info
Es steht schon wieder die nächste Frage an
Wie kann ich von zwei Synedit Fenster ; wenn ich im linken nach unten scrolle das zweite mitscrollen lassen
Es steht schon wieder die nächste Frage an
Wie kann ich von zwei Synedit Fenster ; wenn ich im linken nach unten scrolle das zweite mitscrollen lassen
Win 7 FPC 3.2.0 Laz 2.0.12
Re: Zwischen 2 SynEdit Zeilen kopieren
Danke für die Info
Es steht schon wieder die nächste Frage an
Wie kann ich von zwei Synedit Fenster ; wenn ich im linken nach unten scrolle das zweite mitscrollen lassen
Es steht schon wieder die nächste Frage an
Wie kann ich von zwei Synedit Fenster ; wenn ich im linken nach unten scrolle das zweite mitscrollen lassen
Win 7 FPC 3.2.0 Laz 2.0.12
Re: Zwischen 2 SynEdit Zeilen kopieren
Abgleichen kann man sie so:
Das Problem ist, das Scroll Event mitzukriegen. Ich würde vllt. der Einfachheit halber einen TTimer dafür nehmen.
Code: Alles auswählen
Synedit2.TopLine:=Synedit1.TopLine;
Re: Zwischen 2 SynEdit Zeilen kopieren
In einem Projekt benötigte ich gleichscrollende TStringGrids. Dort habe ich das so gemacht (nur unter Windows getestet):
Eine eigene Komponente (man kann aber auch den Typ TStringGrid im eigen Formular überschreiben):
Im Formular:
Mit einem Synedit kann man das sicherlich ähnlich machen.
Eine eigene Komponente (man kann aber auch den Typ TStringGrid im eigen Formular überschreiben):
Code: Alles auswählen
type
TScrollStringGrid = class(TStringGrid)
private
FOnScroll: TNotifyEvent;
public
procedure WndProc(var TheMessage: TLMessage); override;
published
property OnScroll: TNotifyEvent read FOnScroll write FOnScroll;
end;
...
procedure TScrollStringGrid.WndProc(
var TheMessage: TLMessage);
begin
case TheMessage.Msg of
{LM_HSCROLL, }LM_VSCROLL:
if not (csDesigning in ComponentState) and
Assigned(FOnScroll) then FOnScroll(Self);
end;
inherited WndProc(TheMessage);
end;
Code: Alles auswählen
type
TForm1 = class(TForm)
...
private
FScrollUpdating: Boolean;
end;
...
procedure TForm1.GridScroll(Sender: TObject);
begin
if Assigned(Sender) then
Application.QueueAsyncCall(@ScrollGrid, PtrInt(Sender));
end;
procedure TForm1.ScrollGrid(Data: PtrInt);
var
SG: TStringGrid;
begin
if csDesigning in ComponentState then Exit;
if csDestroying in ComponentState then Exit;
if FScrollUpdating then Exit;
FScrollUpdating := True;
SG := TStringGrid(TObject(Data));
if Assigned(SG) then begin
ScrollGrid1.TopRow := SG.TopRow;
ScrollGrid1.Row := SG.Row;
ScrollGrid2.TopRow := SG.TopRow;
ScrollGrid2.Row := SG.Row;
end;
FScrollUpdating := False;
end;
Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;
-
- Beiträge: 586
- Registriert: Mi 25. Mär 2009, 21:12
- OS, Lazarus, FPC: Laz trunk / fpc latest release / Win and other
- CPU-Target: mostly 32 bit
Re: Zwischen 2 SynEdit Zeilen kopieren
SynEdit.OnStatusChanged wird fuer topline changes getriggered.theo hat geschrieben:Abgleichen kann man sie so:
Das Problem ist, das Scroll Event mitzukriegen. Ich würde vllt. der Einfachheit halber einen TTimer dafür nehmen.Code: Alles auswählen
Synedit2.TopLine:=Synedit1.TopLine;
Code: Alles auswählen
property OnStatusChange: TStatusChangeEvent
TStatusChangeEvent = procedure(Sender: TObject; Changes: TSynStatusChanges)
of object;
TSynStatusChange = (scCaretX, scCaretY,
scLeftChar, scTopLine, scLinesInWindow, scCharsInWindow,
scInsertMode, scModified, scSelection, scReadOnly,
scFocus, // received or lost focus
scOptions // some Options were changed (only triggered by some optinos)
);
Code: Alles auswählen
procedure RegisterStatusChangedHandler(AStatusChangeProc: TStatusChangeEvent; AChanges: TSynStatusChanges);
procedure UnRegisterStatusChangedHandler(AStatusChangeProc: TStatusChangeEvent);
Re: Zwischen 2 SynEdit Zeilen kopieren
Ah, dann ist das die Lösung. Wusste ich nicht.martin_frb hat geschrieben:SynEdit.OnStatusChanged wird fuer topline changes getriggered.theo hat geschrieben:Abgleichen kann man sie so:
Das Problem ist, das Scroll Event mitzukriegen. Ich würde vllt. der Einfachheit halber einen TTimer dafür nehmen.Code: Alles auswählen
Synedit2.TopLine:=Synedit1.TopLine;