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
Thema durchsuchen
Ansicht
Themen-Optionen

Memo-Schriftgröße verändern per Tastenkombination

Ein Thema von devidespe · begonnen am 9. Mär 2018 · letzter Beitrag vom 12. Mär 2018
Antwort Antwort
Seite 1 von 2  1 2      
devidespe

Registriert seit: 7. Sep 2006
Ort: Berlin
434 Beiträge
 
Delphi 10.4 Sydney
 
#1

Memo-Schriftgröße verändern per Tastenkombination

  Alt 9. Mär 2018, 17:39
Hallo,

ich möchte gerne die Möglichkeit schaffen, die Schriftgröße in einem Memo per Tastenkombination zu vergrößern bzw. verkleinern.

Zum Vergrößern habe ich Strg + (Plus Nummernblock) vorgesehen, zum Verkleinern Strg - (Minus Nummernblock).

Mein erster Ansatz war eine ActionList, aber leider existiert bei den ShortCuts diese Tastenkombination nicht.

Sicher könnte ich zwei Buttons erstellen, die die gleiche Funktionalität haben, aber aus Platzgründen wollte ich das gerne per Tastenkombination lösen.

Hat jemand evtl. eine Idee, wie ich das elegant hinbekomme? Danke für Eure Antworten...
Devid
57 65 72 20 6C 65 73 65 6E 20 6B 61 6E 6E 2C 20 69 73 74 20 6B 6C 61 72 20 69 6D 20 56 6F 72 74 65 69 6C 21
  Mit Zitat antworten Zitat
Delphi.Narium

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

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

  Alt 9. Mär 2018, 17:54
Actionlist + Shortcut ist schon ok.

Nur die von Dir gewählte Tastenkombination funktioniert nicht.

Strg++ und Strg+- klappen nicht in jedem Kontext.

Im Objektinspektor kann man beim Shortcut das Gewünschte eingeben, auch wenn es nicht in der Auswahlliste enthalten ist.

strg+umsch+alt++ oder strg+umsch+alt+- sollte eingegeben werden können, nur ob's auch funktioniert, weiß ich nicht.

Für die Vergrößerung bzw. die Verkleinerung der Schrift hab' ich mir angewöhnt Strg+F11 bzw. Strg+F12 zu nehmen und das einheitlich bei allen meinen Programmen. Funktioniert klaglos.
  Mit Zitat antworten Zitat
Amateurprofi

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

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

  Alt 10. Mär 2018, 02:50
Ich mache solche Sachen gerne im Form.OnShortcut.

Beispiel:
Delphi-Quellcode:
procedure TMain.FormShortCut(var Msg: TWMKey; var Handled: Boolean);
var Key:TShortCut; Shift:TShiftState;
begin
   Shift:=[ssShift,ssCtrl,ssAlt]*KeyDataToShiftState(Msg.KeyData);
   Key:=Msg.CharCode;
   if Shift=[ssCtrl] then begin
      case Key of
         VK_Add : ShowMessage('Plus');
         VK_Subtract : ShowMessage('Minus');
         else Exit;
      end;
      Handled:=True;
   end;
end;
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.685 Beiträge
 
Delphi 11 Alexandria
 
#4

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

  Alt 10. Mär 2018, 10:28
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.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Amateurprofi

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

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.415 Beiträge
 
Delphi 7 Professional
 
#6

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.685 Beiträge
 
Delphi 11 Alexandria
 
#7

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.415 Beiträge
 
Delphi 7 Professional
 
#8

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.685 Beiträge
 
Delphi 11 Alexandria
 
#9

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
 
#10

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
Antwort Antwort
Seite 1 von 2  1 2      


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 22:23 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz