AGB  ·  Datenschutz  ·  Impressum  







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

Nicht alle Controls vorhanden

Ein Thema von EWeiss · begonnen am 5. Jul 2011 · letzter Beitrag vom 5. Jul 2011
Antwort Antwort
Seite 1 von 2  1 2      
EWeiss
(Gast)

n/a Beiträge
 
#1

Nicht alle Controls vorhanden

  Alt 5. Jul 2011, 09:32
Warum wird mir bei der Übergabe von
ComboHook.SetComboParentObj(self);

nicht alle Controls an meiner DLL weitergeleitet?

Kann es sein weil das Object als TWinControl definiert ist?
Und demnach auch nur TWinControls dann sichtbar sind.

Was sonst nehmen ? Bei TObject habe ich kein Handle..

Zur besseren verständigung.
Ich möchte alle Controls/Komponente oder wie auch immer die sich auf der Form1
befinden an meine DLL weiterleiten (Liste) so das ich dann auswerten kann ob hier ComboBoxen verwendet werden.

Es kommt aber nur TComponent und TControl an.
Es fehlt TWinControl, TCustomForm, Memo1, ComboBox1, ComboBox2
obwohl sie sich ja eigentlich in Self(Form1) befinden.



gruss

Geändert von EWeiss ( 5. Jul 2011 um 10:08 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#2

AW: Nicht alle Controls vorhanden

  Alt 5. Jul 2011, 18:39
Hat wirklich niemand eine Idee wie ich meiner DLL mitteilen kann welche
komponente sich auf meiner Form befinden so das ich sie dort weiterverarbeiten (parsen) kann?.

Oder ist meine Frage einfach nicht verständlich genug
Kann ja sein!

gruss
  Mit Zitat antworten Zitat
bernerbaer
(Gast)

n/a Beiträge
 
#3

AW: Nicht alle Controls vorhanden

  Alt 5. Jul 2011, 18:51
Sorry, ich habe keine fertige Lösung parat, aber vielleicht hilft ja FindWindowEx, d.h. du übergibst das Fensterhandle an die dll und durchsuchst in der dll selbst alle Childs und prüfst deren Klassenname. (msdn findwindowex)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#4

AW: Nicht alle Controls vorhanden

  Alt 5. Jul 2011, 18:59
Sorry, ich habe keine fertige Lösung parat, aber vielleicht hilft ja FindWindowEx, d.h. du übergibst das Fensterhandle an die dll und durchsuchst in der dll selbst alle Childs und prüfst deren Klassenname. (msdn findwindowex)
Brauche keine fertige Lösung
Das kann ich selbst.. Nur ich habe ein problem mit der von mir gestellten Frage.


Ich habe doch alle Daten in der Variable "SELF" Warum kann ich diese nicht so wie sie sind
wenn man den Mauszeiger über "SELF" hält und als ToolTip angezeigt bekommt in meine DLL übergeben?
Da kommen nur bruchstücke der komponenten an die auf der Form plaziert sind..

Ist mir zu hoch

gruss
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

AW: Nicht alle Controls vorhanden

  Alt 5. Jul 2011, 19:03
Moment. Deine DLL kennt doch das Form-Objekt gar nicht, weil sie einen anderen Speichermanager hat. Das heißt du kannst kein Objekt an einer DLL übergeben. Es sei denn du nutz die Sharemem.dll von Borland als Speichermanager.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
bernerbaer
(Gast)

n/a Beiträge
 
#6

AW: Nicht alle Controls vorhanden

  Alt 5. Jul 2011, 19:10
Moment. Deine DLL kennt doch das Form-Objekt gar nicht, weil sie einen anderen Speichermanager hat. Das heißt du kannst kein Objekt an einer DLL übergeben. Es sei denn du nutz die Sharemem.dll von Borland als Speichermanager.
--> deshalb mein Vorschlag die Auflistung in der dll selbst vorzunehmen.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#7

AW: Nicht alle Controls vorhanden

  Alt 5. Jul 2011, 19:25
Moment. Deine DLL kennt doch das Form-Objekt gar nicht, weil sie einen anderen Speichermanager hat. Das heißt du kannst kein Objekt an einer DLL übergeben. Es sei denn du nutz die Sharemem.dll von Borland als Speichermanager.
Habe mir eine kleine TestAnwendung für das problem in VB geschrieben.
um mal in erfahrung zu bringen woran das in Delphi liegen könnte.

Wenn ich hier meine Form(ME, SELF in Delphi) als Objekt übergebe bekomme ich einen pointer auf das Object. ObjPtr(ME)
Anschließend kann ich mit CopyMemory auf jede XBeliebige Komponente meiner MAIN Form zugreifen.
Und diese über den ClassenNamen und FindWindowEx analysieren welche oder ob überhaupt ComboBoxen auf der Form vorhanden sind.

Anschließend definiere ein Variable (ctrl as Control) und prüfe mit "for each ctrl in ParentObj" ob sich komponente auf der Form befinden.
Warum ist das in Delphi so kompliziert?
Wo beleibt da der Fortschritt ?..

Zitat:
deshalb mein Vorschlag die Auflistung in der dll selbst vorzunehmen.
Hallo ich tue nichts anderes
Aber dafür muss ich erstmal Kontrols(in einer Liste) zur verfügung haben die ich parsen bzw.. auswerten kann.
Das wollte ich halt mit der Liste von Self erledigen da steht doch alles schon drin also Combo1, Combo2 usw..

UNd das geht nicht wegen dem Speichermanagement?


EDIT:
@bernerbaer

Und du meinst SELF außer acht lassen.
Davon nur das Handle nehmen und anschließend über dieses alle Komponente enumerieren.?
Hmm.. wäre dann wohl die einzigste möglichkeit.
Sharemem will ich nicht einsetzen.

Ok. Danke! Werd es mal so testen.


gruss

Geändert von EWeiss ( 5. Jul 2011 um 19:40 Uhr)
  Mit Zitat antworten Zitat
bernerbaer
(Gast)

n/a Beiträge
 
#8

AW: Nicht alle Controls vorhanden

  Alt 5. Jul 2011, 19:54
.....
@bernerbaer

Und du meinst SELF außer acht lassen.
Davon nur das Handle nehmen und anschließend über dieses alle Komponente enumerieren.?
...
ja, das war mein Grundgedanke.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#9

AW: Nicht alle Controls vorhanden

  Alt 5. Jul 2011, 19:55
Probleme hast du dann aber bei nicht von TWinControl abgeleiteten Komponenten. Also zum Beispiel Labels und ähnliches. Diese Steuerelemente haben kein Handle. man kann sie also nicht mit FindWindwoEx finden.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#10

AW: Nicht alle Controls vorhanden

  Alt 5. Jul 2011, 19:56
.....
@bernerbaer

Und du meinst SELF außer acht lassen.
Davon nur das Handle nehmen und anschließend über dieses alle Komponente enumerieren.?
...
ja, das war mein Grundgedanke.
Danke schön denke so wird das gehn

gruss
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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:31 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