Announcement

Collapse
No announcement yet.

Wie bekomme ich das Handle einer TGraphicControl-Nachfahren?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Wie bekomme ich das Handle einer TGraphicControl-Nachfahren?

    Hallo allerseits,

    ich habe versucht eine eigene Drag&Drop-Komponente zu basteln, die von TGraphicControl abgeleitet wurde. Die Kompo sollte dafür gedacht sein Dateien vom Windows-Explorer in mein Programm zu ziehen(bzw. deren Namen usw.). Zumindest die Darstellung der Komponente funktioniert jetzt. Allerdings hab ich gehört dass man die Komponente erst mit DragAcceptFiles(Komponente.Handle, true); dafür berechtigen muß. Das Problem ist jetzt das Handle dieser Komponente zu bekommen.
    Mit einer Nachfahren von TEdit funktioniert das ganze ja einwandfrei, da hier die Eigenschaft .Handle existiert.
    Ich hab es auch schon mit HWND_ := FindWindow(Nil, 'DragDropKompo1'); probiert, leider erfolglos.

    Für Tipps und andere hilfreiche Anregungen wäre ich dankbar.
    Also schonmal danke im Vorraus.

    Mit freundlichen Grüßen Detlef

  • #2
    TGraphicControls besitzen kein solches Handle: hWnd. Nutze dazu TWinControl als Basisklasse.

    Gruß Hage

    Comment


    • #3
      Hallo Hagen,

      erstmal vielen Dank für die schnelle Antwort. Ich hab das mit TWinControl gleichmal ausprobiert und das mit dem Drag&Drop funktioniert natürlich. Aber jetzt krieg ich das Zeichnen nicht mehr hin. Da kommt wenn ich die Zeichenfläche erstelle(canv := TCanvas.Create) und dann versuche darauf zu zeichnen eine Fehlermeldung die lautet "Leinwand erlaubt kein zeichnen"(oder so ähnlich). Was kann man da machen?

      Ich probiers mal weiter, glaube aber nicht dass ich von selbst dahinter komme.

      Also nochmals danke für die Antwort.

      Bis denn dann Detle

      Comment


      • #4
        Hallo Detlef,<br>wenn Du zeichnen möchtest verwende doch TCustomControl. TCustomControl ist ein direkter TWinControl Nachfahre aber erweitert um eine Canvas

        Comment


        • #5
          oder nutz anstatt TCanvas das TControlCanvas Object.<br>
          Jens Vorschlag ist aber der von Borland dafür vorgesehene Weg.

          Hage

          Comment


          • #6
            Hallo Hagen und Jens

            Eure Lösung wär warscheinlich die einfachste gewesen. Aber ich habs jetzt doch noch hinbekommen. Ich hab statt die Paint-Methode zu überschreiben, die es ja bei TWinControl gar nicht gibt, einfach mit WM_PAINT das Event direkt abgefangen. Das funktioniert jetzt auch. War zwar jetzt einiges umständlicher aber immerhin hab ich ein bisschen was dazugelernt. Nächstes Mal nehm ich gleich TCustomControl oder TControlCanvas.
            Naja, wieso einfach wenns auch kompliziert geht ??

            Also danke Euch beiden für die Hilfe.

            Bis dann, Detle

            Comment


            • #7
              TCustomControl implementiert ja auch nur diesen TControlCanvas, ansonsten gibt's keine Unterschiede zum TWinControl.

              Hage

              Comment

              Working...
              X