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/)
-   -   Breite des BorderStyle (https://www.delphipraxis.net/166693-breite-des-borderstyle.html)

Popov 25. Feb 2012 08:47

Breite des BorderStyle
 
Liste der Anhänge anzeigen (Anzahl: 1)
Weiß zufällig einer wo ich die Breite des BorderStyle bei bsSingle erfahre? Bei GetSystemMetrics finde ich nichts oder meine OH ist alt, glaube ich aber nicht.

//Edit:

Sorry, kann ein Mod bitte den Titel ändern in "Breite des BorderStyle". Komme selbst nicht dran.

Perlsau 25. Feb 2012 08:56

AW: Breite
 
Zitat:

Zitat von Popov (Beitrag 1152784)
Weiß zufällig einer wo ich die Breite des BorderStyle bei bsSingle erfahre? Bei GetSystemMetrics finde ich nichts oder meine OH ist alt, glaube ich aber nicht.

Ein Borderstyle hat keine Breite, sondern besteht aus einer vordefinierten Konstante wie z.B. bsSingle oder bsSizeable. Im Objektinspektor direkt unterhalb des Borderstyle befindet sich BorderWidth (und nicht BorderstyleWidth); dort kannst du die Breite des Rahmens angeben.

Merke: Wenn du verstanden werden willst, solltest du dich auch korrekt ausdrücken und nicht nach der Anzahl der Birnen in einem Apfel fragen.

himitsu 25. Feb 2012 09:01

AW: Breite
 
Zitat:

Zitat von Popov (Beitrag 1152784)
Komme selbst nicht dran.

Klicke mal auf [Erweitert] :zwinker:

Aktuell ist immer der, von dem es auch kommt.
MSDN: MSDN-Library durchsuchenGetSystemMetrics und "Frame" klingt gut.

Die aktuellste Delphi-OH gibt es online bei Embarcadero oder über die Delphi-Referenz (Link siehe DP-Startseite).

Popov 25. Feb 2012 09:27

AW: Breite
 
Zitat:

Zitat von Perlsau (Beitrag 1152786)
Ein Borderstyle hat keine Breite, sondern besteht aus einer vordefinierten Konstante wie z.B. bsSingle oder bsSizeable. Im Objektinspektor direkt unterhalb des Borderstyle befindet sich BorderWidth (und nicht BorderstyleWidth); dort kannst du die Breite des Rahmens angeben.

Ich glaube du hast mich falsch verstanden; ich sehe aber auch, dass ich vergessen habe zu schreiben, dass es ListBox ist, obwohl ich ein Bild beigesteuert habe das zumindest selbsterklärend ist wenn man es sich anguckt. Auf jeden Fall hat ListBox kein BorderstyleWidth, genau wie Edit, Memo und viele viele anderen 3D Komponenten.

Zitat:

Merke: Wenn du verstanden werden willst, solltest du dich auch korrekt ausdrücken und nicht nach der Anzahl der Birnen in einem Apfel fragen.
Ich versuche es mir zu merken.

@himitsu

Ich habe mir mal Just4Fun ein Tool gebastelt der mir alle Api Systemwerte liefert. So kann ich ganz schnell grob viele Konstanten eingrenzen. Keine Konstante liefert 2 Pixel. Es ist auf jeden Fall keine mir bekannte Frame Konstante. SM_CXBORDER und SM_CYBORDER liefern zwar 1, aber keine weitere Konstante liefert eine weitere 1.

Somit zurück zu Frage: Weiß zufällig einer wo ich die Breite des BorderStyle bei bsSingle erfahre?

//Edit:

Zitat:

Klicke mal auf [Erweitert]
Habe ich für sonst was gehalten. Weiß ich jetzt Bescheid. Danke.

EWeiss 25. Feb 2012 09:47

AW: Breite
 
Zitat:

Somit zurück zu Frage: Weiß zufällig einer wo ich die Breite des BorderStyle bei bsSingle erfahre?
Die Frage wäre doch warum willst du das wissen?

Du hast doch deine Konstanten.
Der richtige weg wäre doch dann diese abzufragen und dann das aussehen deiner Listbox dementsprechend anzupassen.
Oder was auch immer du vorhast.

PS:
Und wenn du unbedingt die Breite herausfinden willst verwende dazu (Width-GetClientRect)div 2

gruss

Popov 25. Feb 2012 10:15

AW: Breite
 
Ok, das wird mir jetzt etwas zu kompliziert. Ich habe jetzt die Komponentenbreite minus Clienbreite und beides durch zwei genommen. Ist nicht fein, eher getrickst, aber ich hab meine Rahmenbreite.

Wozu ich das brauche? In dem speziellen Fall soll sich die Breite der Komponente dem Inhalt anpassen, also Clienbreite plus Rahmenbreite ergibt Komponentenbreite. Nur wollte ich es nicht über die Komponente, sondern einen Konstantenwert berechnen.

Und bitte jetzt keine Kommentare, dass man den Inhalt an die Komponente anpasst und nicht die Komponente an den Inhalt. Das hat schon seine Richtigkeit.

Nur eine kleine Anmerkung allgemein: wenn man es richtig machen will, kommen immer Fragen wozu man es braucht. Wenn man es einfach macht, kommen Bemerkung, dass man es doch bitte richtig machen soll :stupid:

//Edit EWeiss

Die Formel habe ich seit Anfang drin, ich wollte es nur besser machen.

EWeiss 25. Feb 2012 10:19

AW: Breite
 
Zitat:

Ok, das wird mir jetzt etwas zu kompliziert. Ich habe jetzt die Komponentenbreite minus Clienbreite und beides durch zwei genommen. Ist nicht fein, eher getrickst, aber ich hab meine Rahmenbreite.
Sagte ich doch ;)
Zitat:

(Width-GetClientRect)div 2
Zitat:

wenn man es richtig machen will, kommen immer Fragen wozu man es braucht. Wenn man es einfach macht, kommen Bemerkung, dass man es doch bitte richtig machen soll
Freie Meinungsäußerung ?
Wennn man Hilfe benötigt muss man mit so etwas rechnen, aber beruhige dich passiert mir auch schon mal.
Es gibt schlimmeres letztendlich zählt das man geholfen bekommt.

PS:
Zitat:

Die Formel habe ich seit Anfang drin, ich wollte es nur besser machen.
Und diese ist das einzig richtige.

Man kann auf der Basis der konstanten die Breite nicht Festlegen.
Könnte theoretisch auf verschiedenen BS unterschiedlich sein.
Zitat:

Die Innenmaße einer ListBox ermitteln Sie mit Hilfe der API-Funktion GetClientRect.
Sie unterscheiden sich in jedem Fall von der Außenbreite und sind dazu noch je nach Einstellung der Eigenschaft Appearance der ListBox (0 - 2D oder 1 - 3D) unterschiedlich.

gruss


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