Delphi-PRAXiS
Seite 2 von 3     12 3      

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/)
-   -   Delphi TCombobox -> Height verändert sich nach dem Create (https://www.delphipraxis.net/200508-tcombobox-height-veraendert-sich-nach-dem-create.html)

EWeiss 26. Apr 2019 16:26

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

Ist nur die Frage, welche Funktion ich aufrufen muss, damit ich sofort die korrekte Größe erhalte.
Einen Beitrag höher lesen ;)

gruss

bernau 26. Apr 2019 16:31

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

Zitat von EWeiss (Beitrag 1431080)
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

Ich verstehe schon was du meinst. Das ändert aber nichts am verhalten.

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

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  fCombobox.text := Inttostr(fCombobox.height);
end;
Ich habe im OnCreate den Font der Form zugewiesen. es bleibt aber im OnCreate bei 25. Erst wenn der Button gedrückt wird, dann erhalte ich 21. Zweischenzeitlich wird nichts geändert.

bernau 26. Apr 2019 16:35

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

Zitat von EWeiss (Beitrag 1431082)
Zitat:

Ist nur die Frage, welche Funktion ich aufrufen muss, damit ich sofort die korrekte Größe erhalte.
Einen Beitrag höher lesen ;)

gruss

Probier es doch mal aus. Neutral General kann es nachvollziehen.

Einfach eine Form erzeugen. Doppelclick auf OnCreate. Die Zeilen aus meinem Code einfügen.
Schalter drauf. Doppelcklick. Eine Zeile aus meinen Beispiel einfügen.

Programm starten. In der Combobox steht 25. Schalter drücken. In der Combobox steht 21.

Das ist definitiv ein unlogisches Verhalten.

bernau 26. Apr 2019 16:42

AW: TCombobox -> Height verändert sich nach dem Create
 
Habe noch mal weiter getestet. Egal welche Fontgröße ich zuweise, solange ich mich im OnCreate befinde, bleibt die Höhe der Combobox bei 25.

EWeiss 26. Apr 2019 16:43

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

Zitat von bernau (Beitrag 1431085)
Habe noch mal weiter getestet. Egal welche Fontgröße ich zuweise, solange ich mich im OnCreate befinde, bleibt die Höhe der Combobox bei 25.

Habe ich.. meine höhe ist 21.

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  ComboBox1 := TComboBox.Create(Self);
  ComboBox1.Parent := self;
  ComboBox1.Top := 10;
  ComboBox1.Left := 10;
  ComboBox1.Font := TFont.Create;
  ComboBox1.Font.Name := 'Tahoma';
  ComboBox1.Font.Size := 8;
  ComboBox1.Height := 21;
  ComboBox1.Width := 200;
  ComboBox1.Text := Inttostr(ComboBox1.height);
end;
siehe shot

PS:
Ohne Zuweisung der Höhe!
siehe shot ClientRect

gruss

bernau 26. Apr 2019 17:12

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

Zitat von EWeiss (Beitrag 1431086)
Zitat:

Zitat von bernau (Beitrag 1431085)
Habe noch mal weiter getestet. Egal welche Fontgröße ich zuweise, solange ich mich im OnCreate befinde, bleibt die Höhe der Combobox bei 25.

Habe ich.. meine höhe ist 21.

gruss

Ich weis nicht ob mein Problem so schwer zu verstehen ist.

Ich will nicht selber die Höhe im OnCreate setzen. Bringt sowiso nichts, weil die Höhe der Combobox nach dem Create die korrekte Größe "21" besitzt. Warum sollte ich die Höhe selber setzen sollen?

Ich will lediglich den korrekten Wert 21 auch im OnCreate auslesen können, damit ich die Comboboxen ordentlich anordnen kann.

Wir reden aneinander vorbei. Aber OK. Danke für deine Hilfe.

EWeiss 26. Apr 2019 17:16

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

Ich will nicht selber die Höhe im OnCreate setzen. Bringt sowiso nichts, weil die Höhe der Combobox nach dem Create die korrekte Größe "21" besitzt. Warum sollte ich die Höhe selber setzen sollen?
Siehe mein Edit! Habe ich die höhe gesetzt? Denke mal nicht.

Siehe Shot ClientRect. 2 Beiträge höher

Hier noch ein shot mit einem Font von 10 logischerweise ist dann die Combo 24 Pixel in der höhe.
Man oooh man..

ok bin raus.. weil ich bewiesen habe das es funktioniert!

gruss

bernau 26. Apr 2019 17:18

AW: TCombobox -> Height verändert sich nach dem Create
 
Halt. Ich dachte der Code im Anhang ist der gleiche, wie im Text, der als Delphicode angegeben ist.

Zitat:

Zitat von EWeiss (Beitrag 1431086)
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  ComboBox1 := TComboBox.Create(Self);
  ComboBox1.Parent := self;
  ComboBox1.Top := 10;
  ComboBox1.Left := 10;
  ComboBox1.Font := TFont.Create;
  ComboBox1.Font.Name := 'Tahoma';
  ComboBox1.Font.Size := 8;
  ComboBox1.Height := 21;
  ComboBox1.Width := 200;
  ComboBox1.Text := Inttostr(ComboBox1.height);
end;

Dort setzt du die Höhe. Deshalb mein vorheriger Post.

Habe den Code im Pic mir noch mal angeschaut. Der ist anders.

Die Sache mit

Delphi-Quellcode:
winapi.windows.GetClientRect(fCombobox.Handle, rc);
Funktioniert.

Prima. Danke dir für deine Mühe.


Edit: Unsere beiden letzten Posts haben sich überschnitten.

EWeiss 26. Apr 2019 17:21

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

Zitat von bernau (Beitrag 1431091)
Halt. Ich dachte der Code im Anhang ist der gleiche, wie im Text. Habe ihn mir noch mal angeschaut.

Die sache mit

Delphi-Quellcode:
winapi.windows.GetClientRect(fCombobox.Handle, rc);
Funktioniert.

Prima. Danke dir für deine Mühe.


Edit: Unsere beiden letzten Posts haben sich überschnitten.

Kein Problem ;)

gruss

Uwe Raabe 26. Apr 2019 17:24

AW: TCombobox -> Height verändert sich nach dem Create
 
Es genügt, wenn das Handle erzeugt wird:
Delphi-Quellcode:
  fCombobox:=TCombobox.create(Self);
  fCombobox.Parent := self;
  fCombobox.HandleNeeded;
  fCombobox.text := Inttostr(fCombobox.Height);


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:57 Uhr.
Seite 2 von 3     12 3      

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