AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Eigene Komponente -> Handle vom Aufruf-Fenster bekommen?
Thema durchsuchen
Ansicht
Themen-Optionen

Eigene Komponente -> Handle vom Aufruf-Fenster bekommen?

Ein Thema von KodeZwerg · begonnen am 4. Aug 2020 · letzter Beitrag vom 4. Aug 2020
Antwort Antwort
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.557 Beiträge
 
Delphi 12 Athens
 
#1

AW: Eigene Komponente -> Handle vom Aufruf-Fenster bekommen?

  Alt 4. Aug 2020, 13:56
Unabhängig von GetParentHandle und Co.


Wenn du eine VCL-Komponente baust, dann ist die VCL so oder so im Programm,
womit es keinen Grund gibt, warum diese Unit auch in deinem USES nicht drin sein sollte. (es macht einfach keinen Unterschied)

Fazit: Falls man Funktionen/Typen davon braucht, dann nehme man sie, mache sich das Leben leicherter und erspare sich sonstwelche komischen Hacks.
Ist auch viel unanfälliger für Fehler.





Was leider nicht wirklich machbar ist, auch wenn es theoretisch ginge.
Eine Nichtvisuelle-Komponente für FMX und VCL, die aber auf andere visuelle Komponenten Zugriff haben soll.

Denn sowas wie {$IFDEF FMX} gibt es nicht, womit man zwar Code schreiben könnte, der mit VCL und FMX kann, aber dann nur mit kranken Hacks
oder indem man alle Units von VCL und FMX einbinden müsste, was im Windows ginge (auch wenn es nicht schön wäre), aber ansonsten wunderschön abraucht.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 4. Aug 2020 um 14:00 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Eigene Komponente -> Handle vom Aufruf-Fenster bekommen?

  Alt 4. Aug 2020, 14:35
An himitsu,

wie immer überrascht mich Dein umfangreiches Wissen und vor allem auch die vielen definitionen/methoden die Du so aus dem Ärmel schüttelst!

Aber nein, ich habe keine Vcl erstellt, Vcl ist bei mir auch nur mit "Vcl.Forms" eingebunden weil ich halt das Handle bzw "TForm" brauchte um da ran zu kommen, mehr nicht.
Zu keinem anderen Zeitpunkt in meinem Komponenten-Project benötige ich das außer da oben.
Ich greife auch auf nichts vom Caller zu, abgesehn einer Positions- und Dimensionsabfrage interessiert mich der Caller nicht.
Alles was bei mir zZ. passiert ist WinApi (ich trauer immer noch wegen M.Puff).
Entwickelt für Windows samt Abfragen die das auch sicherstellen bevor der Pc sich in einen Zombie verwandelt.

Wo ich ins stottern gekommen bin war die stelle "vor" und "nach" dem einbinden dieser Unit. Die hat meine bpl Dateigröße grob verfünzigfacht, aus 35kb wurde ein megabyte.
Nicht das mich das stört, aber irgendwie doch

Da ich generell neugierig bin wollte ich weitere Anlaufpunkte finden, drei habe ich ja nun Dank Dir. Danke nochmal!
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.757 Beiträge
 
Delphi 12 Athens
 
#3

AW: Eigene Komponente -> Handle vom Aufruf-Fenster bekommen?

  Alt 4. Aug 2020, 15:10
Die hat meine bpl Dateigröße grob verfünzigfacht, aus 35kb wurde ein megabyte.
Nicht das mich das stört, aber irgendwie doch
In dem Fall solltest du in der requires Clause deiner DPK ein VCL einfügen. Dann geht das wieder weg.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Eigene Komponente -> Handle vom Aufruf-Fenster bekommen?

  Alt 4. Aug 2020, 15:19
Boah, an so etwas, wie soll's anders sein, hätte und wäre ich im Leben nie drauf-gekommen. Meine requires hat nur rtl bis jetzt.
Mega-Tipp!
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.557 Beiträge
 
Delphi 12 Athens
 
#5

AW: Eigene Komponente -> Handle vom Aufruf-Fenster bekommen?

  Alt 4. Aug 2020, 16:37
Spätestens wenn du versuchst deine BPL in die IDE oder eine EXE zu laden, dann wäre es dir aufgefallen.

Sobald da dann nichts startet, weil Units doppelt sind.
Ich weiß jetzt nicht wie die Fehlermeldung im Programm aussieht, aber in der IDE kommt dann sowas wie
"Package ABC nicht geladen, weil XYZ enthalten, was schon im Package DEF drin ist"

Außerdem müsste dir der Compiler eine Warnung hingeworfen haben, so ala "Unit Forms (und Weitere) implizit einkompiliert". (mit dem fehlenden Requires)



Ein Kollege hatte mal Tagelang gesucht.
Da war eine Unit statt in einem Package ausversehn in zwei DLLs,
also alles Doppelt, inkl. der globalen Variablen.
Und er wunderte sich, dass er die Variable hier setzt, sie aber dort leer ist und wenn er drüben nachguckt, isses wieder drin.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 4. Aug 2020 um 16:46 Uhr)
  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 03:57 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-2025 by Thomas Breitkreuz