Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi TEdit zeigt TextHint nicht an, wenn ReadOnly = True (https://www.delphipraxis.net/215367-tedit-zeigt-texthint-nicht-wenn-readonly-%3D-true.html)

Der schöne Günther 21. Jun 2024 09:46

TEdit zeigt TextHint nicht an, wenn ReadOnly = True
 
Delphi-Quellcode:
TextHint
ist bei
Delphi-Quellcode:
TEdit
-Feldern eine nette Eigenschaft, dass man in einem Edit-Feld in grau einen Hinweis-Text einblendet, solange der Benutzer da noch nichts eingegeben hat.

Kann ich das TextHint trotzdem anzeigen lassen, auch wenn das Edit-Feld auf
Delphi-Quellcode:
ReadOnly = True
gesetzt ist?

Uwe Raabe 21. Jun 2024 10:02

AW: TEdit zeigt TextHint nicht an, wenn ReadOnly = True
 
Ich fürchte, das wird nicht so einfach sein. Das Verhalten ist offenbar intern im Windows-Control so implementiert und lässt sich offenbar nicht ändern.

himitsu 21. Jun 2024 11:56

AW: TEdit zeigt TextHint nicht an, wenn ReadOnly = True
 
Jupp, da wirst du leider das Edit ableiten müssen und den Text selbst malen (nur wenn ReadOnly und Text='', sonst einfach den Default-Painter lassen).
Es gibt bestimmt auch noch irgendwo Beiträge im Netz, wo jemand das Paint vom TEdit überschrieben hat, um "früher" ein ähnliches Verhalten zu implementieren.

Wenn der Text nicht selektier und kopierbar sein muß,
dann ein unsichtbares TPanel drumrum (BevelOuter=bvNone und auch Caption leer und/oder ShowCaption=False)
und am Ende Panel.Enabled=False anstatt Edit.ReadOnly=True.


Alternativ schauen, was passiert, wenn du einen VCL-Style nutzt (muß nicht für alles, ginge auch nur für dieses Control) ... dort im Style dieses Verhalten anpassen (müsste es dort ja was für diesen Fall geben).

Der schöne Günther 21. Jun 2024 13:09

AW: TEdit zeigt TextHint nicht an, wenn ReadOnly = True
 
Danke, so kompliziert wollte ich es gar nicht machen.

Dann hat das Ding halt keinen TextHint. Oder, da es eh readonly ist, schreibe ich selbst Text rein und mache
Delphi-Quellcode:
.Font.Color := TColors.Gray
oder sowas 😉

himitsu 21. Jun 2024 13:21

AW: TEdit zeigt TextHint nicht an, wenn ReadOnly = True
 
Statt ReadOnly und TextHint
einfach Disabled und (bissl dunkelgrauerer) Text.
:stupid:

jaenicke 21. Jun 2024 20:56

AW: TEdit zeigt TextHint nicht an, wenn ReadOnly = True
 
Das ist als Eingabeaufforderung gedacht. Insofern ist es irreführend, wenn ein solcher Cue Banner da ist, man aber gar nichts eingeben kann. Daher wird das entsprechend dann nicht angezeigt.

TomyN 21. Jun 2024 21:54

AW: TEdit zeigt TextHint nicht an, wenn ReadOnly = True
 
Ein Hinweis wie 'Aktuelle keine Eingabe möglich, da der Hund noch nicht gefüttert wurde' könnte aber durchaus für den Nutzer hilfreich sein.

himitsu 22. Jun 2024 09:15

AW: TEdit zeigt TextHint nicht an, wenn ReadOnly = True
 
Aber es nervt auch, wenn man reingeklickt hat, nicht mehr weiß, was man eintippen soll und dann erstmal wieder raus muß, um es lesen zu können.
Ist ja fast so schlimm, wie wenn die ListBox die Markierung nicht mehr zeigt, wenn der Fokus raus ist. :freak:

Uwe Raabe 22. Jun 2024 10:17

AW: TEdit zeigt TextHint nicht an, wenn ReadOnly = True
 
Zitat:

Zitat von himitsu (Beitrag 1538111)
Aber es nervt auch, wenn man reingeklickt hat, nicht mehr weiß, was man eintippen soll und dann erstmal wieder raus muß, um es lesen zu können.

Aber dem kann man ja abhelfen:
Delphi-Quellcode:
type
  TEdit = class(Vcl.StdCtrls.TEdit)
  protected
    procedure DoSetTextHint(const Value: string); override;
  end;

procedure TEdit.DoSetTextHint(const Value: string);
begin
  if CheckWin32Version(5, 1) and StyleServices(Self).Enabled and HandleAllocated then
    SendTextMessage(Handle, EM_SETCUEBANNER, WPARAM(1), Value);
end;


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