AGB  ·  Datenschutz  ·  Impressum  







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

TCollection = not TCollection ?

Ein Thema von EWeiss · begonnen am 6. Jul 2011 · letzter Beitrag vom 7. Jul 2011
Antwort Antwort
Seite 2 von 4     12 34      
Benutzerbild von himitsu
himitsu
Online

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

AW: TCollection = not TCollection ?

  Alt 6. Jul 2011, 18:20
Delphi-Quellcode:
  for ICtrl := 0 to FParentObj.ComponentCount - 1 do
    begin
      Ctrl := FParentObj.Components[ICtrl];

      If (Ctrl = TComboBox) or
         (Ctrl = TComboBoxEx) or
         (Ctrl = TDBLookupCombo) or
         (Ctrl = TDriveComboBox) then
      begin
         CtrHwnd := FindWindowEx(FParentObj.Handle, 0, PChar(Ctrl.ClassName), nil);
      end;
Und falls auch die Nachfahren der Kombonenten mit erwischt werden sollten, dann  is statt  = .


PS:
Zitat:
PWideChar
FindWindowEx + PChar + String
oder
FindWindowExW + PWideChar + WideString/UnicodeString

PSS: Delphi-Referenz durchsuchenFindControl macht aus einem HWND ein TWinControl (aber nur in der eigenen Anwendung!)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 6. Jul 2011 um 18:30 Uhr)
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#12

AW: TCollection = not TCollection ?

  Alt 6. Jul 2011, 18:25
Delphi-Quellcode:
      Ctrl := FParentObj.Components[ICtrl];

      If (Ctrl = TComboBox) or
         (Ctrl = TComboBoxEx) or
         (Ctrl = TDBLookupCombo) or
         (Ctrl = TDriveComboBox) then
Wie wo wat? Das geht doch nicht! Das eine ist ein Objekt, das andere eine Klasse. Wenn schon Ctrl.Classtype=... . is ist aber sauberer imo.

Geändert von Namenloser ( 6. Jul 2011 um 19:28 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#13

AW: TCollection = not TCollection ?

  Alt 6. Jul 2011, 18:28
Muss mich noch schlau machen wie das funktioniert.
Von dir habe ich leider nichts gefunden
Wenn du eine Version mit integriertem TDictionary besitzt, gibt es eigentlich eh keinen Grund, etwas anderes zu benutzen...
Ab Delphi 2009 siehe Generics.Collections.pas
Habe zwar 2009 aber Generics lassen sich nicht einbinden.

gruss
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#14

AW: TCollection = not TCollection ?

  Alt 6. Jul 2011, 18:31
Delphi-Quellcode:
      Ctrl := FParentObj.Components[ICtrl];

      If (Ctrl = TComboBox) or
         (Ctrl = TComboBoxEx) or
         (Ctrl = TDBLookupCombo) or
         (Ctrl = TDriveComboBox) then
Wie wo wat? Das geht doch nicht! Das eine ist ein Objekt, das andere eine Klasse. Wenn schon Ctrl.Classtype=... . is ist aber sauberer imo.
Hab ich was verpasst?
Um was geht's ?

Ich bekomme bei meiner abfrage das korrekte Handle.

und das geht gar nicht.

Delphi-Quellcode:
  for ICtrl := 0 to FParentObj.ComponentCount - 1 do
    begin
      Ctrl := FParentObj.Components[ICtrl];

      If (Ctrl = TComboBox) or
         (Ctrl = TComboBoxEx) or
         (Ctrl = TDBLookupCombo) or
         (Ctrl = TDriveComboBox) then
      begin
         CtrHwnd := FindWindowEx(FParentObj.Handle, 0, PChar(Ctrl.ClassName), nil);
      end;
Dann müßte ich nämlich die Controls bzw.. dazugehörige Units mit einbinden.
Ich befinde mich in einer DLL und die Controls in der Anwendung.


gruss

Geändert von EWeiss ( 6. Jul 2011 um 18:39 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie
Online

Registriert seit: 12. Aug 2003
Ort: Soest
4.019 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#15

AW: TCollection = not TCollection ?

  Alt 6. Jul 2011, 19:53
Muss mich noch schlau machen wie das funktioniert.
Von dir habe ich leider nichts gefunden
Wenn du eine Version mit integriertem TDictionary besitzt, gibt es eigentlich eh keinen Grund, etwas anderes zu benutzen...
Ab Delphi 2009 siehe Generics.Collections.pas
Habe zwar 2009 aber Generics lassen sich nicht einbinden.
Wat?
Delphi-Quellcode:
uses
  Generics.Collections;
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#16

AW: TCollection = not TCollection ?

  Alt 6. Jul 2011, 20:16
na gut hast mich überzeugt

gruss
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

AW: TCollection = not TCollection ?

  Alt 6. Jul 2011, 20:20
usp, ja

Ctrl.ClassType = TIrgendwas or Ctrl is TIrgendwas PS: Nur weil Klassen den gleichen Namen haben, müssen sie nicht die selben Klassen-Deklarationen besitzen.
Geh mal raus und frage so lange, bis du einen "Frank" gefunden hast ... mit etwas Glück bin ich das.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 6. Jul 2011 um 20:23 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#18

AW: TCollection = not TCollection ?

  Alt 6. Jul 2011, 20:41
usp, ja

Ctrl.ClassType = TIrgendwas or Ctrl is TIrgendwas PS: Nur weil Klassen den gleichen Namen haben, müssen sie nicht die selben Klassen-Deklarationen besitzen.
Geh mal raus und frage so lange, bis du einen "Frank" gefunden hast ... mit etwas Glück bin ich das.
Da frag ich doch besser nach himitsu..
Ist bestimmt bekannter zumindest nicht 1 zu ner million bis ich dich finde.

Komme auf keinen grünen zweig da ich nicht auf die Objekte der Form direkt zugreifen kann.

gruss

Geändert von EWeiss ( 6. Jul 2011 um 21:08 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

AW: TCollection = not TCollection ?

  Alt 6. Jul 2011, 21:26
Es handelt sich doch um Komponenten einer Form der eigenen Anwendung?
Wenn ja, dann siehe PSS in #11.

PS: Von Delphi automatisch erzeugt form haben immer Application als Owner, weswegen sie sich auch über Application.Components finden lassen.
Alle anderen delphieigenen TopLevel-Forms sind nochmal über Screens.Forms aufzufinden.



Ach ja, die Variante über den ClassType hat noch den vorteil der Quellcodevervollständigung, beim Schreiben der Namen und das Ganze wird dann auch nochmal über den Kompiler validiert,
wärend man sich bei den Strings nur mal verschreiben braucht (sei es uch nur in der Groß-/Kleinschreibung) und schon wird der Vergleich schnell Mal was von FALSE behaupten.
Abgesehn davon, daß ein Integervergleich ein klein bissl optimaler ist, als ein Stringvergleich.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#20

AW: TCollection = not TCollection ?

  Alt 6. Jul 2011, 21:47
Zitat:
Es handelt sich doch um Komponenten einer Form der eigenen Anwendung?
Wenn ja, dann siehe PSS in #11.
Jain..
Die werden in einer DLL ausgewertet.
Das bereitet probleme.

Sagte ja schon ich sende SELF aber das was in Self(eigene Anwendung) steht kommt in der DLL nicht an.
Dann wäre es alles kein problem.

So wie hier von Luckie schon gesagt
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.
Komme ich so ohne weiteres nicht an die objekte heran.

EDIT:
Zitat:
haben immer Application als Owner
Da muss ich nochmal was überdenken.

gruss.

Geändert von EWeiss ( 6. Jul 2011 um 21:54 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 4     12 34      


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 16:20 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