AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Custom drawing in TEdit

Ein Thema von WojTec · begonnen am 17. Nov 2012 · letzter Beitrag vom 14. Nov 2019
Antwort Antwort
WojTec

Registriert seit: 17. Mai 2007
480 Beiträge
 
Delphi XE6 Professional
 
#1

Custom drawing in TEdit

  Alt 17. Nov 2012, 16:20
Delphi-Version: 2010
I found this: http://stackoverflow.com/questions/9...t-control-text.

It's nice, but one thing is missing: text selection. I added it, but one more thing is wrong (in original code, my modification just modifing font and brush colors): when select text by mouse, custom paint method is not used. Could you help, please?
  Mit Zitat antworten Zitat
sintronic86

Registriert seit: 7. Dez 2009
Ort: Barsinghausen
90 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

AW: Custom drawing in TEdit

  Alt 6. Aug 2014, 13:32
Ich greife das Thema mal auf, weil ich aktuell vor dem selben Problem stehe.

Mit Hilfe des vom Vorredner angegebenen Links und dem Quellcode des "TCustomButtonedEdit" habe ich es hinbekommen, mein eigenes TEdit selber zu zeichnen, den Text entsprechend auszurichten und eigene Grafiken zu hinterlegen.
Allerdings greift die eigene Paint-Methode nicht, wenn ich mit der Maus linksklicke und dann bewege. Im Anhang zeigt Bild 1, wie das Edit mit eingetragenem Text aussieht, das Bild 2, was passiert, wenn ich den Text selektiere!

Ist für dieses Problem mittlerweile eine Lösung bekannt?

Vielen Dank im Vorraus!
Miniaturansicht angehängter Grafiken
1.png   2.png  
Björn
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.122 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Custom drawing in TEdit

  Alt 6. Aug 2014, 13:52
Wieso selbst machen?
Mit den VCL-Styles hat man doch in Delphi einfachere Möglichkeiten.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
sintronic86

Registriert seit: 7. Dez 2009
Ort: Barsinghausen
90 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

AW: Custom drawing in TEdit

  Alt 6. Aug 2014, 16:20
Ja, das stimmt sicherlich. Auch mit den VCL-Styles habe ich bereits Erfahrungen gemacht! Wobei ich da immernoch nach einem vernünftigen Designer suche.

Gibt es denn für mein Problem keine Lösung, als komplett auf die VCL-Styles umzusteigen?
Björn
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#5

AW: Custom drawing in TEdit

  Alt 6. Aug 2014, 17:21
Ich glaube, das TEdit ist ein Windows-Control und da funkt dir das eben manchmal dazwischen.
  Mit Zitat antworten Zitat
sintronic86

Registriert seit: 7. Dez 2009
Ort: Barsinghausen
90 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

AW: Custom drawing in TEdit

  Alt 8. Aug 2014, 09:30
Aber es muss doch eine Möglichkeit geben, auch in diesem Fall eine eigene Zeichnungs-Routine einzubinden!
Björn
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#7

AW: Custom drawing in TEdit

  Alt 8. Aug 2014, 11:21
Aber es muss doch eine Möglichkeit geben, auch in diesem Fall eine eigene Zeichnungs-Routine einzubinden!
Und die Windows-Routine deaktivieren? Glaube nicht. Du müsstest Dir deine eigene Bauen.
  Mit Zitat antworten Zitat
Whookie

Registriert seit: 3. Mai 2006
Ort: Graz
433 Beiträge
 
Delphi 10.3 Rio
 
#8

AW: Custom drawing in TEdit

  Alt 8. Aug 2014, 19:34
Nur mal kurz die Messages durchgesehen und das probiert:

Code:
procedure TMyEdit.WndProc(var Message: TMessage);
begin
  DebugString(dbGetMsgName(Message));
  if Message.Msg = CN_CTLCOLOREDIT then
  Begin
    SetBkMode(TWMCtlColor(Message).ChildDC,TRANSPARENT);
    Message.Result:=GetStockObject(HOLLOW_BRUSH);
  End
  else
  inherited WndProc(Message);
  with Message do
    case Msg of
      CM_MOUSEENTER, CM_MOUSELEAVE, WM_LBUTTONUP, WM_LBUTTONDOWN, CN_CTLCOLOREDIT,
      WM_KEYDOWN, WM_KEYUP,
      WM_SETFOCUS, WM_KILLFOCUS,
      CM_FONTCHANGED, CM_TEXTCHANGED:
      begin
        Invalidate;
      end;
   end; // case
end;
Flackert zwar ein bischen ... aber besser als vorher ist es. Vielleicht kommst ja so weiter...
Whookie

Software isn't released ... it is allowed to escape!
  Mit Zitat antworten Zitat
daarky

Registriert seit: 25. Sep 2011
2 Beiträge
 
#9

AW: Custom drawing in TEdit

  Alt 14. Nov 2019, 22:04
Ich hatte das gleiche Problem.
Gelöst habe ich es durch Überschreiben von CreateParams:
Code:
procedure TMyEdit.CreateParams(var Params: TCreateParams);
begin
    inherited;
    if csDesigning in ComponentState then
        exit;
    Params.ExStyle := Params.ExStyle or WS_EX_COMPOSITED;
end;
Die Lösung habe ich auch hier gepostet.
  Mit Zitat antworten Zitat
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 01:40 Uhr.
Powered by vBulletin® Copyright ©2000 - 2023, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf