Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Anchor in nonVCL setzen (https://www.delphipraxis.net/67940-anchor-nonvcl-setzen.html)

himitsu 22. Apr 2006 09:45


Anchor in nonVCL setzen
 
Ich hab mir per CreateWindowExW einige Controls erstellt und würde dieser ebenfalls (gern) automatisch ausgerichtet haben, ist das irgendwie möglich?

Also genauso, als wenn ich in der VCL die Anchor-Werte auf Unten+Rechts, oder Links+Unten+Rechts asetzen würde.

SirThornberry 22. Apr 2006 09:47

Re: Anchor in nonVCL setzen
 
die Anchors sind VCL-Sache. Die VCL-Komponenten bekommen also mit wenn die größe geändert wird und setzen dementsprechend die Childs anhand der Anchors um.

himitsu 22. Apr 2006 09:57

Re: Anchor in nonVCL setzen
 
Also muß ich das wohl doch irgendwie alleine machen, oder kann man sich da an andere Komponenten dranhängen?

Es geht um die Open-/Save-Dialoge ... hab da was nachgerüstet und das verhält sich (wie's z.B. auch in Notepad bei der Codierung ist) nicht wie der Rest, wenn man den Dialog vergrößert. -.-''


[Anhang gelöscht]
da drüben ist ist nochmal soeine Datei (der "falsch" beschriftete OK-Button sollte ja nicht stören)
Ich finde keine ChildHandles beim TSaveDialog ...

[grobe Rechtschreibprüfung durchlaufen]

himitsu 23. Apr 2006 18:24

Re: Anchor in nonVCL setzen
 
Etwas ist aber dennoch komisch, wenn meine Komponenten nicht automatisch ausgerichtet würden, dann müßten die doch oben/links fest sein, aber sin sind unten/links fest, werden also irgendwie ausgerichtet :grübel:

Außerdem bekomm ich über meinen Explorer-Hook keine Rückmeldung über veränderung der Fenstergröße, kann also schonmal da nichts machen :cry:

Da nun aber dennoch irgendwie meie Komponenten ausgerichtet werden, sollte es doch irgendwie möglich sein wie und wodurch und eventuell wie man das beeinflussen kann?

turboPASCAL 23. Apr 2006 18:39

Re: Anchor in nonVCL setzen
 
:grübel: edit to :gruebel:

Zitat:

Zitat von himitsu
Etwas ist aber dennoch komisch, wenn meine Komponenten nicht automatisch ausgerichtet würden, [...]

Also ich wüsste nix von Anchors bei nonVCL.

Zitat:

Zitat von himitsu
dann müßten die doch oben/links fest sein, aber sie sind unten/links fest, werden also irgendwie ausgerichtet :gruebel:

Da nun aber dennoch irgendwie meine Komponenten ausgerichtet werden, sollte es doch irgendwie möglich sein wie und wodurch und eventuell wie man das beeinflussen kann?

Kannst du das mal genauer erklären ?

himitsu 23. Apr 2006 23:28

Re: Anchor in nonVCL setzen
 
Also, normalerweise sollte doch die Komponente fest auf der X-Y-Position sitzen - sich also nicht relativ zur Ecke oben-link bewegen, wenn man das Formular vergrößert/verkleinert.

Aber du kannst es ja selber testen - dort bewegen sich meine Komponenten.
Na ja, zumindestens hoch/runter (das links/rechts fehlt halt noch).
- es sind die Label/Edits für Passwort und CompLevel
> http://www.delphipraxis.net/internal...=536694#536694

Demnach muß dort ja schon sowas wie ein Anchor gesetzt sein, oder seh ich das falsch?
Allerdings nicht von mir im nonVCL, sondern in der WinAPI, also davon was auch die Originalkomponenten auf der Form verschiebt, und da auf der Form nicht alles auf die selbe Weise verschoben wird, muß es doch wohl auch irgendwie zu steuern sein. :gruebel:

Luckie 24. Apr 2006 01:27

Re: Anchor in nonVCL setzen
 
Nein, es gibt keine Anchors in der WinAPI. Dies ist ein Feature der VCL. Wenn du dein Fenster mit CreateWindows(Ex) erstelllst, gibst du die Position relativ zur Clientarea links oben an. Soll sich dein Clientfenster der Parent anpassen, musst du auf die Nachricht WM_SIZE reagieren, wo du im lParam die neuen Maße der Clientarea bekommst:
Zitat:

lParam
The low-order word of lParam specifies the new width of the client area.
The high-order word of lParam specifies the new height of the client area.

himitsu 24. Apr 2006 02:48

Re: Anchor in nonVCL setzen
 
Tja, abgesehn vom ExplorerHook steht mein Programm aber sozusagen still und reagiert erst recht auf keine Messages eines fremden Fensters (denk ich ma?) und im ExplorerHook bekomm ich keine derartigen Messages.
Denn das Fenster, welches geändert wird wurde doch von GetSaveFileNameW erstellt und sendet seine Messages irgendwo anders hin :?

Aber Fakt ist nunmal, daß sich meine Controls bewegen ... wie auch immer.

Luckie 24. Apr 2006 06:36

Re: Anchor in nonVCL setzen
 
Hat dein Clientfenster eventuell zufälligerweise die ID eines vorhandenen Fensters? Anders kann ich es mir nicht erklären. Häng das Projekt mal mit Code an. Allerdings kann ich nicht versprechen, dass ich Zeit finde es mir so genau anzugucken, aber zu mindest sehen würde ich es gerne. ;)

himitsu 24. Apr 2006 07:43

Re: Anchor in nonVCL setzen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Also meine ID's sind 10 bis 103 und diese sind sonst nicht belegt.
Code:
#32770 » DialogName
0 » OpenDialog-ClientBereich
1 » Öffnen-Button
2 » Abbrechen-Button
[b]100 » Passwort-Label
101 » Passwort-Edit
102 » CompLevel-Label
103 » CompLevel-ComboBox[/b]
1038 » Hilfe-Button
1040 » Schreibgeschützt-CheckBox
1088 » Control-Butons (at top-right)
1089 » Typ-Label
1090 » Dateiname-Label
1091 » SuchenIn-Label
1120 » Datei-ListBox
1136 » Typ-Edit
1137 » SuchenIn-ComboBox
1152 » Dateiname-Edit
1184 » PlacesBar
Hatte sogar mal das übergebene Fenster-Handle auf 0 gesetzt (in der ButtonClick-Proczedur)
Delphi-Quellcode:
Param.hParent := 0;
Selbst in einem Program ohne Fenster ('ne DPR ohne Application und TForm's)

... brachte auch nichts.

Im OnSelectChange ist auch ein Code drin, welcher die Position vom PasswortEdit in der FormCaption anzeigt.
Also nach 'ner Größenänderung des Formulars einfach mal die Markierung der Dateien ändern.


Wie gesagt noch nicht ganz fertig, aber ich hoffe mal es sieht nicht all zu schlimm aus ._.


PS: hast du nicht zufällig ein paar nonVCL-Tuts über CheckBoxen und ComboBoxen?
vorallem meine ComboBox (CompLevel) ist überhaupt nicht so, wie sie sein soll :cry:


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:04 Uhr.
Seite 1 von 2  1 2      

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