Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Wie Höhe festschreiben? (https://www.delphipraxis.net/161155-wie-hoehe-festschreiben.html)

Mattze 19. Jun 2011 16:52

Wie Höhe festschreiben?
 
Hi,

ich versuche mich gerade mal wieder an einer Komponente.
Nun bin ich auf eine Frage gestoßen, die ich nicht beantworten kann:
Die Combobox von Delphi hat eine vorab festgelegte Höhe. (Ich glaube 21.)
Wenn ich sie höher auf mein Formular ziehe, wird sie sofort wieder auf dies Standardhöhe verringert.
Wie macht man denn sowas?
Ich kriege bisher nur hin, dass die Komponente zur Laufzeit wieder zusammenschrumpelt, was natürlich überhaupt kein Problem ist.
Bei manchen Dinge ist das aber zur Designtime durchaus gut, z. Bsp. bei TEdit usw.

Gruß
Mattze

fui-tak 19. Jun 2011 17:00

AW: Wie Höhe festschreiben?
 
Man könnte die Schriftgröße der Combobox ändern... aber sonst hab ich jetzt keine Idee

Mattze 19. Jun 2011 17:34

AW: Wie Höhe festschreiben?
 
hi,

da hast Du meine Frage nicht richtig verstanden oder ich habe sie missverständlich formuliert.
Es geht NICHT darum, wie man eine Combobox höher kriegt.
Es geht darum, wie man bei einer selbstgeschriebenen Komponente die Höhe "unveränderbar" schon zur Designtime festlegt.

Bsp. (!!!): Combobox. Wenn man die auf ein Formular zieht und sie da höher als 21 macht, schrumpelt sie sofort wieder auf die 21.
DAS will ich in einer EIGENEN Komponente nachmachen und weiß nicht wie. In den Quellen habe ich es nicht gefunden. (Ich habe D7 pro.)

Gruß
Mattze

alfold 19. Jun 2011 19:20

AW: Wie Höhe festschreiben?
 
In dem Du Deiner eigene Komponente maxheight maxwitdh usw mit dazu gibst als Eigenschaft und dies Protected machst.
Oder das Canvas fixierst.

Gruss alfold

jaenicke 19. Jun 2011 19:58

AW: Wie Höhe festschreiben?
 
Du kannst auch einfach SetBounds überschreiben. Das wird nämlich beim Setzen der Höhe usw. aufgerufen.
Delphi-Quellcode:
    procedure SetBounds(ALeft, ATop, AWidth, AHeight: Integer); override;
    // Dummyzeile, da der Highlighter im Forum ne Macke hat^^
Dort kannst du den Wert verändern bevor du ihn an die geerbte Methode weitergibst.

Mattze 20. Jun 2011 10:17

AW: Wie Höhe festschreiben?
 
Hi,

also ich packe es nicht.
Bei SetBounds funktioniert es nicht. Vielleicht muss ich erst eine "Zwischenkomponente" ableiten, bei der ich das setbounds überschreibe und kann dann erst die eigentliche Komponente basteln? (Vorfahr ist bei mir TCustomControl.)

Min-und MaxHeight laufen offenbar auf das selbe hinaus. Irgendwie muss man sie ja in die Komponente einbauen und das wird wohl nur durch Methodenüberschreiben gehen. Bleibt die Frage, welche das sein müssten.

Wie gesagt, zur Laufzeit ist das natürlich alles kein Problem mit der Höhe. Und richtig nötig zur Designtime wäre das eigentlich auch nicht.
Aber schön wäre es, würde einiges einfacher machen und wie üblich, fragt man sich oft, wie die das gemacht haben.
(Es wäre ja auch Ziel der Oberfläche, dass man das so auf dem Formular anordnen kann, wie es zur Laufzeit aussieht. Kann man ja, aber da muss man eben doch genau gucken. Das kann man sich bei der automatischen Höhe sparen.)

Gruß
Mattze

DeddyH 20. Jun 2011 10:42

AW: Wie Höhe festschreiben?
 
Wie hast Du es denn versucht? SetBounds sollte nämlich schon funktionieren.

stahli 20. Jun 2011 11:31

AW: Wie Höhe festschreiben?
 
Welche Delphi-Version hast Du denn?
Evtl. musst Du Dein Package noch neu installieren. Es könnte evtl. sein, dass zur Laufzeit deine neue Kompo erzeugt wird aber in der IDE noch Deine alte (installierte).
Ändere mal testweise die Farbe oder Standardtext um zu sehen, welche Kompoversion in der IDE installiert wird.

Mattze 20. Jun 2011 17:06

AW: Wie Höhe festschreiben?
 
Hi,

jetzt geht es mit SetBounds. Da war bei mir nur 'ne kleine Schwarzblende.
Ich habe das NACH inherited festgelegt, was natürlich nicht gehen kann.

Also vielen Dank!

Gruß
Mattze


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:21 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