AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TRichEdit: Mausrad-Zoom?

Ein Thema von PeterPanino · begonnen am 21. Sep 2024 · letzter Beitrag vom 21. Sep 2024
Antwort Antwort
PeterPanino

Registriert seit: 4. Sep 2004
1.465 Beiträge
 
Delphi 10.4 Sydney
 
#1

TRichEdit: Mausrad-Zoom?

  Alt 21. Sep 2024, 14:51
Hallo! Wie ich kürzlich durch Zufall entdeckt habe, kann ich im neuesten TRichEdit (Delphi 12, Windows 11, PlainText=True) bei gedrückter CTRL-Taste mit dem Mausrad (MouseWheel) zur Laufzeit den Text-Inhalt raus- und reinzoomen. (Ich weiß nicht, ob es dieses Mausrad-Zoom bei TRichEdit schon länger gibt). Dabei wird jedoch weder die Zoom-Eigenschaft noch der Font-Size des RichEdit-Controls verändert. Offensichtlich funktioniert diese Art von Zoom intern.

Weiß jemand, wie der Wert dieser Art von Zoom zum Zweck der Wiederherstellung ausgelesen werden kann?
Geändert von PeterPanino, damit der Platz auf dem Bildschirm nicht so leer aussieht.

Geändert von PeterPanino (21. Sep 2024 um 15:00 Uhr)
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.465 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: TRichEdit: Mausrad-Zoom?

  Alt 21. Sep 2024, 15:21
Seltsamerweise gibt diese Funktion in Delphi 12.1 dieses Ergebnis zurück: "RichEdit 2.0":

Delphi-Quellcode:
function GetRichEditVersion(RichEdit: TRichEdit): string;
var
  ClassName: array[0..255] of Char;
begin
  // Get the window class name of the RichEdit control
  if GetClassName(RichEdit.Handle, ClassName, Length(ClassName)) > 0 then
  begin
    if StrPos(ClassName, 'RICHEDIT50W') <> nil then
      Result := 'RichEdit 4.1'
    else if StrPos(ClassName, 'RichEdit20W') <> nil then
      Result := 'RichEdit 3.0'
    else if StrPos(ClassName, 'RichEdit') <> nil then
      Result := 'RichEdit 2.0'
    else
      Result := 'RichEdit 1.0 or older';
  end
  else
    Result := 'Unable to determine RichEdit version';
end;
Geändert von PeterPanino, damit der Platz auf dem Bildschirm nicht so leer aussieht.
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.465 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: TRichEdit: Mausrad-Zoom?

  Alt 21. Sep 2024, 15:26
Ich habe diese History von TRichEdit gefunden:

• RichEdit 1.0: The first version, very basic, supports only ANSI text.
• RichEdit 2.0: Introduced with Windows 95, supports Unicode.
• RichEdit 3.0: Introduced in Windows 2000/XP, added more features such as better font handling.
• RichEdit 4.0 and later: RichEdit 4.1 is included with Windows Vista and later, with advanced features such as zoom support (which is what TRichEdit in modern Delphi versions typically wraps).
Geändert von PeterPanino, damit der Platz auf dem Bildschirm nicht so leer aussieht.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#4

AW: TRichEdit: Mausrad-Zoom?

  Alt 21. Sep 2024, 17:22
Weil dein Test Blödsinn ist und du nichtmal verifiziert hast, was GetClassName liefert.

Oder was erwartest du, wenn GetClassName "TRichEdit" zurück gibt?



Und auch RealGetWindowClass hilft hier nicht,
auch wenn ich etwas erwartet hätte, es liefert den Basis-/Vorfahrtypen vom SuperClassing.
Hat Raymond etwa nicht Recht?
https://devblogs.microsoft.com/oldne...31-00/?p=11863


[add]
Delphi-Quellcode:
type
  TWinControlAccess = class(TWinControl);

procedure TForm2.FormCreate(Sender: TObject);
var
  Params: TCreateParams;
begin
  TWinControlAccess(RichEdit1).CreateParams(Params);
  ShowMessage(Params.WindowClass.lpszClassName);
= RICHEDIT50W

Aber das ist auch irgendwie klar, denn
Zitat:
procedure TCustomRichEdit.CreateParams(var Params: TCreateParams);
..
CreateSubClass(Params, MSFTEDIT_CLASS);
Und das zu bekommen, was mal an Delphi-Referenz durchsuchenCreateWindowEx übergeben wurde ...
https://stackoverflow.com/questions/...ct-of-a-window
$2B or not $2B

Geändert von himitsu (21. Sep 2024 um 18:01 Uhr)
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.465 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: TRichEdit: Mausrad-Zoom?

  Alt 21. Sep 2024, 19:07
Hier ist eine erweiterte Version:

Delphi-Quellcode:
type
  TWinControlAccess = class(TWinControl);

function GetMyRichEditVersion(RichEdit: TRichEdit): string;
var
  ClassName: array[0..255] of Char;
  Params: TCreateParams;
begin
  // First, check the class name created by TRichEdit
  TWinControlAccess(RichEdit).CreateParams(Params);
  ShowMessage('CreateParams ClassName: ' + string(Params.WindowClass.lpszClassName));

  // Now, use GetClassName to check the actual class name at runtime
  if GetClassName(RichEdit.Handle, ClassName, Length(ClassName)) > 0 then
  begin
    ShowMessage('GetClassName: ' + string(ClassName)); // Display runtime class name

    if StrPos(ClassName, 'RICHEDIT50W') <> nil then
      Result := 'RichEdit 4.1'
    else if StrPos(ClassName, 'RichEdit20W') <> nil then
      Result := 'RichEdit 3.0'
    else if StrPos(ClassName, 'RichEdit') <> nil then
      Result := 'RichEdit 2.0'
    else
      Result := 'RichEdit 1.0 or older';
  end
  else
    Result := 'Unable to determine RichEdit version';
end;
Aber bis jetzt hat noch niemand auf meine eigentliche Ausgangsfrage geantwortet:

"Weiß jemand, wie der Wert dieser Art von Zoom zum Zweck der Wiederherstellung ausgelesen werden kann?"
Geändert von PeterPanino, damit der Platz auf dem Bildschirm nicht so leer aussieht.
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.465 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: TRichEdit: Mausrad-Zoom?

  Alt 21. Sep 2024, 20:05
Aber um nochmals auf die Frage zur Version von RichEdit zurückzukommen, die TRichEdit zugrunde liegt (welches lediglich Windows RichEdit in eine Delphi-Komponente verpackt), beantwortet WinSpy++ diese Frage:

clipboard-image.png
Geändert von PeterPanino, damit der Platz auf dem Bildschirm nicht so leer aussieht.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#7

AW: TRichEdit: Mausrad-Zoom?

  Alt 21. Sep 2024, 20:49
Wieso kommt niemand auf die Idee die Hilfe zu fragen?
Bei Google suchenWindows RichEdit Zoom
Bei Google suchenWin32 RichEdit Zoom (Win32 = Name der API ... hat nichts mit Bits zu tun ... also wie WinForms, WinNT, GDI usw.)

MSDN-Library durchsuchenEM_GETZOOM = lesen
MSDN-Library durchsuchenEM_SETZOOM = schreiben
MSDN-Library durchsuchenES_EX_ZOOMABLE = disablen

und natürlich
MSDN-Library durchsuchenITextHost.TxGetExtent
$2B or not $2B

Geändert von himitsu (21. Sep 2024 um 21:12 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort

 

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 16:43 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