AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Ich krieg das Handle von abgeleitetem Edit nicht!
Thema durchsuchen
Ansicht
Themen-Optionen

Ich krieg das Handle von abgeleitetem Edit nicht!

Ein Thema von Red six · begonnen am 3. Aug 2005 · letzter Beitrag vom 5. Aug 2005
 
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#8

Re: Ich krieg das Handle von abgeleitetem Edit nicht!

  Alt 4. Aug 2005, 07:07
Zitat von Red six:
Im moment hab ich aber ein anderes problem mit den Handles...

Achtung ich zeig mal den Code (lacht ja nicht ich mach sowas zum ersten mal)

Delphi-Quellcode:
constructor TRoundEdit.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);

  Self.Ctl3D := False;

  Canvas := TCanvas.Create;
  Canvas.Handle := GetDC(Self.Handle);
end;

procedure TRoundEdit.Paint;
begin
  Canvas.RoundRect(Self.Left, Self.Top, Self.Width, Self.Height, 10, 10);
end;
Nur mal so ein paar Stichworte:

1. Dein Control ist von TEdit abgeleitet, das heißt, du bekommst alle "vererbten" Eigenschaften und Methoden mit dem Schlüsselwort inherited und nicht (wie du oben mal geschrieben hast), indem du "TRoundEdit." davor schreibst. Das "Self." davor kannst du auch weglassen.

2. Einen Canvas holt man sich nur, wenn man auch wirklich zeichnen will, und nicht schon vorher. Eben weil da ein HDC als Handle drin ist und das nicht ewig hält.

3. Du zeichnest nur dich, ggf. willst du danach auch noch das Edit-Control zeichnen mit "inherited Paint;"

4. Ein TEdit basiert auf einem nativen Windows-Control. Da ist das Ableiten schwieriger als bei einer reinen Delphi-Komponente. Manche Dinge, die du vielleicht im Sinn hast, gehen eventuell überhaupt nicht bzw. lassen sich nicht verändern.

Zitat von Red six:
Was bewegt da den Compiler dazu "Element hat kein übergeordnetes fenster" auszugeben? Ich hab hier mal gesucht und nen Thread von 2003 gefunden (den ich nicht wieder ausgraben wollte) und dort war auch das Problem irgentwie ein anderes... Naja...
Ist das wirklich eine "Compilermeldung" oder eine Fehlermeldung während der Laufzeit auf?
In welcher Zeile tritt der Fehler auf?
Wie erzeugst du dein Control?
Volker
  Mit Zitat antworten Zitat
 


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 17:05 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