Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi "Alles markieren" mit 2 Memos (https://www.delphipraxis.net/96274-alles-markieren-mit-2-memos.html)

MCXSC 21. Jul 2007 02:31


"Alles markieren" mit 2 Memos
 
Hallo,

folgendes:

Ich habe mehrere Memos auf meiner Form (Bsp: Memo1, Memo2, Memo3).

Nun möchte ich, dass beim beim Drücken von z.B. Strg+A der komplette Text in dem aktuellen Memo markiert wird, bzw. nichts passiert, wenn der Cursor sich nicht in einem der Memo-Felder befindet.

Alledings habe ich es nicht hinbekommen und auch nicht wirklich etwas gefunden... Nun hoffe ich, dass mir hier jemand helfen kann...

Hf,
Marcel

Christian Seehase 21. Jul 2007 03:08

Re: "Alles markieren" mit 2 Memos
 
Moin Marcel,

die Eigenschaft KeyPreview des Formulares auf true setzen, und dann im OnKeyUp-Event des Formulares:

Delphi-Quellcode:
procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if (ActiveControl.ClassType <> TMemo) then Exit;
  if not (Shift = [ssCtrl]) then Exit;
  if Key = Ord('A') then (ActiveControl as TMemo).SelectAll;
end;

MCXSC 21. Jul 2007 03:54

Re: "Alles markieren" mit 2 Memos
 
Hey, das ging ja schnell :D

Ein riesen Dankeschön... Ich hab es irgendwie immer mit dem OnKeyPress versucht gehabt...

Jetzt kann ich ja beruhigt schlafen gehen... :D

Grüße,
Marcel

marabu 21. Jul 2007 11:12

Re: "Alles markieren" mit 2 Memos
 
Liste der Anhänge anzeigen (Anzahl: 1)
Moin ihr beiden,

jedes meiner GUI-Programme folgt dem CUA-Ansatz und hat deshalb eine ActionList und ein MainMenu. Da jedes Programm die Zwischenablage unterstützen muss, habe ich auch immer ein EditMenu als MainMenu-Item. Ein SubMenu-Item im EditMenu verknüpfe ich dann mit der Standardaktion TEditSelectAll und alles andere geschieht von selbst - keine Zeile eigener Code notwendig. Das Default-Kontextmenü der Memos braucht keine Behandlung, da dort der Befehl bereits enthalten ist. Dieser Ansatz funktioniert mit allen Komponenten, die von TCustomEdit abgeleitet wurden, wie auch z.B. TRichEdit.

Freundliche Grüße

MCXSC 21. Jul 2007 11:22

Re: "Alles markieren" mit 2 Memos
 
Ja, wie es geht ist schon klar.

Aber ich habe eben 3 Edit-Felder, und ich muss ja wissen, in welchem Memo der Cursor steht, da immer nur das markiert werden soll... Deswegen reicht ein Action Menü und die Zeile "Memo1.SelectAll" alleine nicht aus...

Und welches Default-Kontextmenü? oO

marabu 21. Jul 2007 12:20

Re: "Alles markieren" mit 2 Memos
 
Hi Marcel,

Zitat:

Zitat von MCXSC
Ja, wie es geht ist schon klar.

das glaube ich dir nicht.

Zitat:

Zitat von MCXSC
Aber ich habe eben 3 Edit-Felder, und ich muss ja wissen, in welchem Memo der Cursor steht, da immer nur das markiert werden soll...

Genau wegen dieser Aussage glaube ich dir nicht.

Die Demo hat drei Edit-Felder verschiedener Ausprägung und tut genau das was du willst, wenn ich deine Beschreibung in Beitrag #1 zu Grunde lege.

Zitat:

Zitat von MCXSC
Deswegen reicht ein Action Menü und die Zeile "Memo1.SelectAll" alleine nicht aus...

In der Demo gibt es keine einzige Zeile eigenen Code. Alles wird durch die beteiligten Komponenten selbst erledigt.

Zitat:

Zitat von MCXSC
Und welches Default-Kontextmenü? oO

Die Komponente TEdit kapselt ein Windows Edit Control und jedes Windows Control hat seine eigene Fensterklasse mit eigenem Window Class Menu, welches du über die property PopupMenu ersetzen kannst, aber in der Regel nicht musst.

Der Code von Chris funktioniert für dich, also bleibe dabei. Mein Beispiel dokumentiert eine "alternative" Vorgehensweise, die von Profis weltweit benutzt wird. Ich verwette meine letzten Haare, dass auch Chris diese Technik oft verwendet.

Freundliche Grüße


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