![]() |
Vereinfachen von Quellcode?
Gibt es hierfür eine einfachere Lösung?
Delphi-Quellcode:
Muss ich diesen Ablauf für alle Synedits schreiben,
begin
if PageControl1.ActivePage = TabSheet1 then SynEdit1.Undo; if PageControl1.ActivePage = TabSheet2 then SynEdit2.Undo; if PageControl1.ActivePage = TabSheet3 then SynEdit3.Undo; ..........usw. end; oder kann man das irgendwie kürzen? THX: Grolle |
Re: Vereinfachen von Quellcode?
das sieht nach einer onKeyDown-Behandlung aus - wenn ja, dann übergibt sie Dir den Sender - den nach Synedit casten und gut. sonst (wenn das ein ButtonPush ist), solltest Du die Synedits in einer TList speichern - dann kannst Du über den Index zugreifen.
Gruß |
Re: Vereinfachen von Quellcode?
Delphi-Quellcode:
Und das in eine schleife einbauen
(FindComponent('SynEdit'+IntToStr(numer)) as TSynEdit).Undo
|
Re: Vereinfachen von Quellcode?
Delphi-Quellcode:
begin
case PageControl1.ActivePageIndex of 0 : SynEdit1.Undo; 1 : SynEdit2.Undo; 2 : SynEdit3.Undo; end; end; |
Re: Vereinfachen von Quellcode?
du könntest TabShee1, TabSheet2, usw... in ein Array packen und SynEdit1, SynEdit2, ... in ein zweites Array packen.
und dann das ganze mit einer for-Schleife durchgehen.
Delphi-Quellcode:
for i:=0 to Length(TabSheet_array)-1 do
begin if PageControl1.ActivePage = TabSheet_array[i] then SynEdit_array[i].Undo; end; |
Re: Vereinfachen von Quellcode?
Klasse! Danke für eure Antworten! :corky:
Grolle |
Re: Vereinfachen von Quellcode?
habe diesen beitrag durch die suchfunktion gefunden :)
ich habe gerade auch ein Problem mit undo bei SynEdit wenn man in ein SynEdit per hand schreibt dann kann man: SynEdit1.undo; nutzen und es funktioniert auch :) allerdings füge ich bei mir das ganze mittesl: SynEdit1.Lines.Add('text'); ein, und da funktioniert es nicht hat jemand eine idee was ich da falsch gemacht hab ? bzw wie ich das am besten realisieren kann ? |
Re: Vereinfachen von Quellcode?
Moin
Du kannst versuchen, davor ein
Delphi-Quellcode:
und danach ein
SynEdit.BeginUndo;
Delphi-Quellcode:
oder so in der Art, zu schreiben. Wenn du allerdings etwas machst wie SynEdit.Text := ... geht das leider nicht.
SynEdit.EndUndo;
|
Re: Vereinfachen von Quellcode?
Delphi-Quellcode:
geht leider nicht:
SynEdit1.BeginUndo;
SynEdit1.Lines.Add(sprachvar) ; SynEdit1.EndUndo; [Fehler] Unit1.pas(138): Undefinierter Bezeichner: 'BeginUndo' [Fehler] Unit1.pas(140): Undefinierter Bezeichner: 'EndUndo' |
Re: Vereinfachen von Quellcode?
Hi,
sorry, hatte es nicht mehr im Kopf, es muss
Delphi-Quellcode:
heißen. Aber das sagt dir auch die Codevervollständigung. :roll:
SynEdit1.BeginUndoBlock;
// ... SynEdit1.EndUndoBlock; |
Re: Vereinfachen von Quellcode?
nee das geht auch nicht genau wie bei deinem Problem damals was ich gerade gefunden hatte :D ;)
![]() wie hast du das denn da gelöst gehabt ? SynEdit1.BeginUndoBlock; // ... SynEdit1.EndUndoBlock; geht auch nicht genau wie Form1.SynEdit1.UndoList.BeginBlock; Form1.SynEdit1.Text := StringReplace(Form1.SynEdit1.Text, Edit1.Text, Edit2.Text, [rfReplaceAll]); Form1.SynEdit1.UndoList.EndBlock; aus deinem anderen thread |
Re: Vereinfachen von Quellcode?
Zitat:
|
Re: Vereinfachen von Quellcode?
also mit anderen worten ich kann meine undo-funktion vergessen ?
ich habe hier schon nen 52-seitiges undo turt gesehen, aber beim besten willen das ist mir zu lang, muß doch irgendwie einfacher gehen :D |
Re: Vereinfachen von Quellcode?
|
Re: Vereinfachen von Quellcode?
das ist genau dieses 52-seitige teil was ich meinte :D
hatte ich inzwischen auch schonmal versucht zu installieren, aber trotz keiner fehlermeldung gibt es keine komponenten die demos die es da gibt kann mann zwar öffnen aber da sind dann ur ca 20 zeilen code drinn und ohne form ist also nichts für mich sondern wohl eher was für hardcode-delphi-schrauber :D |
Re: Vereinfachen von Quellcode?
habe jetzt eine notlösung gefunden wie man ein einfaches undo / redo hinbekommt, ist aber nicht wirklich zufriedenstellend :(
man nehme noch 2 zusätzliche SynEdits und setze diese auf visible := false diese werden dann als zwischenspeicher verwendet mit den undo und redo buttons wird dann dieser code ausgeführt
Delphi-Quellcode:
die beiden buttons immer abwechselnd enabled oder disabled
// Undo
procedure TForm1.ToolButton7Click(Sender: TObject); begin SynEdit3.Lines := SynEdit1.Lines; // aktueller text sichern SynEdit1.Lines := SynEdit2.Lines; // backup einfügen SynEdit2.Lines := SynEdit3.Lines; // backup durch aktuellen text ersetzen ToolButton7.enabled := false; ToolButton9.enabled := true; end; // Redo procedure TForm1.ToolButton9Click(Sender: TObject); begin SynEdit3.Lines := SynEdit1.Lines; // aktueller text sichern SynEdit1.Lines := SynEdit2.Lines; // backup zurückschreiben SynEdit2.Lines := SynEdit3.Lines; // backup durch aktuellen text ersetzen ToolButton7.enabled := true; ToolButton9.enabled := false; end; beim schreiben neuer zeilen wird vor den einfügen immer SynEdit2.Lines := SynEdit1.Lines; gemacht um den aktuellen zwischenspeicher zu lesen sowie der redobutton aus und der undo button eingeschaltet ToolButton9.enabled := false; ToolButton7.enabled := true; vielleicht hilft es ja einen der das topic durch die suche findet ;) |
Re: Vereinfachen von Quellcode?
Zitat:
*blacklist vorkramt* |
Re: Vereinfachen von Quellcode?
Hallo,
ich hab ![]() Gruß xaromz |
Re: Vereinfachen von Quellcode?
Zitat:
Als Zwischenspeicher könntest du auch zwei TStringLists nutzen, wenn du das so lösen magst. |
Re: Vereinfachen von Quellcode?
Zitat:
normalerweise programmiere ich in php in verbindung mit mysql aber was hat das jetzt mit den zwischenspeichern zu tun ? var tttt : tstrings; hat es nicht getan, deswegen habe ich reale SynEdits genommen :D @ xaromz thx ich schaue mal @ Matze da stande ich dann wohl neben mir, hatte nicht TStringLists versucht sondern tstrings und das hatte nicht funktioniert |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:42 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 by Thomas Breitkreuz