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/)
-   -   In das "OnPaint" eines TEdits einklinken (https://www.delphipraxis.net/61204-das-onpaint-eines-tedits-einklinken.html)

Sharky 18. Jan 2006 11:29


In das "OnPaint" eines TEdits einklinken
 
Hai ihr,

bei meiner letzen Frage hat Bernhard mir ja den Tipp gegeben mich in das OnPaint des TEdits einzuklinken.

Jetzt gibt es das aber dort nicht. Wenn ich versuche mich so in die Paint-Message inzuhängen wird diese natürlich durch das Zeichnen meines Rahmens immer wieder ausgelösst.

Delphi-Quellcode:
procedure TShExEdit.WMPaint(var Message: TWMPaint);
begin
  inherited;
  FUpdateColor; // Hier wird ein Rahmen gezeichnet
end;
Wie muss ich denn da ansetzen um mir im Paint des TEdits einen Rahmen um diesen zu zeichnen?

MarcoWarm 18. Jan 2006 12:50

Re: In das "OnPaint" eines TEdits einklinken
 
Hi Sharky,

also ich hab mal n bissl mit "deinen" Quellen rumgespielt. Und folgendes produziert. Die Methode hat jedoch einige Einschränkungen (siehe Kommentare) aber vielleicht ist es ein Denkanstoß

Delphi-Quellcode:
procedure TTUOEdit.CMEnter(var Message: TCMEnter);
begin
  inherited;
  self.Repaint;
end;

procedure TTUOEdit.CMExit(var Message: TCMExit);
begin
  inherited;
  self.Visible:=False;  //frag mich nicht, warum es nicht anders geht
  self.Visible:=True;   //aber ein einfaches repaint oder invalidate reicht nicht
                         //zugegeben, ich hab der sache auch nur 10 Minuten gewidmet
end;

procedure TTUOEdit.WMPaint(var Message: TWMPaint);
begin
  inherited;
  if (self.Focused) then
    DrawControlRect((Self as TWinControl).Handle, clBlue);
end;
Die Methode geht nur wenn kein Manifest eingebunden wurde.

Sharky 18. Jan 2006 19:07

Re: In das "OnPaint" eines TEdits einklinken
 
Hai Marco,

danke für den Tipp. Jetzt scheint alles so zu laufen wie ich es möchte.

Ich habe dein Visible True/False durch diesen Code ersetzt ung es geht:
Delphi-Quellcode:
procedure TShExTntEdit.DoExit;
begin
  inherited DoExit;
  Inherited Perform(CM_RECREATEWND, 0, 0);
end;

MarcoWarm 19. Jan 2006 05:29

Re: In das "OnPaint" eines TEdits einklinken
 
CM_RECREATEWND .... wunderbar... danach hatte ich gesucht :)


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