![]() |
Einfügen in SynEdit geht nicht
Also, ich hab nen Button der ein neues TabSheet mit einem SynEdit erstellt, doch da geht die einfügen funktion (auch STRG+V) nicht.
Delphi-Quellcode:
var
ts: TTabSheet; se: TSynEdit; fn: TFileName; begin ts := TTabSheet.Create(PageControl1); ts.PageControl := PageControl1; if fn = '' then ts.Caption := Format('Tabelle [%d]', [PageControl1.PageCount]) else ts.Caption := ExtractFileName(fn); ts.Hint := fn; se := TSynEdit.Create(ts); se.Parent := ts; se.Align := alClient; se.ActiveLineColor:= $00FFFF80; se.Gutter.ShowLineNumbers:= TRUE; if fn = '' then se.Lines.Clear else se.Lines.LoadFromFile(fn); Files.AddObject(fn, se); PageControl1.ActivePage := ts; se.SetFocus; end; |
Re: Einfügen in SynEdit geht nicht
Guten Morgen,
das SynEdit Control kommt prima mit den ClipBoard-ShortCuts zurecht, wenn du es nur zulassen würdest:
Delphi-Quellcode:
Mit diesem Code für dein MenuItem Einfgen1 und die Zuordnung des ShortCut Strg+V hast du effektiv alle Einfüge-Operationen auf deine Komponente SynEdit umgeleitet. Strg+V funktioniert dann auch nicht mehr in den anderen Edit Controls deiner Form.
procedure TForm1.Einfgen1Click(Sender: TObject);
begin SynEdit.PasteFromClipboard; end; Es gibt jetzt zwei Wege für dich aus dem Dilemma. Du schickst die abgefangene Nachricht an das richtige Control weiter:
Delphi-Quellcode:
Oder du fügst die entsprechenden Standardaktionen aus dem Abschnitt Bearbeiten in deine ActionList ein und weist diese Actions deinen entsprechenden MenuItems zu.
procedure TForm1.Einfgen1Click(Sender: TObject);
begin SendMessage(GetFocus, WM_PASTE, 0, 0); end; Grüße vom marabu |
Re: Einfügen in SynEdit geht nicht
Danke funtzt prima, doch das Kopieren geht auch nicht, soll ich nen Theard machen oder wirds auch hier beantwortet ?
|
Re: Einfügen in SynEdit geht nicht
Mit den anderen ClipBoard-Funktionen ist es das gleiche Problem.
Du musst einfach die Lösung übertragen und anpassen. |
Re: Einfügen in SynEdit geht nicht
So habs jetzt, doch ich bekomm es noch für alles Markieren und Ausschneiden hin.
Delphi-Quellcode:
SendMessage(GetFocus, WM_SelectAll, 0, 0);
Delphi-Quellcode:
Weiß einer Rat ?
SendMessage(GetFocus, WM_, 0,ClearSelection 0);
|
Re: Einfügen in SynEdit geht nicht
Zum "Ausschneiden" verwendest du die Nachricht WM_CUT, aber in deinem Menü habe ich "Markierten Text löschen" gesehen und dazu verwendest du WM_CLEAR. In beiden Fällen wird der markierte Text entfernt, bei WM_CUT aber zusätzlich in die Zwischenablage kopiert.
Hinter "Alles markieren" steht die Message EM_SETSEL, aber leider wird diese Nachricht laut message prefix nur von Edit Controls verstanden - und SynEdit ist kein Edit-Control. Da hilft nur eine Fallunterscheidung:
Delphi-Quellcode:
procedure TForm1.AllesMarkieren1Click(Sender: TObject);
var wc: TWinControl; begin wc := FindControl(GetFocus); if wc is TSynEdit then TSynEdit(wc).SelectAll else SendMessage(wc.Handle, EM_SETSEL, 0, -1); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:07 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-2025 by Thomas Breitkreuz