AGB  ·  Datenschutz  ·  Impressum  







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

Problem beim zeichnen eines Rahmens um TEdit

Ein Thema von Sharky · begonnen am 18. Jan 2006 · letzter Beitrag vom 18. Jan 2006
Antwort Antwort
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#1

Problem beim zeichnen eines Rahmens um TEdit

  Alt 18. Jan 2006, 08:36
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;
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#2

Re: Problem beim zeichnen eines Rahmens um TEdit

  Alt 18. Jan 2006, 08:57
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:
procedure TForm1.FormCreate(Sender: TObject);
begin
  if assigned(self.ActiveControl) then
    begin
      DrawControlRect(self.ActiveControl.Handle, clBlue);
    end;
end;
Gruß Der Unwissende
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

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

Re: Problem beim zeichnen eines Rahmens um TEdit

  Alt 18. Jan 2006, 09:02
Zitat von Sharky:
Hat einer eine Idee woran das liegen kann?
Systembedingt falsch.
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.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Problem beim zeichnen eines Rahmens um TEdit

  Alt 18. Jan 2006, 09:09
Zitat von Bernhard Geyer:
Systembedingt falsch.
Jup,
das war es dann wohl. Ich hatte die Form zwar maximiert und die grösse geändert und verschoben aber nie minimiert.

Zitat:
...Probier mal den Code im OnPaint-Event des Formulars unterzubringen.
Dann muss ich mich mal in die OnPaint der Komponente einklinken da ich den Code für ein eigenes T(TNT)Edit haben möchte.
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.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  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 18:59 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