AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Memo-Schriftgröße verändern per Tastenkombination

Memo-Schriftgröße verändern per Tastenkombination

Ein Thema von DevidEspenschied · begonnen am 9. Mär 2018 · letzter Beitrag vom 12. Mär 2018
Antwort Antwort
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.100 Beiträge
 
Delphi XE2 Professional
 
#1

AW: Memo-Schriftgröße verändern per Tastenkombination

  Alt 10. Mär 2018, 11:33
Noch eine Möglichkeit:

Delphi-Quellcode:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if (ssCtrl in Shift) and (chr(Key) in ['A', 'a']) then ShowMessage('Ctrl-A pressed!');
end;
Einfach ein KeyDown Event in deiner Edit-Komponente hinzufügen, den Key noch abändern und was dann passieren soll.
In diesem Beispiel, wer hätte es gedacht, wird nur auf STRG+A reagiert.
Und wenn das Memo gerade nicht den Fokus hat?
Deshalb lieber das KeyDown-Event der Form verwenden. Und Form.KeyPreview=True setzen.
Es ist auch nicht nötig auf 'a' zu prüfen, denn Key bezeichnet die Taste auf der Tastatur.
Und es ist nicht nur überflüssig sondern auch falsch.
Wenn nämlich Chr(Key)='a' ist, dann wurde die 1 auf dem Ziffernblock gedrückt.
Auch nur zu prüfen of ssCtrl in Shift enthalten ist, ist nicht ausreichend, bzw. führt zu vermutlich unerwarteten Ereignissen.
Stell dir vor du wolltest z.B. auf Ctrl-E reagieren.
Nun schreibst du deinen Text, und um ein '€' (Euro) zu tippen drückst du AltGr-E.
In dem Fall ist ssCtrl ebenfalls in Shift enthalten, denn AltGr ist ja im Prinzip [ssCtrl,ssAlt]
Aus diesem Grund: if [ssShift,ssCtrl,ssAlt]*Shift=[ssctrl] then ...
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.558 Beiträge
 
Delphi 7 Professional
 
#2

AW: Memo-Schriftgröße verändern per Tastenkombination

  Alt 10. Mär 2018, 12:01
Deshalb nehme ich für sowas 'ne TActionList. Da muss ich mir weder über Ereignisse noch das Wo noch irgendwelche Tastaturkombinationen und deren Nebenwirkungen Gedanken machen. Und es funktioniert im gesamten Programm.
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Memo-Schriftgröße verändern per Tastenkombination

  Alt 10. Mär 2018, 12:37
Bei mir reichen solche Befehle aus um ans Ziel zu kommen.
Was wenn "STRG"+"+" auch eine Neue Datei erstellen/öffnen soll wenn Memo nicht fokussiert ist?
Ich habs lieber auf diese Weise, bestimmt auch weil ich mich mit den TActionsList's nicht auskenne.
Kann die TActionsList doppelte Hotkeys verwalten, je nachdem was gerade den Fokus hat?
Ich komme bestimmt nochmal in einem eigenen Thread darauf zurück wenn ich soweit bin

Nachtrag, auf jedenfall ist es korrekt das ich keine weiteren Sicherungen eingebaut habe, daß kann man ja nun dank des Tipps nachholen (shit und alt tasten ausgrenzen)
Gruß vom KodeZwerg

Geändert von KodeZwerg (10. Mär 2018 um 12:39 Uhr)
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.558 Beiträge
 
Delphi 7 Professional
 
#4

AW: Memo-Schriftgröße verändern per Tastenkombination

  Alt 10. Mär 2018, 12:59
Einfach in der Ereignisroutine der Action abfragen, ob eine bestimmte Komponente den Focus hat und dementsprechend reagieren.

Nehmen wir an, wir haben zwei Actions für die Änderung der Schriftgröße. Bei der Action für die Schriftvergrößerung ist die Eigenschaft Tag auf 1 gesetzt und bei der Action für die Schriftverkleinerung ist die Eigenschaft Tag auf -1 gesetzt.
Delphi-Quellcode:
procedure TForm1.acSchritgroesseExecute(Sender: TObject);
begin
  if not Sender is TAction then Exit;
  if Memo1.Focused then begin
    Memo1.Font.Size := Memo1.Font.Size + TAction(Sender).Tag;
  end else
  if Memo2.Focused then begin
    Memo2.Font.Size := Memo2.Font.Size + TAction(Sender).Tag;
  end else
  if Memo3.Focused then begin
    Memo3.Font.Size := Memo3.Font.Size + TAction(Sender).Tag;
  end else begin
    Self.Font.Size := Self.Font.Size + TAction(Sender).Tag;
  end;
end;
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Memo-Schriftgröße verändern per Tastenkombination

  Alt 10. Mär 2018, 20:11
Danke Delphi.Narium für die neuen Erkenntisse (für mich neu).
Dank deinem Beispiel erübrigt sich meine Fragerei nach mehr Wissen und Dank .TAG feature sind jedenfalls bei mir alle Fragen wegen "Multi-Aufruf-Eines-Hotkeys-Per-TActionList" bestens geklärt, ich hoffe der TE ist auch glücklich mit dieser Lösung.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
FritzAT
(Gast)

n/a Beiträge
 
#6

AW: Memo-Schriftgröße verändern per Tastenkombination

  Alt 12. Mär 2018, 20:41
Es gibt da vielleicht nochwas...
Delphi-Quellcode:
procedure TMainForm.FormKeyDown(Sender:TObject; var Key:Word;Shift:TShiftState);
var FS: Integer;
begin
  // Strg und "+"
  if (ssCtrl in Shift) and (Key = vk_Add) then
  begin
    FS:= Memo.Font.Size; // akt. Fontsize
    if FS >= 18 then EXIT; // max. größe
    inc(FS, 2); // FontSize größe +2
    Memo.Font.Size:= FS;
    // ...
  end;
  // Strg und "-"
  if (ssCtrl in Shift) and (Key = vk_Subtract) then
  begin
    FS:= Memo.Font.Size; // akt. Fontsize
    if FS = 10 then EXIT; // min. Größe
    dec(FS, 2); // Fontsize -2
    // ...
  end;

Geändert von FritzAT (12. Mär 2018 um 20:48 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Memo-Schriftgröße verändern per Tastenkombination

  Alt 12. Mär 2018, 20:54
War das jetzt eine Frage oder eine Neue Erkenntis?
Du könntest Inc/Dec einsparen indem Du direkt "FS := Memo.Font.Size +2;" oder -2 angibst falls du nach einer Optimierung aus warst.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:30 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