AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi TCombobox -> Height verändert sich nach dem Create

TCombobox -> Height verändert sich nach dem Create

Ein Thema von bernau · begonnen am 26. Apr 2019 · letzter Beitrag vom 26. Apr 2019
Antwort Antwort
Seite 1 von 3  1 23   
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.000 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#1

TCombobox -> Height verändert sich nach dem Create

  Alt 26. Apr 2019, 15:59
Hier ein kleines Testprogramm zu einem Verhalten, welches ich nicht verstehe:

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  fCombobox:=TCombobox.create(Self);
  fCombobox.Parent := self;
  fCombobox.text := Inttostr(fCombobox.height);
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  fCombobox.text := Inttostr(fCombobox.height);
end;
Wenn das Programm gestartet wird, dann steht in der Combobox der Wert 25.

Wenn ich danach den Button drücke, dann steht in der Combobox der Wert 21.

Die Höhe der Combobox hat sich geändert. Warum? Kann das einer nachvollziehen, oder liegt es an meiner Delphi-Version. (Embarcadero® Delphi 10.2 Version 25.0.29039.2004 )
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.032 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

AW: TCombobox -> Height verändert sich nach dem Create

  Alt 26. Apr 2019, 16:01
Die FontSize der ComboBox ist eine andere als die des Forms?
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.000 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#3

AW: TCombobox -> Height verändert sich nach dem Create

  Alt 26. Apr 2019, 16:08
Die FontSize der ComboBox ist eine andere als die des Forms?
Die Combobox ist ja dynamisch erzeugt. (Erst zwei Zeilen im Create).

Fontsize habe ich der Combobox gar nicht zugewiesen.

Und nach dem Create wird an der Combobox ja nichts mehr geändert. Zumindest nicht von mir.
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.000 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#4

AW: TCombobox -> Height verändert sich nach dem Create

  Alt 26. Apr 2019, 16:10
An font.size ändert sich übrigens nichts. Habe das Testprogramm mal kurz angepasst

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  fCombobox:=TCombobox.create(Self);
  fCombobox.Parent := self;
  fCombobox.text := Inttostr(fCombobox.font.size);
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  fCombobox.text := Inttostr(fCombobox.font.size);
end;
In beiden Fällen wird 8 angezeigt.
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
Benutzerbild von EWeiss
EWeiss

Registriert seit: 16. Okt 2010
6.577 Beiträge
 
Delphi 2010 Architect
 
#5

AW: TCombobox -> Height verändert sich nach dem Create

  Alt 26. Apr 2019, 16:14
Zitat:
Die Combobox ist ja dynamisch erzeugt. (Erst zwei Zeilen im Create).
Das ist ein normales verhalten..
Weil die Combobox eine fixe höhe hat.

Wenn du hier also als bsp. 30 nimmst wird sich diese Automatisch auf die höhe von 21 setzen.
Das ist nun mal so und nicht falsch.

Also nehme die 21 und gut ist!
Die höhe ist also abhängig vom gesetzten Font und die kannst du nicht ändern wenn der Fontsize 8 ist

gruss

Geändert von EWeiss (26. Apr 2019 um 16:18 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.032 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

AW: TCombobox -> Height verändert sich nach dem Create

  Alt 26. Apr 2019, 16:14
Ja habs auch grad getestet, kann das Verhalten reproduzieren.
Die nächste Theorie:

25 ist die default Height einer TComboBox.
Später wird die Height aufgrund der FontSize berechnet.

In deinem FormCreate nachdem du die ComboBox erstellt hast (selbst nach dem Zuweisen des Parents) hat die ComboBox wahrscheinlich noch keine Windows Message erhalten und ist quasi noch nicht 100% initialisiert bzw. wurde noch nie gezeichnet.
Nach dem Create kommt die Änderung des Parents durch und die ComboBox passt sich an ihr "Umfeld" an.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von EWeiss
EWeiss

Registriert seit: 16. Okt 2010
6.577 Beiträge
 
Delphi 2010 Architect
 
#7

AW: TCombobox -> Height verändert sich nach dem Create

  Alt 26. Apr 2019, 16:18
Zitat:
25 ist die default Height einer TComboBox.
Nein 21 beim Fontsize 8

gruss
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.000 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#8

AW: TCombobox -> Height verändert sich nach dem Create

  Alt 26. Apr 2019, 16:22
Zitat:
Die Combobox ist ja dynamisch erzeugt. (Erst zwei Zeilen im Create).
Wenn du hier also als bsp. 30 nimmst wird sich diese Automatisch auf die höhe von 21 setzen.
Das ist nun mal so und nicht falsch.

Also nehme die 21 und gut ist!

gruss
Ähm. Wie schon gesagt. Ich setzte die Höhe gar nicht. Ich möchte ja gerne die 21 haben. Diese wird mir im OnCreate aber nicht gegeben, sondern 25.

Das angegebene Beispiel ist ja nur minimal um den Fehler zu Beschreiben. In meinem tatsächlichen Fall möchte ich mehrere Comboboxen dynamisch erzeugen und untereinander anordnen. Wenn die Anordnung im OnCreate geschieht, habe ich eine andere Anordnung, als wenn ich die Anordnung später durchführe.
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
Benutzerbild von EWeiss
EWeiss

Registriert seit: 16. Okt 2010
6.577 Beiträge
 
Delphi 2010 Architect
 
#9

AW: TCombobox -> Height verändert sich nach dem Create

  Alt 26. Apr 2019, 16:24
Zitat:
Ähm. Wie schon gesagt. Ich setzte die Höhe gar nicht. Ich möchte ja gerne die 21 haben. Diese wird mir im OnCreate aber nicht gegeben, sondern 25.
Was verstehst du nicht?

FontName = Tahoma
Fontsize = 8

weise der Combo den Font zu und deine Höhe ist 21.
Die höhe kannst du NUR durch das setzen des Fonts beeinflussen.

gruss

Geändert von EWeiss (26. Apr 2019 um 16:27 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.000 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#10

AW: TCombobox -> Height verändert sich nach dem Create

  Alt 26. Apr 2019, 16:25
Ja habs auch grad getestet, kann das Verhalten reproduzieren.
Das beruhigt mich schon mal.

Die nächste Theorie:

25 ist die default Height einer TComboBox.
Später wird die Height aufgrund der FontSize berechnet.

In deinem FormCreate nachdem du die ComboBox erstellt hast (selbst nach dem Zuweisen des Parents) hat die ComboBox wahrscheinlich noch keine Windows Message erhalten und ist quasi noch nicht 100% initialisiert bzw. wurde noch nie gezeichnet.
Nach dem Create kommt die Änderung des Parents durch und die ComboBox passt sich an ihr "Umfeld" an.
Ist nur die Frage, welche Funktion ich aufrufen muss, damit ich sofort die korrekte Größe erhalte.
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 17:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf