![]() |
Problem beim zeichnen eines Rahmens um TEdit
Hai ihr lieben,
mit diesem Code zeichne ich im OnEnter eines TEdits einen Rahmen um dieses und entferne ihn im OnExit wieder. Eigentlich funktioniert dies auch ... aber ... wenn ich die Anwendung starte (einfach zwei Edits auf der Form und beiden das selbe OnEnter , OnExit zugewiesen) hast das erste Edit keinen Rahmen. Erst wenn ich den Focus ändere wird er so gezeichnet wie ich es möchte. Hat einer eine Idee woran das liegen kann?
Delphi-Quellcode:
procedure DrawControlRect(AHandel: HWND; AColor: TColor);
// Diese Procedure habe ich im großen und ganzen bei // den Jedis "geklaut" var LHDC: HDC; LRect: TRect; LCanvas: TCanvas; begin LHDC := GetWindowDC(AHandel); try GetWindowRect(AHandel, LRect); OffsetRect(LRect, -LRect.Left, -LRect.Top); LCanvas := TCanvas.Create; with LCanvas do begin try Handle := LHDC; Brush.Color := AColor; FrameRect(LRect); InflateRect(LRect, -1, -1); FrameRect(LRect); finally Free; end; end; finally ReleaseDC(AHandel, LHDC); end; end; procedure TForm1.edt_Edit2Enter(Sender: TObject); begin DrawControlRect((Sender as TWinControl).Handle, clBlue); end; procedure TForm1.edt_Edit2Exit(Sender: TObject); begin (Sender as TWinControl).Perform(CM_RECREATEWND, 0, 0); end; |
Re: Problem beim zeichnen eines Rahmens um TEdit
Hi,
nun ja, vielleicht liegt es ja daran, dass das OnEnter-Ereignis nur aufgerufen wird, wenn er den Focus erhält. Wenn Delphi den Focus anders setzt (beim Start), dann solltest du einfach in das OnCreate Ereignis den Aufruf der entsprechenden Methode aufnehmen.
Delphi-Quellcode:
Gruß Der Unwissende
procedure TForm1.FormCreate(Sender: TObject);
begin if assigned(self.ActiveControl) then begin DrawControlRect(self.ActiveControl.Handle, clBlue); end; end; |
Re: Problem beim zeichnen eines Rahmens um TEdit
Zitat:
Jedes neuzeichnen des Formulars wird deinen Rahmen entfernen. Und da beim start der Anwendung mit sicherheit genügend "Neuzeichen-Befehle" kommen ist dein Rahmen weg. Schon mal probiert einfach die Anwendung zu minimieren? Dann dürfte dein Rahmen auch weg sein. Probier mal den Code im OnPaint-Event des Formulars unterzubringen. |
Re: Problem beim zeichnen eines Rahmens um TEdit
Zitat:
das war es dann wohl. Ich hatte die Form zwar maximiert und die grösse geändert und verschoben aber nie minimiert. :cry: Zitat:
Ich habe es nur auf die zum testen im OnEnter der "normalen" Edits gemacht. Mal schauen wie die Jedis das bei ihrem TJVEdit gemacht haben. Danke für den Hinweiss. Jetzt weiss ich wo ich ansetzen muss. @Der_Unwissende: Das OnEnter wird schon aufgerufen. Nur wird halt danach, wie Bernhard erkannte, alles wieder überzeichnet. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:51 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